Skip to main content

A clean terminal CLI for multi-agent agentic coding

Project description

AbstractCode

Durable terminal TUI for agentic coding on the AbstractFramework stack (AbstractAgent + AbstractRuntime + AbstractCore).

Status: pre-alpha (APIs and UX may change).

Next: docs/getting-started.md.

AbstractFramework ecosystem

AbstractCode is part of AbstractFramework:

Features

  • Interactive TUI (abstractcode) with durable runs (resume/pause/cancel), snapshots, and logs
  • Approval-gated tools by default (with an allowlist you can configure)
  • Built-in agents: react, memact, codeact (from abstractagent)
  • Plan + Review modes (--plan, --review; /plan, /review)
  • VisualFlow workflows:
    • run locally: abstractcode flow ... (optional extra)
    • run as an agent: abstractcode --agent <flow_ref>
  • Remote tool execution via MCP (/mcp, /executor)
  • Optional gateway-first Web UI in web/

How it fits together (diagram)

flowchart LR
  U[User] --> AC[AbstractCode\n(TUI/CLI host)]
  AC --> AA[AbstractAgent\n(agent logic)]
  AC --> AR[AbstractRuntime\n(durable execution)]
  AR --> CORE[AbstractCore\n(LLM providers + tools)]

  AC -->|approve| TOOLS[Local tools]
  AC <--> MCP[MCP servers\n(remote tools)]

  WEB[web/\n(browser host)] <--> GW[AbstractGateway\n(/api/gateway/*)]
  AC -. optional .-> GW

Install

Python: 3.10+

pip install abstractcode

Optional (run VisualFlow locally via abstractcode flow ...):

pip install "abstractcode[flow]"

From source (development):

pip install -e ".[dev]"

Quickstart (TUI)

Ollama (default provider):

abstractcode --provider ollama --model qwen3:1.7b-q4_K_M

OpenAI-compatible server (e.g. LM Studio):

abstractcode --provider openai --base-url http://127.0.0.1:1234/v1 --model qwen/qwen3-next-80b

Inside the app:

  • /help shows the authoritative command list
  • type a task (or use /task ...)
  • tool approvals: /auto-accept (or start with --auto-approve)
  • attach files with @path/to/file in your prompt

Prompt caching (best-effort)

AbstractCode defaults to --prompt-cache auto, which enables prompt caching when the runtime LLM client reports prompt-cache support via the AbstractCore capability contract (reduces repeated prefill work and can improve time-to-first-token).

Toggle:

  • CLI: --prompt-cache auto|on|off (or ABSTRACTCODE_PROMPT_CACHE=auto|on|off)
  • TUI: /cache auto|on|off

Provider notes:

  • mlx: full in-process KV caching with a 3-compartment cache: system | tools | history.
  • huggingface + GGUF (llama.cpp): same 3-compartment cache when AbstractCore can render the model's llama.cpp chat format exactly for caching (currently chatml-function-calling and llama-3); otherwise it falls back to stable keyed LlamaRAMCache reuse.
  • Remote APIs: prompt_cache_key is forwarded where applicable (server-managed; semantics vary by provider).

Details: docs/architecture.md and docs/faq.md.

Persistence (durable runs)

Default paths:

  • state file: ~/.abstractcode/state.json
  • durable stores: ~/.abstractcode/state.d/
  • saved settings: ~/.abstractcode/state.config.json

Disable persistence:

abstractcode --no-state

Workflows

  • Local runs: abstractcode flow run <flow_id_or_path> ... (requires abstractcode[flow])
  • Workflow agent: abstractcode --agent /path/to/workflow.json ...
  • Remote control-plane: abstractcode gateway --help
  • Bundle management on a gateway: abstractcode workflow --help

Details: docs/workflows.md.

Web UI

The web host lives in web/ and connects to an AbstractGateway at /api/gateway/*.

Start here:

Documentation

Development

pip install -e ".[dev]"
pytest -q
ruff check .
black .

Project

License

MIT. See LICENSE.

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

abstractcode-0.3.7.tar.gz (196.9 kB view details)

Uploaded Source

Built Distribution

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

abstractcode-0.3.7-py3-none-any.whl (169.6 kB view details)

Uploaded Python 3

File details

Details for the file abstractcode-0.3.7.tar.gz.

File metadata

  • Download URL: abstractcode-0.3.7.tar.gz
  • Upload date:
  • Size: 196.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for abstractcode-0.3.7.tar.gz
Algorithm Hash digest
SHA256 91903c9a9d380e53035770d311c75b85319c258b498739328854a3f03fd5edba
MD5 32c1c21759f1c50425f4a56e394e1efe
BLAKE2b-256 4fdd375a92544dc5c55c05afdfbd906a4061959098efae7a29800079fdea1372

See more details on using hashes here.

Provenance

The following attestation bundles were made for abstractcode-0.3.7.tar.gz:

Publisher: release.yml on lpalbou/AbstractCode

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

File details

Details for the file abstractcode-0.3.7-py3-none-any.whl.

File metadata

  • Download URL: abstractcode-0.3.7-py3-none-any.whl
  • Upload date:
  • Size: 169.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for abstractcode-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 aee3cf29611f7d7991a5df21e30266a1011e417ee1bd8768fde44055bbc77c4f
MD5 6b1e599a7d29450544381b0369b14994
BLAKE2b-256 e4ff142cca5462c02832b11f6bf777ee1771348e8e8c1f069c5ebc94698f79e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for abstractcode-0.3.7-py3-none-any.whl:

Publisher: release.yml on lpalbou/AbstractCode

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