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.8.tar.gz (196.8 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.8-py3-none-any.whl (169.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: abstractcode-0.3.8.tar.gz
  • Upload date:
  • Size: 196.8 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.8.tar.gz
Algorithm Hash digest
SHA256 c5c221ee169ce04966b25ce7485d9d4e7f2e56500e2b66d405331d73db33220c
MD5 b0522e16feab880936666cf0ab059e80
BLAKE2b-256 e9b6621181d93c73ade5daf6e54a5204008a80e451507281a75868c32d81843e

See more details on using hashes here.

Provenance

The following attestation bundles were made for abstractcode-0.3.8.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.8-py3-none-any.whl.

File metadata

  • Download URL: abstractcode-0.3.8-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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 58013a24c9460aea40c41c218f03a6ff6fb1d1598d6b32fb947f4fa97d25940d
MD5 e6bea7a055d97e2fc60e6aabcb76858e
BLAKE2b-256 6efecef40fe72acf82876b88f45558c8c3d3d90d0acef38882a8e6c066640bc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for abstractcode-0.3.8-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