{"id":50658112,"url":"https://github.com/axiomresearchfarm/claudy","last_synced_at":"2026-06-13T00:00:23.942Z","repository":{"id":363181587,"uuid":"1262234849","full_name":"axiomresearchfarm/claudy","owner":"axiomresearchfarm","description":"Multi-model agentic orchestrator — Claude as boss, ensemble of workers, server-side sandbox + pluggable HITL. AXIOM Research Lab.","archived":false,"fork":false,"pushed_at":"2026-06-10T05:07:31.000Z","size":1086,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T05:22:57.009Z","etag":null,"topics":["agentic-ai","anthropic","axiom","axiomresearchfarm","bun","claude","cli","open-source","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/axiomresearchfarm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","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-07T18:35:48.000Z","updated_at":"2026-06-10T05:07:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"c877c027-3f32-4556-b60f-c7985d86282a","html_url":"https://github.com/axiomresearchfarm/claudy","commit_stats":null,"previous_names":["axiomresearchfarm/claudy"],"tags_count":84,"template":false,"template_full_name":null,"purl":"pkg:github/axiomresearchfarm/claudy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axiomresearchfarm%2Fclaudy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axiomresearchfarm%2Fclaudy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axiomresearchfarm%2Fclaudy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axiomresearchfarm%2Fclaudy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/axiomresearchfarm","download_url":"https://codeload.github.com/axiomresearchfarm/claudy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axiomresearchfarm%2Fclaudy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34266916,"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-12T02:00:06.859Z","response_time":109,"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":["agentic-ai","anthropic","axiom","axiomresearchfarm","bun","claude","cli","open-source","typescript"],"created_at":"2026-06-08T01:00:48.909Z","updated_at":"2026-06-13T00:00:23.875Z","avatar_url":"https://github.com/axiomresearchfarm.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Claudy\n\n\u003e **An AXIOM Research Farm project.** Open source. Public. The ratchet runs forward only.\n\nMulti-model agentic orchestrator. Claude is the boss model; an ensemble of workers (GPT, DeepSeek, Mistral/Devstral, Gemini, Kimi, local Ollama) produces candidates in parallel; a judge picks or synthesizes the best answer. For real coding work, the agent runs in a **sandboxed workspace on a server** and ships you a unified diff to review — your real codebase stays untouched until you explicitly apply.\n\nSee [MANIFESTO.md](MANIFESTO.md) for why this exists. See [STRUCTURE.md](STRUCTURE.md) for where things live.\n\n---\n\n## Install (one line)\n\n**macOS · Linux** (arm64 or x64):\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/axiomresearchfarm/claudy/main/installer/install.sh | sh\n```\n\nWhat this does:\n- Detects your platform (`darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`)\n- Downloads `claudy` + `claudyd` for the **latest GitHub Release** and SHA256-verifies them\n- Installs to `~/.claudy/bin/`, symlinks into `/usr/local/bin` (or `~/.local/bin` for non-root)\n- Strips the macOS Gatekeeper quarantine bit so unsigned binaries run cleanly\n- Registers a daily auto-update unit (launchd on macOS, systemd user timer on Linux)\n\n**Installer options** (pass after `| sh -s --`):\n\n| Flag | Effect |\n|---|---|\n| `--version v0.3.2` | install a specific release tag instead of latest |\n| `--prefix /custom/dir` | install under a different directory (default `~/.claudy`) |\n| `--no-update` | skip registering the daily auto-update unit |\n| `--uninstall` | remove `~/.claudy/` and the auto-update unit |\n\nExample:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/axiomresearchfarm/claudy/main/installer/install.sh \\\n  | sh -s -- --version v0.3.2 --no-update\n```\n\n**After install**, drop your provider keys into `~/.claudy/.env`:\n\n```sh\ncat \u003e ~/.claudy/.env \u003c\u003c'EOF'\nANTHROPIC_API_KEY=...\n# optional workers:\n# OPENAI_API_KEY=...\n# DEEPSEEK_API_KEY=...\n# MISTRAL_API_KEY=...\n# GEMINI_API_KEY=...\n# KIMI_API_KEY=...\nEOF\nchmod 600 ~/.claudy/.env\n```\n\nThen:\n\n```sh\nclaudy           # interactive agentic REPL\n```\n\n### Update later\n\nThe daily auto-updater runs at ~04:17 local time. To trigger manually:\n\n```sh\nclaudy update --check    # see whether a newer version exists\nclaudy update            # download + atomic swap if newer\n```\n\nThe updater verifies SHA256 against the release's manifest, then atomic-renames into place. Previous binary is kept as `claudy.prev` for one cycle.\n\n---\n\n## Build from source\n\nIf you want to hack on Claudy instead of running the released binary, see [QUICKSTART.md](QUICKSTART.md) — covers `bun install`, dev loop, tests, lint.\n\n---\n\n## Two modes\n\n```\n                       ┌────────────────────────┐\n   prompt ───▶  REPL ──┤  router → interpreter  ├─▶ workers (parallel) ─▶ judge ─▶ composer ─▶ answer\n                       └────────────────────────┘\n\n                       ┌────────────────────────────────────────────────────────────┐\n   task  ───▶  CLI ────┤  claudyd (server)                                          │\n                       │    sandbox(workspace) → agent loop ↔ HITL channels ↔ user  │\n                       │                            ↓                                │\n                       │                          review → artifact (diff)           │\n                       └────────────────────────────────────────────────────────────┘\n                                                 ↓\n                                       user applies locally\n```\n\n- **Chat REPL** (`claudy`) — fast multi-model ensemble for questions, plans, drafts.\n- **Agentic task** (`claudy task ...`) — long-running autonomous work in a server-side sandbox. Emits a unified diff and the shell commands you still need to run yourself.\n- **Mobile** (since v0.29.5) — the web UI is a PWA: open `claudyd` in mobile Safari/Chrome and \"Add to Home Screen\" for a standalone app. See [QUICKSTART.md → Mobile](QUICKSTART.md#mobile-v0295).\n\n## Why server-side sandbox\n\nYour real codebase doesn't change until *you* apply the diff. The agent can hit dead ends, run failed experiments, retry on errors, pause for hours waiting on you — none of it touches your tree. You review one clean patch at the end. This is non-negotiable: it's what makes long-running autonomous agents acceptable.\n\n## HITL is a pluggable interface\n\nThe server holds a `HitlBus` with registered channels. Each `HitlChannel` is one adapter — SSE (default, ships connected clients), `StdinChannel` (terminal), and any of `TelegramChannel` / `WebPushChannel` / `FCMChannel` / `SlackChannel` you choose to plug in. The bus fans out the prompt to every channel; whichever channel the user replies on first wins.\n\nAdding a new transport is one file (`class XChannel implements HitlChannel`). No core changes.\n\nThis is consistent with the AXIOM Human Interface (AHI) protocol direction — explicit, typed, audit-trail-bearing escalations from machine to human. See the AHI vision doc when the corresponding contract version is published.\n\n## Quick start (from source)\n\nFor contributors. End users should use the one-line installer above.\n\nRequires Bun ≥ 1.1.\n\n```bash\nbun install\ncp .env.example .env       # at least ANTHROPIC_API_KEY\nbun run server \u0026           # claudyd on 127.0.0.1:8787\nbun run cli                # agentic REPL\n# OR\nclaudy task \"rename helper.foo to helper.bar everywhere\" --src ./my-repo\n```\n\nSingle-binary builds:\n\n```bash\nbun build packages/cli/src/index.ts    --compile --outfile bin/claudy\nbun build packages/server/src/index.ts --compile --outfile bin/claudyd\n```\n\n## Architecture\n\nMonorepo, seven packages, each a clean Rust translation target:\n\n| Package | Purpose |\n|---|---|\n| `@claudy/protocol` | shared types + zod schemas + pipeline/agent events + HitlChannel interface |\n| `@claudy/storage` | SQLite layer (projects, sessions, messages, memory, runs, stages) |\n| `@claudy/core` | providers (Anthropic/OpenAI/DeepSeek/Mistral/Gemini/Kimi/Ollama), 5-stage pipeline, settings, HitlBus |\n| `@claudy/sandbox` | workspace lifecycle, path-jail, shell allowlist, git diff producer, tool execution |\n| `@claudy/agent` | tool-use loop with self-recovery, agent tool schemas, HITL gates |\n| `@claudy/cli` | `claudy` binary — REPL + `task` subcommand, StdinChannel |\n| `@claudy/server` | `claudyd` binary — HTTP+SSE, SSEChannel, agentic endpoints, artifact API |\n\nDependency graph: strict DAG. `cli`/`server` → `agent` → `sandbox` → `core` → `storage` → `protocol`. No cycles. No package above `protocol` reaches into another for internals.\n\n## Pipeline stages (chat mode)\n\n| Stage | Default model | Responsibility |\n|-------|---------------|----------------|\n| Router | Claude Haiku | Classify route (trivial / chat / research / plan / code). Pick worker subset. Fast path on trivial. |\n| Interpreter | Claude Sonnet | Normalize prompt → typed `TaskSpec`. |\n| Workers | parallel ensemble | N workers solve the TaskSpec independently. |\n| Judge | Claude Opus | Score candidates, pick winner, optionally emit synthesis hint. |\n| Composer | Claude Sonnet | Stream final answer in Claudy's voice. |\n\n## Agentic flow (task mode)\n\n```\nclient                 server (claudyd)                                 sandbox\n  │                        │                                              │\n  │ POST /api/runs/agentic │                                              │\n  ├───────────────────────▶│ create Workspace (copy ─src or git clone)    │\n  │                        ├─────────────────────────────────────────────▶│\n  │                        │ agent loop (tool-use)                        │\n  │  ◀── SSE: tool_call ───┤  read_file / write_file / edit_file / grep   │\n  │  ◀── SSE: tool_result ─┤  list_dir / run_shell (allowlist+HITL) /     │\n  │                        │  git_status / task_complete                  │\n  │                        │                                              │\n  │  ◀── SSE: hitl_request ┤ HitlBus.request() ─▶ all channels (SSE,      │\n  │ POST /api/hitl/respond │   Telegram, WebPush, FCM, stdin, …)          │\n  │                       ─▶  HitlBus.respond() ─▶ first wins             │\n  │                        │                                              │\n  │                        │ review loop (judge LLM evaluates diff)       │\n  │                        │   ↩ rejected → loop with critique            │\n  │                        │   ✓ accepted → finalize                      │\n  │                        │                                              │\n  │  ◀── SSE: artifact ────┤ produce unified diff vs initial snapshot     │\n  │                        │                                              │\n  │ writes claudy.patch    │ destroys workspace (unless error)            │\n  │ user runs: git apply   │                                              │\n```\n\nThe architecture supports indefinite pauses. A run can sit in `hitl_blocked` for days waiting on a user reply over any channel; the workspace persists on disk until response or cancellation.\n\n## Open source\n\nDual-licensed under **MIT** or **Apache-2.0**, at your option. See [LICENSE-MIT](LICENSE-MIT) and [LICENSE-APACHE](LICENSE-APACHE).\n\nThis project is part of **AXIOM Research Farm** — open source, public, no private power moats. Contribution rules in [CONTRIBUTING.md](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxiomresearchfarm%2Fclaudy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxiomresearchfarm%2Fclaudy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxiomresearchfarm%2Fclaudy/lists"}