Skip to main content

Production AI coding agent

Project description

Attocode

Production AI coding agent built in Python. Features a Textual-based TUI, multi-agent swarm orchestration, intelligent budget management, and a safety sandbox system.

Documentation | PyPI

Features

  • Interactive TUI --- Rich terminal interface with live tool status, streaming, plan/task panels, and keyboard shortcuts (powered by Textual)
  • Single-turn mode --- Run one-shot prompts from the command line for scripting and automation
  • Swarm mode --- Multi-agent orchestration with a standalone Python hybrid coordinator (attoswarm) and heterogeneous backends
  • Budget management --- Token-based economics with doom-loop detection, phase tracking, and budget extension dialogs
  • Safety sandbox --- Platform-aware command isolation (Seatbelt on macOS, Landlock on Linux, Docker, or allowlist fallback)
  • Session persistence --- SQLite-backed sessions, checkpoints, goals, audit logs, and permission grants that persist across prompts
  • MCP support --- Connect external tools via the Model Context Protocol
  • Multi-provider --- Anthropic, OpenRouter, OpenAI, Azure, and ZAI adapters
  • Skills & agents --- Extensible skill and agent system with project-level and user-level customization

Requirements

  • Python 3.12+
  • An API key for at least one LLM provider (e.g. ANTHROPIC_API_KEY)

Installation

Development install (recommended)

git clone https://github.com/eren23/attocode.git
cd attocode

uv sync --all-extras          # creates .venv, installs everything

Global install (recommended for end users)

cd attocode
uv tool install --force . --with anthropic --with openai

This installs three commands globally: attocode, attocodepy, and attoswarm.

Optional provider extras

uv sync --extra anthropic     # Anthropic SDK (recommended)
uv sync --extra openai        # OpenAI SDK
uv sync --extra tree-sitter   # AST parsing for code analysis
uv sync --extra semantic      # Semantic search embeddings (sentence-transformers)
uv sync --extra dev           # Development tools (pytest, mypy, ruff)
uv sync --all-extras          # All of the above

Set your API key:

export ANTHROPIC_API_KEY="sk-ant-..."
# Or for OpenRouter:
export OPENROUTER_API_KEY="sk-or-..."

Quick Start

Single-turn --- ask a question and get one response:

attocode "List all Python files in this project"

Interactive TUI --- launch the full terminal interface:

attocode

Swarm mode --- decompose a task across multiple parallel agents:

attocode --swarm "Build a REST API for a todo app with tests"

Hybrid swarm mode --- process-boundary orchestration via attoswarm:

attocode swarm start .attocode/swarm.hybrid.yaml "Build a REST API for a todo app with tests"

Swarm Command Chooser

Use these commands based on the scenario:

# New standalone swarm
attocode swarm start .attocode/swarm.hybrid.yaml "$(cat tasks/goal.md)"

# Follow-up / phase-2 swarm based on a previous swarm result
attocode swarm continue .agent/hybrid-swarm/demo-1 --config .attocode/swarm.hybrid.yaml "$(cat tasks/goal-phase2.md)"

# Resume the exact same run
attoswarm resume .agent/hybrid-swarm/demo-1

# Reattach the dashboard
attocode swarm monitor .agent/hybrid-swarm/demo-1

Important distinction:

  • start = new standalone run
  • continue = new child run from previous swarm output
  • resume = same run dir, same persisted goal

Use --tasks-file only with structured decomposition files such as tasks.yaml or tasks.md, not with high-level goal docs like goal.md.

CLI Reference

Flag Short Description
PROMPT Positional --- run single-turn with this prompt
--model -m LLM model to use
--provider LLM provider (anthropic, openrouter, openai, azure, zai)
--permission -p Permission mode: strict, interactive, auto-safe, yolo
--yolo Shorthand for --permission yolo (auto-approve all)
--task -t Task description (alternative to positional prompt)
--max-tokens Maximum response tokens
--temperature LLM temperature (0.0--1.0)
--max-iterations -i Maximum agent iterations
--timeout Request timeout in seconds
--resume Resume a previous session by ID
--tui / --no-tui Force TUI or plain REPL mode
--theme TUI theme (dark, light, auto)
--trace Save JSONL execution traces to .attocode/traces/
--swarm Enable swarm mode (optional: path to config YAML)
--swarm-resume Resume a previous swarm session by ID
--hybrid Route swarm execution to standalone attoswarm orchestrator
--paid-only Only use paid models (no free tier)
--record Record session for visual replay
--debug Enable debug logging
--non-interactive Run in non-interactive mode
--version Show version and exit

Architecture

src/attocode/
  types/           Type definitions (messages, agent, config)
  agent/           Core agent orchestrator and builders
  core/            Execution loop, subagent spawner, tool executor
  providers/       LLM provider adapters (Anthropic, OpenRouter, OpenAI, Azure, ZAI)
  tools/           Built-in tool implementations (file ops, bash, search)
  integrations/    Feature modules organized by domain:
    budget/          Economics, budget pools, doom-loop detection
    context/         Context engineering, compaction, codebase analysis
    safety/          Policy engine, sandbox (seatbelt/landlock/docker)
    persistence/     SQLite session store, checkpoints, goals
    agents/          Shared blackboard, delegation protocol
    tasks/           Task decomposition, planning, verification
    skills/          Skill loading and execution
    mcp/             MCP client and tool integration
    quality/         Learning store, self-improvement, health checks
    utilities/       Hooks, rules, routing, logging, retry
    swarm/           Multi-agent orchestrator (20 modules, 10k+ lines)
    streaming/       Streaming and PTY shell
    lsp/             Language server protocol integration
  tricks/          Context engineering techniques
  tracing/         Trace collector, event types, cache boundary tracking
  tui/             Textual TUI (app, widgets, dialogs, bridges, styles)

Lessons

The lessons/ directory contains a 26-lesson course teaching you to build production-ready AI coding agents from scratch. The lessons use TypeScript and cover everything from the core agent loop to multi-agent coordination.

cd lessons
npm install
npm run lesson:1

The lessons are also available on the documentation site.

Legacy TypeScript Version

The legacy/ directory contains the original TypeScript implementation of Attocode (v0.2.6). The Python version is the active implementation and has surpassed the TypeScript version in features. See legacy/PORTING_REPORT.md for a detailed feature comparison.

Testing

uv run pytest tests/unit/ -x -q          # Quick unit tests
uv run pytest tests/ --cov=src/attocode  # With coverage
uv run ruff check src/ tests/            # Linting

Documentation

Full documentation is available at eren23.github.io/attocode.

  • Architecture --- Module relationships and data flow
  • Providers --- LLM provider adapter reference
  • Sandbox --- Platform-aware command isolation
  • Budget --- Token economics and doom-loop detection
  • MCP --- Model Context Protocol integration
  • Swarm Guide --- Multi-agent orchestration
  • Hybrid Swarm --- Start vs continue vs resume, monitor/detach flows, and runbook
  • Contributing --- How to contribute

License

See LICENSE for details.

Project details


Download files

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

Source Distribution

attocode-0.2.8.tar.gz (5.0 MB view details)

Uploaded Source

Built Distribution

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

attocode-0.2.8-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file attocode-0.2.8.tar.gz.

File metadata

  • Download URL: attocode-0.2.8.tar.gz
  • Upload date:
  • Size: 5.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for attocode-0.2.8.tar.gz
Algorithm Hash digest
SHA256 3456eb9f43a104bc2e9173581605b811f868b16f8d9927f6d741e7475eaa5d7f
MD5 41a07c458ecda29ef2e3563f1197e32c
BLAKE2b-256 ac98a89ccca9450b9d5c7c1025eb1056dedf205164e5d15f21e3deebc92ba90d

See more details on using hashes here.

Provenance

The following attestation bundles were made for attocode-0.2.8.tar.gz:

Publisher: release-py.yml on eren23/attocode

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

File details

Details for the file attocode-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: attocode-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for attocode-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2de332f26cfbe47ac0b42c37876b43fd39d56d428b670d39cdaaa3f9c444e04f
MD5 5682cb937492bec93598ab4e75fbb65f
BLAKE2b-256 b90329d8e91802d9579b23fd266d570dd81eeef0d3d516d5f93279199d795696

See more details on using hashes here.

Provenance

The following attestation bundles were made for attocode-0.2.8-py3-none-any.whl:

Publisher: release-py.yml on eren23/attocode

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

Supported by

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