{"id":49492349,"url":"https://github.com/sidcorp-co/forge","last_synced_at":"2026-05-24T20:04:08.402Z","repository":{"id":354465471,"uuid":"1214896680","full_name":"SidCorp-co/forge","owner":"SidCorp-co","description":"Self-hosted lifecycle platform for software powered by Claude Code. Configurable pipelines, devices you control, no credentials on the server. Apache-2.0.","archived":false,"fork":false,"pushed_at":"2026-05-22T09:37:54.000Z","size":15350,"stargazers_count":3,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T11:45:38.622Z","etag":null,"topics":["agent-orchestration","agent-pipeline","ai-agents","claude","claude-code","local-first","mcp","mcp-server","nextjs","self-hosted","software-on-demand","tauri","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SidCorp-co.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2026-04-19T07:37:56.000Z","updated_at":"2026-05-22T09:37:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SidCorp-co/forge","commit_stats":null,"previous_names":["sidcorp-co/forge"],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/SidCorp-co/forge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidCorp-co%2Fforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidCorp-co%2Fforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidCorp-co%2Fforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidCorp-co%2Fforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SidCorp-co","download_url":"https://codeload.github.com/SidCorp-co/forge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SidCorp-co%2Fforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33448592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-24T19:21:36.376Z","status":"ssl_error","status_checked_at":"2026-05-24T19:21:10.562Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["agent-orchestration","agent-pipeline","ai-agents","claude","claude-code","local-first","mcp","mcp-server","nextjs","self-hosted","software-on-demand","tauri","typescript"],"created_at":"2026-05-01T07:04:46.818Z","updated_at":"2026-05-24T20:04:08.397Z","avatar_url":"https://github.com/SidCorp-co.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Forge\n\n\u003e The open-source AI-powered software lifecycle platform. Manage software from\n\u003e build through maintain — powered by Claude Code on devices you control.\n\n[![CI](https://github.com/SidCorp-co/forge/actions/workflows/ci.yml/badge.svg)](https://github.com/SidCorp-co/forge/actions/workflows/ci.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)\n[![Status](https://img.shields.io/badge/status-alpha-yellow.svg)]()\n\n**Status:** alpha — not production-ready. Expect breaking changes across `v0.x`.\n\n## What it is\n\nForge is an open-source **AI-powered software lifecycle platform**. You keep\nusing `claude` on your own machine with your own Claude Pro/Max subscription.\nForge adds the layer around it: a web dashboard to manage projects from build\nthrough maintenance, a configurable pipeline that routes issues through stages,\nand a full audit trail of every job. The server never holds your Claude\ncredentials.\n\n- **Devices pair into your account.** Your laptop, desktop, or CI box runs the\n  Forge agent, which spawns `claude` locally. The server never holds Claude\n  credentials.\n- **Issues flow in from anywhere.** GitHub webhooks, Sentry alerts, Stripe\n  events, your own API — point a webhook at Forge, it becomes an issue.\n- **A configurable pipeline routes work.** Default flow: triage → clarify →\n  plan → code → review → test → release. Per stage: auto-run or human gate.\n  Shorten, extend, or replace it per project.\n- **Every job is captured.** stdout, stderr, tool calls, diffs, token usage —\n  streamed to the dashboard in real time, resumable on disconnect, replayable\n  later.\n- **Extensible.** Author your own skills, define your own pipeline stages,\n  bring your own runner.\n- **Multi-project, multi-device.** One Forge instance coordinates many\n  projects. Each project binds to devices from a pool; one active at a time.\n\nThink **GitHub Actions self-hosted runners, for Claude Code.** Devices yours.\nCompute yours. Orchestration open-source.\n\n## What it is NOT\n\n- Not a Claude Code replacement — we orchestrate the CLI, we don't reimplement.\n- Not a chat UI — the primary surface is a pipeline dashboard.\n- Not a tool that uses the Anthropic API — we never hold Claude credentials.\n- Not enterprise PM — no complex RBAC in `v0.x`.\n\n## Quickstart\n\n```bash\ngit clone https://github.com/SidCorp-co/forge.git\ncd forge\ncp .env.example .env\ndocker compose up -d\n```\n\n- Core API: \u003chttp://localhost:8080\u003e\n- Web dashboard: \u003chttp://localhost:3000\u003e\n\nInstall the desktop agent (spawns `claude` on your machine) from\n[Releases](https://github.com/SidCorp-co/forge/releases), or run\n`forged pair \u003ccode\u003e` once the CLI daemon ships.\n\nFull walkthrough: [docs/quickstart.md](docs/quickstart.md).\n\n## Architecture\n\n```\n  Your browser / phone                 Your machine(s)\n  ┌──────────────┐                     ┌──────────────────────┐\n  │ web (Next.js)│                     │ Device agent         │\n  │ dashboard    │                     │ - Tauri GUI (dev), or│\n  │              │                     │ - CLI daemon (forged)│\n  └──────┬───────┘                     │                      │\n         │ REST + WebSocket            │ runs `claude` locally│\n         ▼                             │ in a git worktree    │\n  ┌────────────────────────────────────┐└────────┬─────────────┘\n  │  Control plane (packages/core)     │         │\n  │  Hono + Drizzle + pg-boss + ws     │ WebSocket (events, jobs)\n  │  + MCP                             │◄────────┘\n  │  Pipeline engine, job dispatcher   │\n  │  NEVER holds Claude credentials    │\n  └──────────┬─────────────────────────┘\n             ▼\n       ┌──────────────────────┐\n       │ Postgres             │\n       │ state + jobs + vectors│\n       └──────────────────────┘\n```\n\nTwo key boundaries:\n\n1. **Control plane vs. runtime.** The server queues jobs and streams events.\n   Devices run Claude Code. A server compromise never leaks Claude credentials —\n   they live on your machines.\n2. **Dual-principal auth.** A user (JWT) and a device (long-lived revocable\n   token) are two separate principals. Shared policy layer enforces every\n   access.\n\nSee [docs/architecture/system-overview.md](docs/architecture/system-overview.md)\nand [RFC 0001](docs/rfcs/0001-device-runner-architecture.md).\n\n## Packages\n\n| Package | Role | Dev |\n|---------|------|-----|\n| [`packages/core/`](packages/core/) | Control plane: Hono + Drizzle + pg-boss + WebSocket + MCP | `pnpm dev` |\n| [`packages/web/`](packages/web/) | Next.js dashboard: kanban, replay, pipeline health, devices | `pnpm dev` |\n| [`packages/dev/`](packages/dev/) | Tauri desktop device agent (GUI form factor) | `pnpm tauri dev` |\n| `packages/forged/` | CLI daemon device agent (headless) — coming soon | — |\n| [`packages/contracts/`](packages/contracts/) | Shared TypeScript contracts | — |\n\n## How it works\n\n1. **Pair a device.** Account → Devices → \"Add device\" generates a pairing\n   code. Run `forged pair F9-3K7T-92XA` on your machine (or paste into the\n   Tauri app). Token stored in the OS keychain. Device appears online in the\n   dashboard.\n2. **Bind a project to a device.** Project → Settings → Runtime → pick a\n   device from your pool. First bind prompts for the repo's local path and\n   runs `git clone` if needed. One device active at a time per project.\n3. **An issue arrives.** Via webhook or created in the dashboard. Pipeline\n   enqueues the first stage (`forge-triage`) as a job.\n4. **The dispatcher picks a device.** Job pushed over WebSocket to the\n   project's active device. Device spawns `claude` locally, streams stdout /\n   tool calls / diffs back to the server.\n5. **You watch and gate.** Dashboard streams events real-time. Approve the\n   plan, reject the diff, move it along. Finished jobs advance the pipeline.\n6. **The server keeps receipts.** Every job has a full event log retained\n   30 days after termination. Issues persist.\n\n## Extending\n\n- **Skills** — author your own in `.claude/skills/` and register with a\n  pipeline stage.\n- **Pipeline stages** — modify the 14-status state machine for domain flows\n  (RFC required for public releases).\n- **Runners** — the device-agent runner is pluggable. Default runs `claude`\n  CLI; future runners can be anything that emits the Forge event protocol.\n\n## Roadmap\n\nSee [docs/VISION.md §8](docs/VISION.md#8-roadmap-horizons).\n\nCurrent focus: **v0.1** — device-runner architecture, job pipeline, session\nreplay, webhook ingestion.\n\n## Documentation\n\n- [Vision](docs/VISION.md) — concept, audience, non-goals, horizons\n- [Quickstart](docs/quickstart.md)\n- [Architecture](docs/architecture/system-overview.md)\n- [RFC 0001: Device-runner architecture](docs/rfcs/0001-device-runner-architecture.md)\n- [Decisions (ADRs)](docs/decisions/)\n- [Modules](docs/modules/)\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). The repo follows **Trunk-Based\nDevelopment** — single `main`, no `develop`, branches live \u003c1 day, feature\nflags absorb in-flight work. Rationale + rules:\n[ADR 0014](docs/decisions/0014-trunk-based-development.md).\n\nFirst-time? Look for\n[`good-first-issue`](https://github.com/SidCorp-co/forge/labels/good-first-issue).\n\nSignificant changes require an RFC — see [docs/rfcs/](docs/rfcs/) for format.\n\nSecurity vulnerabilities: **do not open public issues** — see\n[SECURITY.md](SECURITY.md).\n\n## License\n\n[Apache-2.0](LICENSE) © Forge contributors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsidcorp-co%2Fforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsidcorp-co%2Fforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsidcorp-co%2Fforge/lists"}