Skip to main content

๐Ÿง  Aria

Your local AI assistant with a unified tool-driven architecture

Python 3.12+ CI PyPI Docker License Code style: ruff

Run a local AI assistant with a web UI, CLI, and desktop GUI

Aria Screenshot

โœจ Features

Feature Description
๐ŸŽฏ Unified Tool Architecture Centralized registry of named tools + an ax dispatcher routing to 13 domain families (46 commands)
๐Ÿ–ฅ๏ธ Multiple Interfaces Web UI, CLI, and native PySide6 desktop GUI
๐Ÿค– Local LLM Support Run models locally with vLLM (GPU-accelerated inference with GPTQ/AWQ quantization)
๐ŸŒ Browser Automation Lightpanda headless browser with CDP/Playwright support
๐Ÿ”’ Privacy First Your data stays on your machine
๐ŸŒ Web Research Search, weather, finance, and more
๐Ÿ’ป Code Execution Safe Python sandbox and shell commands
๐Ÿ“Š Knowledge & Planning Persistent knowledge store, structured reasoning, task planning
๐Ÿ‘ท Worker Agents Background workers for heavy tasks (research, code generation, analysis)
๐Ÿ“„ Document Conversion Convert office/HTML/PDF uploads to markdown on demand via ax documents convert (MarkItDown + optional local Granite-Docling for scanned PDFs)
๐Ÿ”ง CLI Tool Commands Domain-specific CLI commands for search, finance, IMDb, and more
๐Ÿ”ฌ Model Fine-Tuning LoRA/QLoRA fine-tuning with CLI-driven workflows

๐Ÿš€ Quick Start

Option A โ€” Run from source

git clone git@github.com:malvavisc0/aria-ai.git
cd aria-ai
uv sync   # pins CPU-only torch automatically (embeddings run on CPU; vLLM has its own isolated CUDA venv)
aria init            # detect hardware, install binaries, download models (run once)
aria server start    # start the web UI in the background
# โ†’ Open http://localhost:9876

aria init walks you through setup: it detects your GPU, picks a chat mode (local vLLM when an NVIDIA GPU is present, or a remote OpenAI-compatible endpoint), installs vLLM/Lightpanda/docling/voice as appropriate, and downloads the required models. Re-running it is safe โ€” every step is idempotent and your .env customizations are preserved.

Option B โ€” Install from PyPI

pip install aria-ai
aria init
aria server start
# โ†’ Open http://localhost:9876

Option C โ€” Docker (CUDA)

docker run -p 9876:9876 -v ./data:/app/data ghcr.io/malvavisc0/aria-ai-cuda:latest
# โ†’ Open http://localhost:9876

The container entrypoint runs aria init --non-interactive on every boot (idempotent โ€” a populated /app/data volume makes it a no-op) before aria server run, so a fresh volume is bootstrapped automatically. Pass ARIA_VLLM_REMOTE=true plus CHAT_OPENAI_API/ARIA_VLLM_API_KEY/CHAT_MODEL via --env-file .env for remote mode.

Option D โ€” Desktop GUI

pip install aria-ai[gui]
aria-gui

๐Ÿค– Agent System

Aria uses a tool-first architecture centered around one primary agent with a centralized tool registry. Agents register their core and file tools directly and route every domain task through a single ax dispatcher. Heavy tasks are delegated to background worker agents.

How It Works

User Request โ†’ Aria โ†’ Registry-selected tools โ†’ Response
                โ†“ (heavy tasks)
            Worker Agent โ†’ Background execution โ†’ Result file

Aria evaluates each request, keeps core capabilities available by default, and pulls in domain-specific tools only when the task requires them. Long-running, multi-step, research-heavy, or artifact-producing work can be delegated to an approved background worker with a tracked execution plan.


๐Ÿ› ๏ธ Tools

Aria's agents register a small set of named tools and route everything else through a single ax dispatcher. Tool loading is managed by a centralized registry (src/aria/tools/registry.py).

Registered tools โ€” called directly by the agent:

Group Tools
๐Ÿง  Core reasoning (agent) ยท scratchpad + plan (worker) ยท shell
๐Ÿ“ Files read_file, write_file, edit_file, list_files, search_files (+ file_info, copy_file in workers)
๐Ÿ”€ ax The dispatcher above โ€” routes to the domain families below

ax domain families โ€” 13 families, 46 commands (call ax help in-app to list them live):

Family Commands
web search, fetch, visit, click, close, weather, youtube
memory store, recall, search, list, update, delete
knowledge status, reindex
finance stock, company, news
imdb search, movie, person, filmography, episodes, reviews, trivia
http request
dev run
processes start, stop, status, logs, list, restart, signal
documents convert, status
check extras
worker spawn, list, status, logs, cancel, clean
voice transcribe
mcp list, call

Domain tools are also available as CLI commands via ax (e.g., ax web search, ax memory store, ax dev run).

For the full inventory with parameter reference, see docs/tools-inventory.md.


๐Ÿ“ฆ Installation

Prerequisites

  • Python 3.12 or higher
  • uv package manager (recommended)
  • Git
  • 16 GB+ system RAM
  • GPU with 8 GB+ VRAM (8 GB minimum; 12 GB+ recommended) โ€” only for local LLM inference. With no GPU, point at a remote endpoint via ARIA_VLLM_REMOTE=true, or use the no-GPU aria-ai-lite / aria-ai-arm64 Docker images.

See docs/memory-requirements.md for detailed VRAM/RAM breakdown per model.

Install

# Clone the repository
git clone git@github.com:malvavisc0/aria-ai.git
cd aria-ai

# Install dependencies
uv sync   # CPU-only torch pinned automatically via [tool.uv] index

# Or with GUI support
uv sync --extra gui

First Run

Run aria init once to bootstrap ARIA_HOME, detect your hardware, pick a chat mode, and install/download everything needed:

aria init            # interactive: detect, ask mode, install, download
aria init --mode remote --remote-url https://api.openai.com/v1 --api-key sk-... --model gpt-4o
aria init --dry-run  # print the plan, change nothing
aria init --non-interactive  # derive everything from env vars (Docker)

Then start the server:

aria server start    # Start in background (preflight verifies, then serves)
ax check preflight   # Verify installation

๐Ÿ’ป CLI Commands

Aria ships with two CLI entry points:

CLI Purpose Commands
aria Management CLI Server, users, models, vLLM, config, system, Lightpanda
ax Agent Experience CLI Web, knowledge, dev, worker, processes, check

aria โ€” Management CLI

Human-facing commands for infrastructure and system management.

# Setup (run once before starting the server)
aria init               # Bootstrap, detect hardware, install binaries, download models
aria init --mode remote # Configure a remote OpenAI-compatible endpoint

# Server management
aria server run       # Run in foreground (preflight verifies, then serves)
aria server start     # Start in background (no auto-install โ€” run `aria init` first)
aria server stop      # Stop the server
aria server status    # Check status

# Inference engine
aria vllm install         # Build isolated vLLM venv + install pinned wheel
aria vllm install --version 0.24.0  # Install a specific pinned release
aria vllm update          # Recreate the isolated venv at the latest PyPI release
aria vllm status          # Check installation status, version, and venv path
aria vllm info            # Show vLLM configuration details
aria vllm start           # Start the vLLM server
aria vllm stop            # Stop the vLLM server
aria vllm restart         # Restart only the vLLM server (no web UI side effects)
aria vllm uninstall       # Remove the isolated vLLM venv
aria vllm uninstall --legacy  # Remove a pre-detach vLLM from Aria's own .venv

# Browser
aria lightpanda download  # Download Lightpanda headless browser
aria lightpanda status    # Check Lightpanda installation

# Model management
aria models download      # Download a model from Hugging Face
aria models list          # List downloaded models
aria models memory        # Show model memory requirements

# User management
aria users list           # List users
aria users add            # Add new user
aria users reset-password # Reset user password
aria users update         # Update user details
aria users delete         # Delete a user

# System info
aria system info          # Full system overview
aria system gpu           # GPU information
aria system vram          # VRAM details
aria system context       # Calculate max context size

# Configuration
aria config show          # Show current config
aria config paths         # Show configured paths
aria config database      # Show database info
aria config api           # Show API endpoints

ax โ€” Agent Experience CLI

Agent-facing commands for research, knowledge, code execution, and workflow management.

# Web & research
ax web search "query"         # Web search
ax web fetch "url"            # Fetch URL content
ax web weather "city"         # Weather forecast

# Memory (facts)
ax memory store "key" "v"     # Store a fact
ax memory recall "key"        # Retrieve a fact

# Knowledge hub
ax knowledge status           # Index status

# Development
ax dev run "code"             # Execute Python code

# Workers
ax worker spawn --prompt "..." --reason "Delegate sustained work" --expected "..." --step "..." --step "Verify completion" # Launch background worker
ax worker list                # List workers

# Processes & checks
ax processes list             # List background processes
ax check preflight            # Verify installation

๐Ÿ–ฅ๏ธ GUI Application

aria-gui    # Launch desktop application (requires: uv sync --extra gui)

The native PySide6 desktop GUI provides:

Tab Features
Overview System status, database info, API endpoints, debug log viewer
Setup Install vLLM, download models from Hugging Face, and manage Lightpanda browser โ€” with real-time output and cancel support
Users Create, edit, delete users with password strength validation
Settings Configure model paths, API URLs, and service parameters
Logs View application logs with search, level filtering, and auto-refresh

Additional features:

  • System tray โ€” minimizes to tray on close; force-quit via menu or Ctrl+Q
  • First-run wizard โ€” guided setup on first launch
  • Responsive layout โ€” adapts to window size
  • Preflight checks โ€” validates configuration on tab switch

๐ŸŒ Web UI

After starting the server, access the web interface at http://localhost:9876

The web UI is powered by Chainlit and provides a chat interface to interact with Aria.


๐Ÿณ Docker

Quick start

# NVIDIA / CUDA
docker run -p 9876:9876 -v ./data:/app/data ghcr.io/malvavisc0/aria-ai-cuda:latest

# AMD / ROCm
docker run -p 9876:9876 -v ./data:/app/data ghcr.io/malvavisc0/aria-ai-rocm:latest

Docker Compose

# Copy and configure environment. Start from the generic template at
# src/aria/.env.example, or from a VRAM-tuned preset in docs/env/.
cp src/aria/.env.example .env
#   e.g. for a 16 GB GPU use the tuned preset instead:
#   cp docs/env/.env.16gb.example .env

# NVIDIA / CUDA
docker compose up -d

# AMD / ROCm
docker compose --profile rocm up -d aria-rocm
Image Base GPU
ghcr.io/malvavisc0/aria-ai-cuda:latest vLLM (CUDA/CPU) NVIDIA
ghcr.io/malvavisc0/aria-ai-rocm:latest vLLM (ROCm) AMD

First run: the container auto-generates a CHAINLIT_AUTH_SECRET and persists it to the data volume. You still need to create a login user:

docker exec -it aria aria users add --identifier admin@example.com --name "Admin" --role admin

โš™๏ธ Configuration

Aria uses environment variables stored in .env:

# Runtime data lives under ~/.aria (override with ARIA_HOME)
#ARIA_HOME=~/.aria
CHAINLIT_AUTH_SECRET=<auto-generated>

# Chat model (served by vLLM)
CHAT_MODEL = Granite-4.1-8B
CHAT_MODEL_PATH = ethanhunt3/Granite-4.1-8B-GPTQ-INT4
CHAT_CONTEXT_SIZE = 32768

# Embeddings model (loaded in-process via HuggingFace)
EMBEDDINGS_MODEL = granite-embedding-311m-multilingual-r2
EMBED_MODEL_PATH = ibm-granite/granite-embedding-311m-multilingual-r2

# vLLM engine
ARIA_VLLM_QUANT = gptq_marlin
ARIA_VLLM_GPU_MEMORY_UTILIZATION = 0.85

# vLLM isolated venv (advanced overrides)
#ARIA_VLLM_VERSION = 0.24.0          # pinned PyPI release tag (v0.24.0 โ†’ 0.24.0)
#ARIA_VLLM_VENV = /opt/vllm          # use a pre-existing venv (Aria won't create/delete it)
#ARIA_VLLM_REMOTE = true            # skip local process mgmt (external server)

Upgrading from an in-.venv vLLM install (before the detach) vLLM is now an external tool installed into an isolated venv at ~/.aria/venvs/vllm (Aria's own dependency tree no longer imports it). A vLLM copy left in Aria's .venv from before the detach is ignored at runtime. aria vllm status prints a one-line notice when it detects this; reclaim the multi-GB CUDA/torch stack with aria vllm uninstall --legacy, then install the isolated copy with aria vllm install.

Reclaiming unused CUDA wheels from Aria's .venv (CPU-torch pin) Aria's venv now installs CPU-only torch โ€” embeddings run on CPU by default (device="cpu"), so the multi-GB CUDA/torch wheel set was loaded but never used. This is enforced automatically via the [tool.uv] pytorch-cpu index in pyproject.toml; plain uv sync resolves torch==+cpu. An existing .venv still holds the old CUDA wheels after re-syncing; prune them explicitly:

uv pip uninstall torch nvidia-cuda-runtime nvidia-cudnn-cu13 \
    nvidia-cusparselt-cu13 nvidia-nccl-cu13 nvidia-nvshmem-cu13 \
    cuda-toolkit cuda-bindings triton
uv sync

vLLM's GPU stack is unaffected โ€” it lives in its own isolated venv at ~/.aria/venvs/vllm, and the vLLM installer passes --no-config so Aria's CPU index never leaks into it.

๐Ÿ“ Directory Structure
~/.aria/                   # Runtime data root (ARIA_HOME)
โ”œโ”€โ”€ workspace/             # Agent-facing workspace (file tools)
โ”œโ”€โ”€ bin/                   # Downloaded binaries (lightpanda, etc.)
โ”œโ”€โ”€ db/                    # SQLite (aria.db, tools.db) and ChromaDB
โ”œโ”€โ”€ models/                # Downloaded model files
โ”œโ”€โ”€ logs/                  # Runtime logs
โ”œโ”€โ”€ storage/               # Chainlit file storage
โ”œโ”€โ”€ uploads/               # User-uploaded files
โ””โ”€โ”€ workers/               # Worker agent state

<project>/.env             # Configuration

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

Development Setup

# Install dev dependencies
uv sync --group dev

# Run tests
uv run pytest

# Lint and format code
uv run ruff check src/
uv run ruff format src/

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with โค๏ธ by malvavisc0

Report Bug ยท Request Feature

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aria_ai-0.4.0.tar.gz (729.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aria_ai-0.4.0-py3-none-any.whl (875.5 kB view details)

Uploaded Python 3

File details

Details for the file aria_ai-0.4.0.tar.gz.

File metadata

  • Download URL: aria_ai-0.4.0.tar.gz
  • Upload date:
  • Size: 729.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for aria_ai-0.4.0.tar.gz
Algorithm Hash digest
SHA256 573b39b95d4b2230719fdefb4b343f9be10ca8e29409aa9199baf1d2152c2ddd
MD5 c9a663473fee5408a4522bc2d4f3044e
BLAKE2b-256 4fc4ad1135c8b8818f191b49b1e73226a20470b42927693ff056694a01cce790

See more details on using hashes here.

Provenance

The following attestation bundles were made for aria_ai-0.4.0.tar.gz:

Publisher: release.yml on malvavisc0/aria-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aria_ai-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: aria_ai-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 875.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for aria_ai-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5aa2a1d522971ec4e7e14d0418399321e8d741b5c71a9beb59b99bb7e5249168
MD5 7dee9693d2daeca407dde3df53337508
BLAKE2b-256 7e78fd551bafbaad8977cf18b2b7d4f68b47eef6e1aaa7c934ed714877c22dc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for aria_ai-0.4.0-py3-none-any.whl:

Publisher: release.yml on malvavisc0/aria-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.4.1

2 files

This release

0.4.0 This release

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page