{"id":44203200,"url":"https://github.com/nxtg-ai/forge-orchestrator","last_synced_at":"2026-03-09T06:02:44.303Z","repository":{"id":337364339,"uuid":"1153282515","full_name":"nxtg-ai/forge-orchestrator","owner":"nxtg-ai","description":"Forge Orchestrator: Multi-AI task orchestration. File locking, knowledge capture, drift detection. Rust.","archived":false,"fork":false,"pushed_at":"2026-03-09T02:36:36.000Z","size":1445,"stargazers_count":102,"open_issues_count":1,"forks_count":13,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-09T03:24:47.179Z","etag":null,"topics":["ai","ai-agents","ai-coding","claude","cli","codex","developer-tools","devops","gemini","governance","llm","mcp","model-context-protocol","orchestration","rust"],"latest_commit_sha":null,"homepage":"https://forge.nxtg.ai","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/nxtg-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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},"funding":{"github":["awaliuddin"]}},"created_at":"2026-02-09T05:47:53.000Z","updated_at":"2026-03-09T02:36:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nxtg-ai/forge-orchestrator","commit_stats":null,"previous_names":["nxtg-ai/forge-orchestrator"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/nxtg-ai/forge-orchestrator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nxtg-ai%2Fforge-orchestrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nxtg-ai%2Fforge-orchestrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nxtg-ai%2Fforge-orchestrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nxtg-ai%2Fforge-orchestrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nxtg-ai","download_url":"https://codeload.github.com/nxtg-ai/forge-orchestrator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nxtg-ai%2Fforge-orchestrator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30284629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ai","ai-agents","ai-coding","claude","cli","codex","developer-tools","devops","gemini","governance","llm","mcp","model-context-protocol","orchestration","rust"],"created_at":"2026-02-09T22:00:51.283Z","updated_at":"2026-03-09T06:02:44.295Z","avatar_url":"https://github.com/nxtg-ai.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/forge-logo.png\" alt=\"Forge\" width=\"120\"\u003e\n\u003c/p\u003e\n\n# forge-orchestrator\n\n**Multi-tool orchestration in a single Rust binary.**\n\nThis is L2: Pro Builder.\n\nMulti-agent inside a single tool works fine. Claude Code runs 20 subagents and they stay aligned because the tool manages that orchestration internally. The problem is multi-tool: Claude Code, Codex CLI, and Gemini CLI on the same repo with no shared state. That's what the orchestrator solves.\n\nIt adds file locking, knowledge capture, task planning, drift detection, and multi-tool orchestration to your development workflow. Three tools reading from and writing to a single state directory.\n\nThe orchestrator exists because I ran two AI tools on the same codebase and watched them fail in the same ways human teams fail. Claude refactored a module. Codex updated tests against the pre-refactor interface. Both saved. Tests failed. Neither tool knew the other existed. I'd spent 23 years watching this exact scenario with talented human teams. The solution was always the same: orchestration infrastructure.\n\n## Install\n\n```bash\ncurl -fsSL https://forge.nxtg.ai/install.sh | sh\nforge init\n```\n\nSingle binary. 4MB. No runtime dependencies.\n\n## What You Get\n\n| Feature | What It Does |\n|---------|-------------|\n| File locking | Exclusive locks prevent tools from editing the same file simultaneously |\n| Knowledge flywheel | Captures decisions, patterns, learnings across tools. Auto-classified and searchable. |\n| Plan generation | `forge plan --generate` decomposes specs into dependency-aware task graphs |\n| Drift detection | Compares in-progress work against specs, flags divergence early |\n| Task board | Dependency-tracked tasks, tool assignment, progress monitoring |\n| Multi-tool adapters | Claude Code (MCP stdio) + Codex CLI + Gemini CLI (filesystem) |\n| TUI dashboard | `forge dashboard`: live tool panes, task status, lock state |\n| Headless mode | `forge run`: autonomous execution for CI/CD pipelines |\n| MCP server | 10 tools accessible by any connected AI tool |\n\n## Key Commands\n\n```bash\nforge init                     # Initialize Forge in a project\nforge plan --generate          # Generate task plan from spec\nforge dashboard                # Live TUI dashboard\nforge run                      # Headless autonomous mode\nforge status                   # Current state summary\n```\n\n## Architecture\n\nThe orchestrator is the policy core of Forge. All governance rules, file locks, and orchestration logic live here. The plugin (L1: Vibe Coder) and UI (L3: Ship Lord) are adapter surfaces. They present the orchestrator's state through different interfaces but don't make policy decisions.\n\n```\n┌──────────────────────────────────────┐\n│        forge-orchestrator            │\n│        (Rust, 4MB, 292 tests)        │\n│                                      │\n│  File locking · Task planning        │\n│  Knowledge · Governance · MCP        │\n│  Multi-tool adapters                 │\n│                                      │\n│  Policy enforced here.               │\n│  Nowhere else.                       │\n└───────────┬──────────────────┬───────┘\n            │                  │\n   ┌────────┴────────┐  ┌────┴────────┐\n   │  forge-plugin   │  │  forge-ui   │\n   │  (L1 Safety)    │  │  (L3 MC)    │\n   │  Claude Code    │  │  React      │\n   │  adapter        │  │  dashboard  │\n   └─────────────────┘  └─────────────┘\n```\n\n**Communication**: `.forge/` filesystem + MCP stdio. No daemon. No database. State is files.\n\n**Tool adapters**: Claude Code uses MCP stdio. Codex CLI and Gemini CLI use filesystem conventions. Each tool reads its own config format. No Forge-specific configuration language.\n\n## How File Locking Works\n\nFile locking exists because I've watched teams lose days to conflicting edits.\n\nWhen Claude Code starts editing a file, the orchestrator acquires an exclusive lock in `.forge/locks/`. Codex CLI requesting the same file is queued with a notification of who holds the lock. Locks include timeouts (crashed tools don't hold locks forever) and deadlock detection.\n\n292 tests cover concurrent access, timeout behavior, multi-adapter locking, and edge cases.\n\n## How the Knowledge Flywheel Works\n\nThe knowledge flywheel exists because I've watched decisions evaporate between sprints.\n\nEvery decision, pattern, and learning from tool sessions is captured in `.forge/knowledge/`. Entries are auto-classified by category. Search across sessions and across tools. Knowledge captured during a Claude Code session is available to Codex CLI the next day.\n\nAfter a week, the system knows your conventions better than you remember them. New sessions start with context instead of from scratch.\n\n## Upgrade Path\n\nFor visual dashboards and the Infinity Terminal (sessions that survive browser close, network drops, and server restarts), add Forge UI:\n\n```bash\ngit clone https://github.com/nxtg-ai/forge-ui \u0026\u0026 npm install \u0026\u0026 npm run dev\n```\n\n58 components. 4,146 tests. 87% coverage.\n\n## Links\n\n- [Forge Product Page](https://forge.nxtg.ai)\n- [Forge Plugin](https://github.com/nxtg-ai/forge-plugin) (L1: Vibe Coder)\n- [Forge UI](https://github.com/nxtg-ai/forge-ui) (L3: Ship Lord)\n- [Documentation](https://forge.nxtg.ai/docs)\n\n## License\n\nSee [LICENSE](./LICENSE).\n","funding_links":["https://github.com/sponsors/awaliuddin"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnxtg-ai%2Fforge-orchestrator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnxtg-ai%2Fforge-orchestrator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnxtg-ai%2Fforge-orchestrator/lists"}