Skip to main content

A coding agent that jails model commands and uses editable state machines for long-running tasks.

Project description

agent6

A coding agent that jails model commands and uses editable state machines for long-running tasks.

The model can write code and ask to run commands, but those commands go through a jail with restricted filesystem and network access. Long-running workflows can be written, reviewed, edited, resumed, and replayed as declarative state machines instead of being left to an open-ended agent loop.

Full documentation: agent6.dev

The agent6 hub

Features

  • Sandboxed execution for every LLM-chosen child process, jailed individually (Landlock + seccomp + pivot_root), with .git rebound read-only and egress confined to your provider
  • Works with Anthropic and any OpenAI-compatible endpoint (OpenAI, OpenRouter, Ollama, vLLM, llama.cpp, LM Studio)
  • Per-step git commits, snapshot-resumable runs, per-turn forkable checkpoints, USD and token budgets with hard stops
  • Plan, run, review, and ask modes; a live terminal dashboard and a zero-dependency browser UI (agent6 web, phone-friendly); persistent transcripts and a searchable run history
  • State machines (agent6 machine) for long-running automated tasks: LLM-drafted, operator-reviewed, journaled, and replayable; a machine can wait indefinitely for a human, be poked with a payload, steer/answer its agent states from any front-end, and notify you when it needs attention
  • Small, fixed LLM tool surface; the only extension point is operator-configured MCP servers, off by default
  • Eight runtime dependencies, no telemetry, no auto-update

Install

From PyPI with uv or pipx:

uv tool install agent6        # or: pipx install agent6

agent6 needs Linux for the sandbox (kernel 6.7+ for TCP rules), Python 3.12+, and an API key for at least one provider. macOS and Windows run unsandboxed behind a warning. See installation for the full requirements and building from source.

Quick start

# Connect a provider once (stored in ~/.config/agent6/, key in a 0600 secrets file).
agent6 connect                # interactive: pick provider, paste API key
agent6 model worker anthropic claude-sonnet-4-6

# Run the agent on a task. agent6 infers a verify command if you haven't set one.
cd your-repo
agent6 run "add a --json output mode to the CLI"

# Watch and drive runs from a terminal, a full-screen TUI, or a browser.
agent6 watch <run-id>         # plain live event stream (default)
agent6 tui                    # full-screen dashboard hub
agent6 web                    # browser UI on http://127.0.0.1:8901 (phone-friendly)

# Audit the effective config, pre-flight the sandbox, resume or fork a run.
agent6 config show
agent6 check
agent6 resume <run-id>
agent6 fork <run-id> --at-turn 7

That is the whole loop. See getting started for the full command tour, the web UI for driving runs from a phone, configuration for every field, and the security model for what the sandbox enforces.

Config is layered: built-in secure defaults, then the global ~/.config/agent6/config.toml, then the per-repo config (out of the workspace, per-machine, not committed), then an explicit --config FILE. Every field has a default; security-sensitive fields default to the safe value (agent_network = "providers", tool_network = "block", run_commands = "ask", protect_git = true, git.allow_* = false), and git_ops.py refuses push, --force, and history rewrites unconditionally.

Benchmarks

Reproducible harnesses live under bench/: real-world SWE-bench-Lite-style tasks, head-to-head runs against Claude Code / opencode / aider, machine create validation, and a perf-optimization harness. See each directory's README for recorded numbers (single runs, no variance measured; re-run before quoting).

Contributing

Read AGENTS.md first. The repo's verify command decides whether a change is landable:

uv run ruff check && uv run ruff format --check && \
  uv run pyright && uv run tach check && uv run pytest

Changes under sandbox/, tools/, git_ops.py, providers/, or graph/curator must include a security review note in the commit message.

License

Apache-2.0.

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

agent6-0.0.16.tar.gz (619.3 kB view details)

Uploaded Source

Built Distributions

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

agent6-0.0.16-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl (995.8 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64musllinux: musl 1.2+ x86-64

agent6-0.0.16-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl (970.3 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64musllinux: musl 1.2+ ARM64

File details

Details for the file agent6-0.0.16.tar.gz.

File metadata

  • Download URL: agent6-0.0.16.tar.gz
  • Upload date:
  • Size: 619.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for agent6-0.0.16.tar.gz
Algorithm Hash digest
SHA256 e5f6fb938c3f7d138d9ef5b103ff910f15f2e067bc7ab154b375dc435a0dc091
MD5 b02c8965abf65815e410bcd860424c1d
BLAKE2b-256 2bc18c3f527db3e0af093d77c6d0b2c5a21856a2c27d70ca7f664db25711e41f

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent6-0.0.16.tar.gz:

Publisher: pypi.yml on agent6-dev/agent6

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

File details

Details for the file agent6-0.0.16-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for agent6-0.0.16-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 427f2748113a0be0c7d116d95275a14a9761a561f25448f00aa73d677ab444e3
MD5 78635ebb261f70e54afe4074b4725bd7
BLAKE2b-256 1f0d72752ceb8da818f033a7480ecccdf31ef719256de118939312ed3c699816

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent6-0.0.16-py3-none-manylinux_2_17_x86_64.musllinux_1_2_x86_64.whl:

Publisher: pypi.yml on agent6-dev/agent6

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

File details

Details for the file agent6-0.0.16-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for agent6-0.0.16-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 53f97ee4db48bc14bd61891d778d73004d63edc78fc162bc883640819c1d54ed
MD5 dcf084a07d88d540192a60491b4714c9
BLAKE2b-256 6106b5a81a27d25007d46894d1f1d451334af43561bd468b08b8f66670c17ace

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent6-0.0.16-py3-none-manylinux_2_17_aarch64.musllinux_1_2_aarch64.whl:

Publisher: pypi.yml on agent6-dev/agent6

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