Metadata-Version: 2.4
Name: aria-code
Version: 0.59.0
Summary: AI coding and research workspace with optional finance and connected-domain tools
License: Apache-2.0
Project-URL: Homepage, https://github.com/artheras/aria-code
Project-URL: Repository, https://github.com/artheras/aria-code
Project-URL: Issues, https://github.com/artheras/aria-code/issues
Keywords: ai,llm,coding-agent,research,finance,terminal,cli
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business :: Financial
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: <3.14,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: google-genai>=1.0.0
Requires-Dist: aiohttp>=3.9.0
Requires-Dist: rich>=13.7.0
Requires-Dist: prompt_toolkit>=3.0.43
Requires-Dist: PyYAML>=6.0.2
Requires-Dist: requests>=2.32.0
Requires-Dist: httpx[http2]>=0.27.0
Requires-Dist: PyJWT>=2.8.0
Requires-Dist: aiofiles>=23.2.0
Requires-Dist: websockets>=12.0
Requires-Dist: apscheduler>=3.10.0
Requires-Dist: ddgs>=9.0
Requires-Dist: numpy>=1.26.0
Requires-Dist: pandas>=2.2.0
Requires-Dist: scipy>=1.13.0
Requires-Dist: pandas_ta>=0.4.67b0; python_version >= "3.12"
Requires-Dist: yfinance>=0.2.55
Requires-Dist: pyobjc-framework-WebKit>=10.0; sys_platform == "darwin"
Requires-Dist: markdown>=3.6
Provides-Extra: cn
Requires-Dist: akshare>=1.14.68; extra == "cn"
Provides-Extra: crypto
Requires-Dist: ccxt>=4.4.0; extra == "crypto"
Provides-Extra: charts
Requires-Dist: mplfinance>=0.12.10b0; extra == "charts"
Provides-Extra: google
Requires-Dist: google-genai>=1.0.0; extra == "google"
Provides-Extra: data
Requires-Dist: duckdb>=0.10.3; extra == "data"
Provides-Extra: files
Requires-Dist: pdfplumber>=0.11.0; extra == "files"
Requires-Dist: pypdf>=4.3.0; extra == "files"
Requires-Dist: python-docx>=1.1.2; extra == "files"
Requires-Dist: python-pptx>=1.0.2; extra == "files"
Requires-Dist: openpyxl>=3.1.5; extra == "files"
Requires-Dist: beautifulsoup4>=4.12.3; extra == "files"
Requires-Dist: Pillow>=10.4.0; extra == "files"
Provides-Extra: video
Requires-Dist: opencv-python>=4.8.0; extra == "video"
Provides-Extra: video-analysis
Requires-Dist: faster-whisper>=1.0.0; extra == "video-analysis"
Provides-Extra: adk
Requires-Dist: google-adk>=2.6.3; extra == "adk"
Provides-Extra: ibkr
Requires-Dist: ib_insync>=0.9.86; extra == "ibkr"
Provides-Extra: futu
Requires-Dist: futu-api>=9.1.5108; extra == "futu"
Provides-Extra: tiger
Requires-Dist: tigeropen>=3.2.0; extra == "tiger"
Provides-Extra: longbridge
Requires-Dist: longbridge>=1.0.22; extra == "longbridge"
Provides-Extra: alpaca
Requires-Dist: alpaca-py>=0.35.0; extra == "alpaca"
Provides-Extra: webull
Requires-Dist: webull>=0.3.14; extra == "webull"
Provides-Extra: brokers
Requires-Dist: ib_insync>=0.9.86; extra == "brokers"
Requires-Dist: futu-api>=9.1.5108; extra == "brokers"
Requires-Dist: tigeropen>=3.2.0; extra == "brokers"
Requires-Dist: longbridge>=1.0.22; extra == "brokers"
Requires-Dist: alpaca-py>=0.35.0; extra == "brokers"
Provides-Extra: backtest
Requires-Dist: vectorbt>=0.26.2; extra == "backtest"
Provides-Extra: image-gen
Requires-Dist: torch>=2.2.0; extra == "image-gen"
Requires-Dist: diffusers>=0.30.0; extra == "image-gen"
Requires-Dist: transformers>=4.40.0; extra == "image-gen"
Requires-Dist: accelerate>=0.30.0; extra == "image-gen"
Provides-Extra: web
Requires-Dist: ddgs>=9.0; extra == "web"
Provides-Extra: browser
Requires-Dist: playwright>=1.44.0; extra == "browser"
Provides-Extra: desktop
Requires-Dist: mss>=9.0.1; extra == "desktop"
Requires-Dist: pyautogui>=0.9.54; extra == "desktop"
Provides-Extra: sports
Requires-Dist: understat>=0.1.0; extra == "sports"
Provides-Extra: lsp
Requires-Dist: python-lsp-server[all]>=1.10.0; extra == "lsp"
Provides-Extra: dev
Requires-Dist: pytest>=8.2.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.7; extra == "dev"
Requires-Dist: pytest-timeout>=2.3.0; extra == "dev"
Requires-Dist: ruff>=0.4.0; extra == "dev"
Requires-Dist: mypy>=1.10.0; extra == "dev"
Provides-Extra: full
Requires-Dist: google-genai>=1.0.0; extra == "full"
Requires-Dist: akshare>=1.14.68; extra == "full"
Requires-Dist: ccxt>=4.4.0; extra == "full"
Requires-Dist: mplfinance>=0.12.10b0; extra == "full"
Requires-Dist: duckdb>=0.10.3; extra == "full"
Requires-Dist: pdfplumber>=0.11.0; extra == "full"
Requires-Dist: pypdf>=4.3.0; extra == "full"
Requires-Dist: python-docx>=1.1.2; extra == "full"
Requires-Dist: python-pptx>=1.0.2; extra == "full"
Requires-Dist: openpyxl>=3.1.5; extra == "full"
Requires-Dist: beautifulsoup4>=4.12.3; extra == "full"
Requires-Dist: Pillow>=10.4.0; extra == "full"
Requires-Dist: ddgs>=9.0; extra == "full"
Provides-Extra: all
Requires-Dist: google-genai>=1.0.0; extra == "all"
Requires-Dist: akshare>=1.14.68; extra == "all"
Requires-Dist: ccxt>=4.4.0; extra == "all"
Requires-Dist: mplfinance>=0.12.10b0; extra == "all"
Requires-Dist: duckdb>=0.10.3; extra == "all"
Requires-Dist: pdfplumber>=0.11.0; extra == "all"
Requires-Dist: pypdf>=4.3.0; extra == "all"
Requires-Dist: python-docx>=1.1.2; extra == "all"
Requires-Dist: python-pptx>=1.0.2; extra == "all"
Requires-Dist: openpyxl>=3.1.5; extra == "all"
Requires-Dist: beautifulsoup4>=4.12.3; extra == "all"
Requires-Dist: Pillow>=10.4.0; extra == "all"
Requires-Dist: ddgs>=9.0; extra == "all"
Requires-Dist: playwright>=1.44.0; extra == "all"
Requires-Dist: mss>=9.0.1; extra == "all"
Requires-Dist: pyautogui>=0.9.54; extra == "all"
Requires-Dist: opencv-python>=4.8.0; extra == "all"
Requires-Dist: understat>=0.1.0; extra == "all"
Requires-Dist: ib_insync>=0.9.86; extra == "all"
Requires-Dist: futu-api>=9.1.5108; extra == "all"
Requires-Dist: tigeropen>=3.2.0; extra == "all"
Requires-Dist: longbridge>=1.0.22; extra == "all"
Requires-Dist: alpaca-py>=0.35.0; extra == "all"
Requires-Dist: vectorbt>=0.26.2; extra == "all"
Requires-Dist: pytest>=8.2.0; extra == "all"
Requires-Dist: pytest-asyncio>=0.23.7; extra == "all"
Dynamic: license-file

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="docs/assets/aria-code-icon.png">
    <img src="docs/assets/aria-code-icon-light.png" alt="Aria Code icon" width="88">
  </picture>
</p>

<h1 align="center">Aria Code</h1>

<p align="center">A terminal-first AI workspace for code and research.<br>
Work in your project, use local or cloud models, and connect domain tools when you need them.</p>

<p align="center"><a href="README_CN.md">简体中文</a> · English</p>

<p align="center">
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
  <a href="https://pypi.org/project/aria-code/"><img src="https://img.shields.io/pypi/v/aria-code?style=flat-square&logo=pypi&label=PyPI" alt="PyPI version"></a>
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
</p>

<p align="center"><img src="docs/assets/demo-coding-workflow.gif" alt="Real Aria Code terminal recording: failing tests, source inspection, code edit, and passing tests" width="860"></p>
<p align="center"><sub>Recorded from a real Aria Code terminal session on a temporary test fixture; idle time is shortened. This shows direct CLI commands, not an autonomous model edit. <a href="docs/assets/demo-coding-workflow.png">Still screenshot</a> · <a href="scripts/render_terminal_capture.py">Capture renderer</a>.</sub></p>

## What Aria Code does

Aria Code can inspect project files, propose and apply edits, run commands and tests, and explain the resulting changes. It also supports research and optional domain tools, including financial analysis and read-only warehouse operations. Those tools require their own data sources or integrations; a fresh install does not provide live business data.

The same core runtime is used by the CLI and other Aria surfaces. Model choice and tool permissions are separate: you can use a local Ollama model, configure a supported cloud provider, or sign in to the Arthera service. A cloud model or live data source needs network access.

## Quick start

Install the standalone CLI on macOS or Linux without Python, Node.js, or npm:

```bash
curl -fsSL https://raw.githubusercontent.com/artheras/aria-code/main/scripts/install.sh | sh
~/.local/bin/aria-code --help
```

On Windows x64, run this in PowerShell:

```powershell
irm https://raw.githubusercontent.com/artheras/aria-code/main/scripts/install.ps1 | iex
aria-code --help
```

The installer downloads the binary for your OS from the latest [GitHub release](https://github.com/artheras/aria-code/releases/latest), checks its SHA-256 digest, and installs it in your user account. Open a new terminal to use `aria-code` by name on macOS or Linux. Set `ARIA_CODE_VERSION=v0.55.0` to pin a release.

Alternative package-manager installs: `npm install -g @artheras/aria-code` (requires npm) or `python3 -m pip install --upgrade aria-code` (requires Python 3.10+). For development from source, see [CONTRIBUTING.md](CONTRIBUTING.md).

To use a local model, install [Ollama](https://ollama.com/download), pull a coding model, and start Aria in local-only mode:

```bash
ollama pull qwen2.5-coder:7b
aria-code --local
```

Or run a single task in an existing project:

```bash
aria-code -p "Inspect this project, fix the failing tests, run them, and summarize the diff."
```

Aria may request approval before editing files or running commands, according to the configured permission mode. Review changes and test results before committing them.

## Models and accounts

| Route | What it needs |
| --- | --- |
| Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
| Direct cloud provider | That provider's API credentials and network access. |
| Direct Google Cloud Vertex AI | `aria-code[google]`, Google Cloud Application Default Credentials, `GOOGLE_CLOUD_PROJECT`, and `GOOGLE_CLOUD_LOCATION`. |
| Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |

Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.

## Explore the project

| Topic | Start here |
| --- | --- |
| Architecture and runtime | [Architecture](docs/architecture.md) |
| Tool permissions and data boundaries | [Safety notes](docs/aria-code-safety.md) |
| Warehouse agents and their read-only data contract | [Warehouse ERP agents](docs/warehouse-erp-agents.md) |
| Strategy and backtesting workflows | [Strategy workspace](docs/strategy_workspace.md) |
| More examples | [Examples](examples/README.md) |
| Releases and changes | [Changelog](CHANGELOG.md) |

For the current command-line flags, run `aria-code --help`. For help inside the interactive CLI, run `/help`. These are preferable to a copied command inventory that can drift from the product.

## Contributing and license

Contributions are welcome; see [CONTRIBUTING.md](CONTRIBUTING.md). Aria Code is open source under the [Apache License, Version 2.0](LICENSE).

Releases 4.2.0 through 4.4.5 were published under the Business Source License 1.1 and remain available under those terms; releases up to and including 4.1.2 were MIT. A license grant cannot be withdrawn from someone who already has it, so each version keeps the license it shipped with — see [NOTICE](NOTICE).
