{"id":51077069,"url":"https://github.com/robzilla1738/arc-loop","last_synced_at":"2026-06-23T15:02:41.053Z","repository":{"id":366367370,"uuid":"1264140447","full_name":"robzilla1738/arc-loop","owner":"robzilla1738","description":"Rust supervisor and plugin for Agent Run Contracts","archived":false,"fork":false,"pushed_at":"2026-06-09T16:52:56.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-21T14:57:13.889Z","etag":null,"topics":["agent-contracts","claude-code","codex","coding-agents","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robzilla1738.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-09T15:44:00.000Z","updated_at":"2026-06-09T16:53:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/robzilla1738/arc-loop","commit_stats":null,"previous_names":["robzilla1738/arc-loop"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/robzilla1738/arc-loop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robzilla1738%2Farc-loop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robzilla1738%2Farc-loop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robzilla1738%2Farc-loop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robzilla1738%2Farc-loop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robzilla1738","download_url":"https://codeload.github.com/robzilla1738/arc-loop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robzilla1738%2Farc-loop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34694786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-contracts","claude-code","codex","coding-agents","rust"],"created_at":"2026-06-23T15:02:40.226Z","updated_at":"2026-06-23T15:02:41.044Z","avatar_url":"https://github.com/robzilla1738.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ARC Loop\n\nARC Loop is a small Rust supervisor for coding agents.\n\nIt gives Codex and Claude Code a contract to work inside. Then it checks the work without trusting the agent's final message.\n\nThe important part is boring on purpose: `arc` owns the run state. Agents can claim they are done. Only `arc validate` can mark a requirement as verified.\n\n## What it does\n\nARC Loop turns a run into a directory:\n\n```text\n.agent/contracts/\u003crun-id\u003e/\n  arc.toml\n  prompt.md\n  state.json\n  events.jsonl\n  evidence/\n  artifacts/\n  proposals/\n```\n\n`arc.toml` is the machine-readable contract. `prompt.md` is the brief the agent reads. The other files are owned by the supervisor.\n\nYou get:\n\n- TOML contracts with path and command policy\n- hook adapters for Codex and Claude Code\n- proof states that separate agent claims from verified evidence\n- an amendment flow so agents cannot quietly rewrite the contract\n- a terminal dashboard for active runs\n- plugin packaging for Codex and Claude Code\n\nThis is not a sandbox. It is a lifecycle guard for cooperative agents. That distinction matters.\n\n## Install\n\n```bash\ngit clone https://github.com/robzilla1738/arc-loop.git\ncd arc-loop\ncargo install --path .\n```\n\nYou can also use the wrapper without installing:\n\n```bash\nbin/arc --help\n```\n\n## Quick start\n\nCreate a run:\n\n```bash\narc new goal auth-refresh --title \"Fix auth refresh\"\n```\n\nEdit the generated files:\n\n```text\n.agent/contracts/auth-refresh/arc.toml\n.agent/contracts/auth-refresh/prompt.md\n```\n\nLint it:\n\n```bash\narc lint auth-refresh --strict\n```\n\nPrepare a launch command:\n\n```bash\narc launch --agent codex auth-refresh --print\narc launch --agent claude auth-refresh --print\n```\n\n`arc launch` does not start an agent. It activates the run, records the current contract hash, writes launch artifacts, and prints the command you should run.\n\nValidate the work:\n\n```bash\narc doctor --agent all auth-refresh\narc validate auth-refresh\narc status auth-refresh --json\narc report auth-refresh\n```\n\nOpen the dashboard:\n\n```bash\narc tui\narc tui --snapshot\n```\n\n## Proof states\n\nARC Loop uses explicit proof states:\n\n- `Unproven`: nothing useful exists yet.\n- `ClaimedByAgent`: an agent said the item is done.\n- `Evidenced`: a matching hook event exists.\n- `Verified`: `arc validate` reran the verifier and it passed.\n- `Rejected`: `arc validate` reran the verifier and it failed.\n\nAgents can only create claims or evidence. They cannot verify themselves.\n\nCommand proofs run from the repo root, not from wherever you happened to call `arc`. They also have timeouts and write stdout/stderr files under the run's `evidence/` directory.\n\n## Hook support\n\nClaude Code can load this repo as a plugin:\n\n```bash\nclaude --plugin-dir .\n```\n\nCodex loads the shared skill and bundled hook config from the plugin. Command hooks still need the normal `/hooks` trust review before they run.\n\nBoth adapters call the same supervisor:\n\n```bash\narc hook claude pre-tool \u003cid-or-auto\u003e\narc hook codex pre-tool \u003cid-or-auto\u003e\narc hook codex stop \u003cid-or-auto\u003e\n```\n\nIf exactly one ARC run is active, `auto` selects it. If more than one run is active, set `ARC_CONTRACT=.agent/contracts/\u003cid\u003e`.\n\n## Documentation\n\n- [Getting started](docs/getting-started.md)\n- [Real use](docs/real-use.md)\n- [Contract schema](docs/contract-schema.md)\n- [CLI reference](docs/cli.md)\n- [Enforcement model](docs/enforcement-model.md)\n- [Hooks and plugins](docs/hooks-and-plugins.md)\n- [Manual smoke tests](docs/manual-smoke.md)\n- [Amendments](docs/amendments.md)\n- [Examples](docs/examples.md)\n- [Security notes](SECURITY.md)\n\n## Development\n\n```bash\ncargo fmt --check\ncargo clippy --all-targets -- -D warnings\ncargo test\nscripts/smoke-claude.sh\nscripts/smoke-codex.sh\n```\n\nThe CI workflow runs the Rust checks and a v2 smoke test against a generated run. The smoke scripts are for local host-adapter checks.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobzilla1738%2Farc-loop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobzilla1738%2Farc-loop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobzilla1738%2Farc-loop/lists"}