Find a file
Bryan Helmkamp caa7e58a65 Add README.md and MIT LICENSE
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 14:48:58 -04:00
.cargo Disable empty doc-tests and add terse test output alias 2026-02-23 10:57:26 -05:00
.claude Add 2026-03-10 changelog and update docs for new CLI commands 2026-03-10 14:25:42 -04:00
.config Fix Daytona e2e test failures and improve test reliability 2026-03-08 18:51:43 -04:00
.github Use GitHub-hosted runners for release workflow 2026-03-10 14:23:05 -04:00
apps Move packages/ to lib/packages/ and update all references 2026-03-09 13:13:56 -04:00
arc/workflows Add vnc test 2026-03-10 11:32:09 -04:00
bin Organize scripts into bin/dev, bin/ops, and bin/agent 2026-03-09 13:07:22 -04:00
docker Move packages/ to lib/packages/ and update all references 2026-03-09 13:13:56 -04:00
docs Add 2026-03-10 changelog and update docs for new CLI commands 2026-03-10 14:25:42 -04:00
lib Improve install flow ordering, doctor diagnostics, and callback page 2026-03-10 14:41:08 -04:00
skills/develop-web-game Add develop-web-game skill and verification workflow 2026-03-10 08:41:12 -04:00
test Rename arc run startarc run (#5) 2026-03-08 16:14:50 -04:00
.env.example Remove export prefix from .env.example for standard dotenv format 2026-03-09 23:46:44 -04:00
.gitignore Track .claude directory and add docs skill watermark 2026-03-08 11:23:07 -04:00
AGENTS.md Add arc init command to initialize a new arc project 2026-03-10 13:00:36 -04:00
arc.toml Disable retros project-wide in arc.toml 2026-03-09 19:29:01 -04:00
bun.lock Move packages/ to lib/packages/ and update all references 2026-03-09 13:13:56 -04:00
Cargo.lock Add GitHub App manifest setup to arc install 2026-03-10 14:36:13 -04:00
Cargo.toml Add release workflow and improve CI pipelines 2026-03-10 13:40:29 -04:00
CLAUDE.md Move CLAUDE.md to AGENTS.md with symlink for compatibility 2026-03-09 13:02:06 -04:00
LICENSE.md Add README.md and MIT LICENSE 2026-03-10 14:48:58 -04:00
package.json Move packages/ to lib/packages/ and update all references 2026-03-09 13:13:56 -04:00
README.md Add README.md and MIT LICENSE 2026-03-10 14:48:58 -04:00

Arc

The software factory for small teams of expert engineers

Arc replaces the prompt-wait-review loop with version-controlled workflow graphs that orchestrate AI agents, shell commands, and human decisions into repeatable, long-horizon coding processes.

Define workflows in Graphviz DOT, route tasks to the right model with CSS-like stylesheets, and let the engine handle orchestration, parallelism, checkpointing, and verification -- all from a single Rust binary.

License: MIT docs


Table of Contents


Key Features

What Arc Does

Feature Description
🤖 Multi-model orchestration Route tasks to the right model per node -- cheap for boilerplate, frontier for hard reasoning
💠 Declarative workflows Define pipelines in Graphviz DOT -- diffable, reviewable, composable
Human-in-the-loop Approval gates, interviews, and real-time steering let you intervene at the right moments
🔄 Checkpoint and resume Git-native checkpointing after every stage -- inspect, revert, or fork from any point
🛡️ Adaptive verification Combine LLM-as-judge, test suites, and human review into quality gates
📊 Full observability Every tool call, agent turn, and decision point captured in a unified event stream

How Arc Does It

Feature Description
🎨 Model stylesheets CSS-like selectors (*, .class, #id) assign models, providers, and reasoning effort
🌳 Git-native checkpoints Every stage commits to a branch -- resume interrupted runs exactly where they left off
📦 Sandbox isolation Run agent tools in local, Docker, Daytona cloud VMs, or exe.dev ephemeral VMs
🔌 MCP integration Extend agents with any Model Context Protocol server (Playwright, databases, APIs)
🔁 Loops and fan-out Implement-test-fix cycles, parallel code reviews, and ensemble multi-provider patterns
🦀 Written in Rust Single compiled binary with minimal dependencies -- no Python runtime, no npm install
⚙️ CLI and API modes arc run for local dev, arc serve for production with a React web UI

Read the full documentation for details.


Quick Start

Warning

Arc is in private research preview. Contact bryan@qlty.sh if you're interested in trying it.

Prerequisites

  • Rust (latest stable)
  • At least one LLM API key (ANTHROPIC_API_KEY, OPENAI_API_KEY, or GEMINI_API_KEY)

Clone and build

git clone https://github.com/qltysh/arc.git
cd arc
cargo build --release

Configure API keys

cp .env.example .env
# Edit .env and add at least one provider key

Run the setup wizard

./target/release/arc install

Verify your installation

./target/release/arc doctor --live

Run your first workflow

./target/release/arc run docs-internal/demo/01-hello.dot

Or try a multi-step workflow with a human approval gate:

./target/release/arc run docs-internal/demo/10-plan-implement.dot

Example Workflow

A plan-approve-implement workflow where a human reviews the plan before the agent writes code:

digraph PlanImplement {
    graph [goal="Plan, approve, implement, and simplify a change"]

    start [shape=Mdiamond, label="Start"]
    exit  [shape=Msquare, label="Exit"]

    plan      [label="Plan", prompt="Analyze the goal and codebase. Write a step-by-step plan.", reasoning_effort="high"]
    approve   [shape=hexagon, label="Approve Plan"]
    implement [label="Implement", prompt="Read plan.md and implement every step."]
    simplify  [label="Simplify", prompt="Review the changes for clarity and correctness."]

    start -> plan -> approve
    approve -> implement [label="[A] Approve"]
    approve -> plan      [label="[R] Revise"]
    implement -> simplify -> exit
}

Node types at a glance

Shape Type What it does
Mdiamond Start Workflow entry point
Msquare Exit Workflow terminal
box (default) Agent Multi-turn LLM with tool access
tab Prompt Single LLM call, no tools
parallelogram Command Runs a shell script
hexagon Human gate Pauses for human input
diamond Conditional Routes based on conditions
component Parallel Fans out to concurrent branches
tripleoctagon Merge Collects parallel branch results

Multi-model routing with stylesheets

graph [
    model_stylesheet="
        *        { llm_model: claude-haiku-4-5; reasoning_effort: low; }
        .coding  { llm_model: claude-sonnet-4-5; reasoning_effort: high; }
        #review  { llm_model: gemini-3.1-pro-preview; llm_provider: gemini; }
    "
]

Selectors follow CSS specificity: * (0) < shape (1) < .class (2) < #id (3).


Supported Models

Model Provider Aliases
claude-opus-4-6 Anthropic opus
claude-sonnet-4-5 Anthropic sonnet
claude-haiku-4-5 Anthropic haiku
gpt-5.2 OpenAI gpt5
gpt-5.3-codex OpenAI codex
gpt-5.4 OpenAI gpt54
gemini-3.1-pro-preview Gemini gemini-pro
gemini-3-flash-preview Gemini gemini-flash
kimi-k2.5 Kimi kimi
glm-4.7 Zai glm
minimax-m2.5 MiniMax minimax
mercury-2 Inception mercury

Run arc model list for the full catalog. Provider fallback chains are configurable per-run.


Architecture

Arc provides two interfaces backed by the same workflow engine:

Feature CLI mode (arc run) API mode (arc serve)
Execution Synchronous, single run Async, queued with scheduler
Human-in-the-loop Terminal prompts HTTP endpoints + web UI
Events Printed to stderr SSE stream
Concurrency One run per process Configurable (default 5)
Best for Development, one-off runs Production, integrations

Rust crates

Crate Purpose
arc-cli CLI entry point (run, exec, serve, doctor, install)
arc-workflows Core workflow engine -- DOT parsing, stage execution, checkpoints
arc-agent AI coding agent with tool use (Bash, Read, Write, Edit, Grep)
arc-api Axum HTTP server with SSE event streaming
arc-llm Unified LLM client -- Anthropic, OpenAI, Gemini, and more
arc-types Auto-generated types from OpenAPI spec
arc-github GitHub App auth, PR creation, checkpoint pushing
arc-db SQLite with WAL mode and schema migrations
arc-mcp Model Context Protocol client/server

TypeScript

Package Purpose
apps/arc-web React 19 + React Router + Vite + Tailwind frontend
arc-api-client Auto-generated TypeScript client from OpenAPI spec

System Requirements

  • macOS or Linux (x86_64 or ARM)
  • Rust (latest stable) for building from source
  • At least one LLM provider API key (Anthropic, OpenAI, or Gemini)
  • Git (for checkpoint and resume)
  • Docker (optional, for Docker sandbox mode)

Help or Feedback


Contributing

Developing the CLI

Arc requires a working Rust toolchain:

git clone https://github.com/qltysh/arc.git
cd arc
cargo build --workspace
cargo test --workspace

Developing the web UI

cd apps/arc-web
bun install
bun run dev

Useful commands

Command Description
cargo build --workspace Build all crates
cargo test --workspace Run all tests
cargo test -p arc-api Test a single crate
cargo fmt --check --all Check formatting
cargo clippy --workspace -- -D warnings Lint
cd apps/arc-web && bun run typecheck Type check the frontend

License

Arc is licensed under the MIT License.