ΛRC

Source control for AI coding agents

Source + intent → everything else is derived state.

click to copy curl -fsSL https://arc.daystra.com/install.sh | sh

What Arc does

Agent work doesn’t arrive one change at a time. One agent rewrites four files, a second runs the tests, a third starts on something that overlaps, and you review all of it in the same minute. Arc is built for that workload:

JARVIS: “Target locked, sir. Creating branch fix/anti-missile-lock. Awaiting two peer approvals and a passing CI run before executing counter-fire.”

Stark: “We are literally falling out of the sky.”

Arc exists so your agent never files a pull request mid‑freefall.

How an agent uses Arc

Five steps, all over MCP. Each one also has a CLI equivalent.

StepMCP toolWhat happens
1. Orientarc_contextReturns the active intent, recent decisions and changes, live worktrees, and warnings. If no intent is active, it points the agent at the lifecycle: the installed skill, or an example declare call when no skill is present.
2. Declarearc_intent_declareStates the goal and scope. Arc creates an isolated worktree and returns its path.
3. Work(edit files)All edits go under the worktree path, and the daemon captures them as they settle. Agents can query history along the way with arc_query_changes, arc_query_timeline and arc_search.
4. Completearc_intent_completeRecords an honest outcome. Arc captures any pending edits first, so the change set you ship is the one you actually made.
5. Mergearc_intent_mergePreviews a three-way diff, then writes one merge snapshot to the base timeline. Conflicts come back as structured data, and no markers are ever written to disk.

Several agents can run this loop on one project at the same time. Each one gets its own worktree, and overlapping edits are resolved at merge with both intents’ rationale on hand. Small fixes that don’t need isolation can declare an inline intent against the base directory.

The arc-source-control skill, which arc init installs, teaches a fresh agent this loop without anyone explaining it.

Context: one call to orient

A new agent session knows nothing about your project. Without Arc, it reads back through history or waits for a human to explain. With Arc, it makes one call:

arc_context        # MCP, no arguments
arc context        # CLI

The response contains the active intent, recent changes and decisions, live worktrees, stale-state warnings, setup hints, and the next tools to call. If an intent is active, it also shows a grounds-currency verdict, which says whether the files the intent depends on have changed underneath it. Tools added in later releases show up in its hints.

Call it first in every session that will change the tree.

Intent: work as a checkable claim

An intent is more than a label for some edits. It can carry a type, the check that judges it, and the files it depends on.

Say how completion is judged.

arc intent declare "fix rate limiter" \
  --mode predicate --predicate "burst test stays under 100 req/s" \
  --grounds "src/limiter/**"

--mode is one of predicate (a stated check), judgment, absence or answer. Arc records the check with the intent; it does not run it. A claim with no check is allowed, but it never looks checked.

Declare its grounds, then check them. --grounds names the paths the claim rests on, and Arc records when they were attested. Later you can ask whether those paths still match what the claim assumed:

arc grounds-check "docs/design.md" "src/auth/**" --since 7d

Each path comes back as one of three verdicts:

Exit codes: 0 current, 2 drifted, 3 vacuous, 1 error. Inside a worktree, the check judges both the worktree and base.

Replace without rewriting. --supersedes <id> records that a new intent replaces an old one. The old record stays as it was, and the link can be queried in both directions.

Close the loop. Every intent ends on the record: completed with its outcome, merged, or abandoned. Abandoned work stays inspectable and never reaches base. arc recap ranks open obligations above recent activity, so unfinished claims stay visible.

Together this works like a spec-driven loop. The claim is written before the work, its check and its grounds travel with it, and the closure is recorded. Arc keeps the record honest; your tests and reviewers still run the check.

Memory: the substrate remembers

What agents learn while working usually disappears when the session ends. In Arc it stays on record: every intent’s goal and outcome, every snapshot, every event. Later sessions read that record and don’t have to re-derive it.

arc recap last-week                  # what shipped, grouped by intent
arc recap last-30d                   # a month at a glance
arc recap --path crates/arc-core     # one corner, and which functions changed

Docs, stories, tasks and status are byproducts of intent. The usual wiki, task board, story and source become one record: the task is the intent you declared, and the story is generated from intents and snapshots. Because the narrative is read from the record on demand, it can’t drift from it.

Integrity: signed, content-addressed, append-only

A record many agents write to has to be one you can check without trusting each agent. Here is what Arc guarantees, and where the guarantee stops.

What leaves your machine. Capture and history are local. Data goes out only through these paths:


Get started

C’mon, your agent will do this automatically, meatbag.

curl -fsSL https://arc.daystra.com/install.sh | sh
cd my-project
arc init        # starts capture and wires up your agent: MCP config, permissions, onboarding skill

Joining a project that already lives on a relay? arc clone /Volumes/backup/arc for a filesystem relay, or arc clone --bundle invite.json for R2.

In the docs


macOS (Apple Silicon) · Linux (x86_64, early) · MIT License · Built by humans and agents, tracked by Arc

Copied to clipboard

A Cybercussion Interactive, LLC project