{"id":44840773,"url":"https://github.com/stoneforge-ai/stoneforge","last_synced_at":"2026-04-02T13:57:45.062Z","repository":{"id":338874015,"uuid":"1157643045","full_name":"stoneforge-ai/stoneforge","owner":"stoneforge-ai","description":"A web dashboard and runtime for orchestrating AI coding agents","archived":false,"fork":false,"pushed_at":"2026-03-29T02:16:43.000Z","size":84967,"stargazers_count":92,"open_issues_count":1,"forks_count":15,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-29T05:14:15.768Z","etag":null,"topics":["agent-framework","agents","ai","ai-agents","event-sourcing","llm","multi-agent","orchestration","typescript"],"latest_commit_sha":null,"homepage":"https://stoneforge.ai","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/stoneforge-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["adamking"]}},"created_at":"2026-02-14T04:34:42.000Z","updated_at":"2026-03-29T02:10:32.000Z","dependencies_parsed_at":"2026-02-20T07:05:39.086Z","dependency_job_id":null,"html_url":"https://github.com/stoneforge-ai/stoneforge","commit_stats":null,"previous_names":["stoneforge-ai/stoneforge"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/stoneforge-ai/stoneforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoneforge-ai%2Fstoneforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoneforge-ai%2Fstoneforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoneforge-ai%2Fstoneforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoneforge-ai%2Fstoneforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stoneforge-ai","download_url":"https://codeload.github.com/stoneforge-ai/stoneforge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoneforge-ai%2Fstoneforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31307413,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"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-framework","agents","ai","ai-agents","event-sourcing","llm","multi-agent","orchestration","typescript"],"created_at":"2026-02-17T03:14:27.101Z","updated_at":"2026-04-02T13:57:45.055Z","avatar_url":"https://github.com/stoneforge-ai.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"brand/logo.svg\" alt=\"Stoneforge\" width=\"180\" height=\"180\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eStoneforge\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA web dashboard and runtime for orchestrating AI coding agents\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#before-you-start\"\u003eBefore You Start\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#why-stoneforge\"\u003eWhy Stoneforge?\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#quick-start\"\u003eQuick Start\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#how-it-works\"\u003eHow It Works\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#the-web-dashboard\"\u003eWeb Dashboard\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#customization\"\u003eCustomization\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#development\"\u003eDevelopment\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-Apache%202.0-blue.svg\" alt=\"License: Apache 2.0\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg\" alt=\"Node.js: \u003e=18.0.0\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/bun-supported-orange.svg\" alt=\"Bun: supported\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-5.0+-blue.svg\" alt=\"TypeScript: 5.0+\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/React-19-61dafb.svg\" alt=\"React: 19\"\u003e\n  \u003ca href=\"https://discord.gg/NBCaUUv8Vm\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Before You Start\n\nStoneforge is **early-stage, experimental software** under active development. Expect sharp edges.\n\nThis tool is built for developers who are **already running 3–5 AI coding agents in parallel** and need a better system for coordinating them. If that doesn't describe you, Stoneforge is probably not what you're looking for right now.\n\nWhat you should know before going further:\n\n- **Token consumption is high.** Stoneforge dispatches work to multiple agents continuously. A typical session can burn through several Claude MAX/Pro or Codex subscriptions worth of tokens per week. This is by design — it's the cost of running a parallel team.\n- **Agents run autonomously.** Stoneforge spawns agents with permissions bypassed — there are no human approval gates before agents take actions. This is intentional; approval prompts would bottleneck a parallel pipeline. But it means agents will read, write, execute, and push code without asking. Use this at your own risk.\n- **Things move fast.** Stoneforge is under active development. New capabilities ship weekly, defaults may change, and documentation sometimes lags behind the code. Published packages follow [semver](https://semver.org/) with changelogs, so breaking changes are always signaled. We [build in the open](https://x.com/notadamking) and iterate quickly.\n\nIf a single coding agent handles your workload today, you probably don't need this yet. It'll be here once you start running multiple agents in parallel.\n\n---\n\n## Why Stoneforge?\n\nRunning one AI coding agent is simple. Running several in parallel — a planner, coders, a reviewer — breaks down fast:\n\n- **Merge conflicts** — agents edit the same files on the same branch\n- **Wasted work** — two agents grab the same task, or one starts on work that's blocked\n- **Lost context** — when an agent fails mid-task, the next one starts from scratch\n- **No visibility** — you can't see what's happening until you check each terminal\n\nStoneforge is a multi-agent orchestration platform that solves these problems. Install it, start the server, and use the web dashboard to direct a team of AI coding agents. A Director plans the work, Workers execute in isolated git worktrees, Stewards auto-merge and clean up, and a dispatch daemon keeps everyone busy.\n\nBeyond orchestration, Stoneforge merges the entire software project management stack into one agent-first platform — issues and tasks (replacing Linear/GitHub Issues), notes and documents (replacing Notion/Obsidian), messages and chats (replacing Slack/Discord), code and branches (replacing manual git workflows), and merge requests (replacing GitHub PR workflows). Everything lives in one system so agents never lose context switching between tools.\n\nStoneforge has two main layers:\n\n- **Smithy** (`@stoneforge/smithy`) — the orchestrator. Spawns agents, dispatches tasks, manages sessions, handles worktree isolation and merge review. **This is what you install.**\n- **Quarry** (`@stoneforge/quarry`) — the underlying data SDK. Event-sourced task management, sync, and storage. Used by smithy internally; also available standalone for custom integrations.\n\n### How is it different?\n\nClaude Code now has an experimental [agent teams](https://docs.anthropic.com/en/docs/claude-code/agent-teams) feature — here's how Stoneforge compares:\n\n|                          | Claude Code Agent Teams                                           | Stoneforge                                                                                                                                                        |\n| ------------------------ | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **State**                | Ephemeral — file-based task list, no persistence across sessions  | Event-sourced — SQLite + JSONL, survives restarts, full audit trail                                                                                               |\n| **UI**                   | Terminal-only (tmux split panes or inline)                        | Web dashboard with real-time agent output, kanban boards, metrics                                                                                                 |\n| **Branch isolation**     | Manual — \"avoid editing the same file\"                            | Automatic — each worker gets its own git worktree                                                                                                                 |\n| **Task dispatch**        | Lead assigns or teammates self-claim                              | Dispatch daemon auto-assigns by priority, respects dependencies                                                                                                   |\n| **Merge**                | Manual                                                            | Merge steward runs tests, squash-merges on pass, creates fix task on fail                                                                                         |\n| **Communication**        | Lead-mediated messages, broadcast                                 | Persistent channels with threading, inbox triage, searchable history                                                                                              |\n| **Knowledge base**       | CLAUDE.md only                                                    | Versioned document libraries with FTS5 + semantic search                                                                                                          |\n| **Structured processes** | Ad-hoc task lists                                                 | Playbook templates → resumable workflows with durable state                                                                                                       |\n| **Provider lock-in**     | Claude Code only                                                  | Claude Code, OpenCode, or OpenAI Codex                                                                                                                            |\n| **Scaling**              | Single plan — limited by one account's rate limits                | Multi-plan — split agents across multiple Claude MAX/Pro plans via custom executable paths ([setup guide](packages/smithy/README.md#scaling-with-multiple-plans)) |\n| **Status**               | Experimental, known limitations (no session resumption, task lag) | Usable today — some edge cases still have sharp edges                                                                                                             |\n\nCompared to running a single agent (Claude Code, Cursor), Stoneforge gives you parallel execution with coordination. Compared to background agents (Cursor background agents, Codex), it adds dependency-aware scheduling, merge automation, and a persistent knowledge layer. Compared to custom scripts and task runners, you get a web dashboard, event-sourced state, and merge review built in.\n\n**What you get:**\n\n- **Real-time cross-agent communication** — channels, threads, and inbox triage so agents share context and escalate blockers without losing messages\n- **Linear-like issue tracking** — priorities, dependencies, scheduling, kanban views, and plan grouping — all visible in the web dashboard\n- **Evergreen documentation** — versioned document libraries with full-text and semantic search, so agents always have up-to-date project context\n- **Structured workflows** — playbook templates that instantiate into resumable task sequences with durable state — if a step fails, the workflow resumes from there, not from scratch\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- **Node.js 18+** or **Bun** (any recent version)\n\n### From Zero to Orchestrating\n\n```bash\n# 1. Install the Stoneforge CLI globally\nnpm install -g @stoneforge/smithy\n\n# 2. Initialize a workspace in your project\ncd your-project \u0026\u0026 sf init\n\n# 3. Start the server + web dashboard at http://localhost:3457\nsf serve\n\n# 4. Open the dashboard\nopen http://localhost:3457\n```\n\nOnce the dashboard is running:\n\n1. **Register a Director** — Agents page, or CLI: `sf agent register director --role director`\n2. **Start the Director** — Director Panel in the right sidebar, or CLI: `sf agent start \u003cid\u003e`\n3. **Register workers** — Agents page, or CLI: `sf agent register e-worker-1 --role worker`\n4. **Register a Merge Steward** — Agents page, or CLI: `sf agent register m-steward-1 --role steward --focus merge`\n5. **Tell the Director your goal** via the Director Panel\n6. **Watch it work** — Activity page shows live agent output, Tasks page shows progress, Merge Requests shows completed work\n\nAgents can use **Claude Code** (default), **OpenCode**, or **OpenAI Codex** as their underlying provider — set via `--provider` at registration or session start.\n\n---\n\n## How It Works\n\n### Agent Roles\n\n| Role                  | What It Does                                                                                                                                                                                                 |\n| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **Director**          | Your strategic planner. You describe a goal, the Director breaks it into tasks with priorities and dependencies. Runs as a persistent session.                                                               |\n| **Ephemeral Worker**  | Spawned automatically by the dispatch daemon to complete a specific task. Executes in an isolated worktree, commits, pushes, then completes or hands off. You register them and the daemon handles the rest. |\n| **Persistent Worker** | Started and stopped manually (by you) for one-off or exploratory work. Runs an interactive session and is not auto-dispatched for tasks.                                                                     |\n| **Steward**           | Handles maintenance workflows — merge review, documentation scanning, recovery of stuck tasks, custom repeatable workflows. Runs on triggers or schedules.                                                   |\n\nThe **dispatch daemon** is a background process (not an agent role) that watches for ready tasks and assigns them to idle workers. Start it with `sf daemon start`.\n\n### The Orchestration Loop\n\n```\n    You ──── \"Build feature X\" ────▶ Director\n                                        │\n                                   creates plan\n                                   with tasks\n                                        │\n                                        ▼\n                                  ┌────────────┐\n                                  │ Task Pool  │ ◀─── priorities, dependencies\n                                  └─────┬──────┘\n                                        │\n                              daemon assigns ready\n                              tasks to idle workers\n                                        │\n                        ┌───────────────┼────────────────┐\n                        ▼               ▼                ▼\n                  ┌───────────┐   ┌───────────┐    ┌───────────┐\n                  │  Worker1  │   │  Worker2  │    │  Worker3  │\n                  │(worktree) │   │(worktree) │    │ (worktree)|\n                  └────┬──────┘   └─────┬─────┘    └────┬──────┘\n                       │                │               │\n                commit \u0026 push    commit \u0026 push   commit \u0026 push\n                       │                │               │\n                       └────────────────┼───────────────┘\n                                        ▼\n                                ┌──────────────┐\n                                │    Steward   │\n                                │(merge review)│\n                                └──────┬───────┘\n                                       │\n                          tests pass? ──▶ squash-merge\n                          tests fail? ──▶ task handoff created\n```\n\n1. You communicate your goal to the Director (via Director Panel in the web UI)\n2. Director creates a plan with tasks, priorities, and dependencies\n3. Dispatch daemon detects ready (unblocked, unassigned) tasks, assigns to idle workers\n4. Workers spawn in isolated git worktrees (`agent/{worker-name}/{task-id}-{slug}`)\n5. Worker executes, commits, pushes, then completes (creating a PR / merge request) or hands off (returns task to queue with notes)\n6. Merge steward triggered — runs tests, squash-merges on pass / creates task handoff to new worker on fail\n7. Loop repeats for remaining tasks\n\n### Merge Review\n\nThe merge steward automates branch integration:\n\n- Runs your test command, squash-merges on pass, creates a task handoff to new worker on failure\n- Configurable: test command, merge strategy (squash/merge), auto-push, auto-cleanup\n- Merge provider is configurable: GitHub (PR-based) or local smithy (local merge requests w/ direct squash-merge)\n\n### Steward Types\n\n| Type         | Purpose                                                                          |\n| ------------ | -------------------------------------------------------------------------------- |\n| **Merge**    | Auto-reviews PRs, runs tests, squash-merges or creates task handoff              |\n| **Recovery** | Cleans up stuck merges and orphaned tasks                                        |\n| **Docs**     | (Optional) Scans and fixes documentation accuracy                                |\n| **Custom**   | (Optional) User-defined workflow templates triggered by cron schedules or events |\n\n### Workflows\n\nWorkflows are reusable sequences of tasks that execute in order with durable state. If a step fails, the workflow resumes from that step rather than restarting from scratch. Useful for multi-stage processes like build → test → deploy.\n\n### Handoff\n\nWhen a worker can't complete a task, it hands off — the task returns to the pool with context notes, and the next available worker picks it up with the existing branch and worktree intact.\n\n---\n\n## The Web Dashboard\n\nThe dashboard is organized by sidebar navigation groups. Open it at `http://localhost:3457` after running `sf serve`.\n\n### Overview\n\n- **Activity** — Active agents with live terminal output, recent completions, system status.\n- **Inbox** — Messages needing your attention from agents.\n- **Editor** — In-browser code editor with Monaco, LSP support, and direct file access.\n\n### Work\n\n- **Tasks** — List and Kanban views, status tabs (Backlog → Unassigned → Assigned → In Progress → Awaiting Merge → Closed), filtering, bulk ops.\n- **Merge Requests** — Review queue for agent PRs with status tracking and keyboard navigation.\n- **Plans** — Group related tasks, track plan-level progress.\n- **Workflows** — Define and manage reusable task sequences.\n\n### Orchestration\n\n- **Agents** — Register, start, stop agents. Tabs: Agents, Stewards, Pools (concurrency limits), Graph (visual topology).\n- **Workspaces** — tmux-like terminal multiplexer. Multiple agent terminals side-by-side with saved layouts.\n\n### Collaborate\n\n- **Messages** — Channel-based messaging between agents and operators.\n- **Documents** — Shared knowledge base with libraries and version history.\n\n### Analytics\n\n- **Metrics** — Task throughput, agent efficiency, queue health over configurable time ranges.\n\n### Director Panel\n\nAlways-available right sidebar with an interactive terminal for the Director agent. Start/stop/resume sessions, see unread inbox count.\n\n---\n\n## Customization\n\n### Custom Prompts\n\nOverride built-in role prompts per-project via `.stoneforge/prompts/`:\n\n- `director.md`, `worker.md`, `persistent-worker.md`\n- `steward-base.md`, `steward-merge.md`, `steward-docs.md`, `steward-recovery.md`\n\n### Custom Stewards\n\nRegister with `--focus custom`, attach cron/event triggers, and provide a workflow template.\n\n### Agent Pools\n\nControl concurrent execution with pool size limits. Manage via the Agents \u003e Pools tab in the dashboard or `sf pool create` from the CLI.\n\n### Providers\n\nDefault provider is **Claude Code**. Also supports **OpenCode** and **OpenAI Codex**. Set per-agent at registration (`--provider opencode`) or per-session at start.\n\nYou do **not** configure API keys in Stoneforge. Authentication is configured within the underlying agent harness CLI (Claude Code, OpenCode, or Codex) and passes through to Stoneforge automatically.\n\n---\n\n## Architecture\n\n### Dual Storage Model\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                         SQLite                              │\n│  • Fast queries with indexes                                │\n│  • Full-text search (FTS5)                                  │\n│  • Materialized views (blocked cache)                       │\n│  • Ephemeral — rebuilt from JSONL on sync                   │\n└────────────────────────────┬────────────────────────────────┘\n                             │ sync\n┌────────────────────────────▼────────────────────────────────┐\n│                         JSONL                               │\n│  • Git-tracked, append-only                                 │\n│  • Source of truth for all durable data                     │\n│  • Human-readable, diff-friendly                            │\n│  • Mergeable across branches                                │\n└─────────────────────────────────────────────────────────────┘\n```\n\n**Key Principle:** SQLite is the **cache**, JSONL is the **source of truth**.\n\n---\n\n## CLI Reference\n\nThe CLI is primarily used by agents internally — human operators mostly use the web dashboard. Full reference: [CLI Reference](apps/docs/src/content/docs/reference/cli.mdx).\n\n```\nsf serve                             Start server + dashboard\nsf agent register|start|stop|list    Manage agents\nsf daemon start|stop|status          Control dispatch daemon\nsf pool create|list|status           Manage agent pools\nsf task create|list|ready|close      Manage tasks\nsf merge                             Squash-merge branches\nsf init                              Initialize workspace\nsf doctor                            Check system health\n```\n\n---\n\n## Documentation\n\n| Resource                                                                             | Description                       |\n| ------------------------------------------------------------------------------------ | --------------------------------- |\n| [Introduction](apps/docs/src/content/docs/getting-started/introduction.mdx)         | Getting started guide             |\n| [Architecture Overview](apps/docs/src/content/docs/core-concepts/overview.mdx)      | Architecture deep-dive            |\n| [Orchestration Loop](apps/docs/src/content/docs/core-concepts/orchestration-loop.mdx) | Agent orchestration system      |\n| [Reference](apps/docs/src/content/docs/reference/)                                  | API and service reference         |\n| [Guides](apps/docs/src/content/docs/guides/)                                        | Task-oriented guides              |\n| [Core Concepts](apps/docs/src/content/docs/core-concepts/)                          | Conceptual documentation          |\n\nThe documentation site is built with Astro and lives in `apps/docs/`. For the most up-to-date internal documentation, run:\n\n```bash\n# Clone the repo\ngit clone https://github.com/stoneforge-ai/stoneforge\ncd stoneforge\n\n# Init Stoneforge (make sure you've globally installed stoneforge NPM package)\npnpm install \u0026\u0026 sf init\n\n# Start stoneforge server\nsf serve\n```\n\nThen go to the Documents page and open the Documentation library. Use the Documentation Directory document to find relevant documentation.\n\n---\n\n## Development\n\n\u003e **Note:** This section is for development and contributing to Stoneforge — not required for using the packages. To install Stoneforge for normal usage, see [Quick Start](#quick-start).\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/stoneforge-ai/stoneforge.git\ncd stoneforge\n\n# Install dependencies (uses pnpm)\npnpm install\n\n# Start the orchestrator (most common)\npnpm dev:smithy\n\n# Start everything (all 4 services)\npnpm dev\n\n# Start just the data platform (quarry only)\npnpm dev:platform\n```\n\n### Commands\n\n```bash\npnpm build      # Build all packages\npnpm test       # Run all tests\npnpm lint       # Lint all packages\npnpm typecheck  # Type-check all packages\npnpm clean      # Clean all build artifacts\n```\n\n### Using Stoneforge as a Library\n\nTo use Stoneforge packages in your own project:\n\n```bash\nnpm install @stoneforge/core @stoneforge/storage @stoneforge/quarry\n\n# Or install individual packages as needed\nnpm install @stoneforge/smithy    # Agent orchestration\nnpm install @stoneforge/ui        # React component library\n```\n\n```typescript\nimport { createQuarryAPI } from \"@stoneforge/quarry\";\nimport { createStorage, initializeSchema } from \"@stoneforge/storage\";\n\n// Create API instance\nconst storage = createStorage(\".stoneforge/stoneforge.db\");\ninitializeSchema(storage);\nconst api = createQuarryAPI(storage);\n\n// Create a task\nconst task = await api.create({\n  type: \"task\",\n  title: \"Implement feature X\",\n  priority: 2,\n  createdBy: entityId,\n});\n\n// Query ready work (unblocked, open tasks)\nconst ready = await api.ready();\n\n// Add a dependency\nawait api.addDependency({\n  blockerId: prerequisiteTask.id,\n  blockedId: task.id,\n  type: \"blocks\",\n});\n\n// Search documents with FTS5\nconst results = await api.searchDocumentsFTS(\"authentication flow\", {\n  hardCap: 10,\n});\n```\n\n### Package Dependency Graph\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    @stoneforge/smithy                       │\n│       Agent orchestration, spawning, sessions, prompts      │\n└────────────────────────────┬────────────────────────────────┘\n                             │\n┌────────────────────────────▼────────────────────────────────┐\n│                   @stoneforge/quarry                        │\n│        QuarryAPI, services, sync, CLI, identity             │\n└────────────────────────────┬────────────────────────────────┘\n                             │\n          ┌──────────────────┼───────────────────┐\n          │                  │                   │\n┌─────────▼─────────┐  ┌─────▼───────┐  ┌────────▼─────────┐\n│  @stoneforge/core │  │ @stoneforge │  │ @stoneforge/ui   │\n│  Types \u0026 IDs      │  │  /storage   │  │ React components │\n└───────────────────┘  └─────────────┘  └──────────────────┘\n```\n\n### Packages\n\n| Package                                               | Description                          | Key Exports                                               |\n| ----------------------------------------------------- | ------------------------------------ | --------------------------------------------------------- |\n| [`@stoneforge/core`](packages/core)                   | Shared types, errors, ID generation  | `ElementType`, `Task`, `Entity`, `Document`, `ErrorCode`  |\n| [`@stoneforge/storage`](packages/storage)             | SQLite backends (Bun, Node, Browser) | `createStorage`, `initializeSchema`, `StorageBackend`     |\n| [`@stoneforge/quarry`](packages/quarry)               | Core API, services, sync, CLI        | `QuarryAPI`, `SyncService`, `InboxService`, CLI commands  |\n| [`@stoneforge/smithy`](packages/smithy)               | Agent orchestration                  | `OrchestratorAPI`, `SpawnerService`, `SessionManager`     |\n| [`@stoneforge/ui`](packages/ui)                       | React 19 component library           | `Button`, `Card`, `TaskCard`, `EntityCard`, charts, hooks |\n| [`@stoneforge/shared-routes`](packages/shared-routes) | HTTP route factories                 | `createElementsRoutes`, `createEntityRoutes`, etc.        |\n\n### Applications\n\n| App                                   | Default Port | Description                  |\n| ------------------------------------- | ------------ | ---------------------------- |\n| [`quarry-server`](apps/quarry-server) | 3456         | Core Stoneforge API server   |\n| [`quarry-web`](apps/quarry-web)       | 5173         | Element management dashboard |\n| [`smithy-server`](apps/smithy-server) | 3457         | Agent orchestration API      |\n| [`smithy-web`](apps/smithy-web)       | 5174         | Agent management dashboard   |\n\n### Monorepo Structure\n\n```\nstoneforge/\n├── packages/\n│   ├── core/              # @stoneforge/core\n│   ├── storage/           # @stoneforge/storage\n│   ├── quarry/            # @stoneforge/quarry\n│   ├── smithy/            # @stoneforge/smithy\n│   ├── ui/                # @stoneforge/ui\n│   └── shared-routes/     # @stoneforge/shared-routes\n├── apps/\n│   ├── quarry-server/     # Core API server\n│   ├── quarry-web/        # Element dashboard\n│   ├── smithy-server/     # Orchestration API\n│   └── smithy-web/        # Agent dashboard\n├── docs/                  # Documentation\n└── .stoneforge/           # Project configuration \u0026 workspace\n```\n\n---\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\nAll contributors must sign a [Contributor License Agreement (CLA)](https://cla-assistant.io/stoneforge-ai/stoneforge) before their pull request can be merged. The CLA bot will prompt you automatically on your first PR.\n\n---\n\n## License\n\nThis project is licensed under the [Apache License 2.0](LICENSE).\n","funding_links":["https://github.com/sponsors/adamking"],"categories":["Multi-Agent \u0026 Orchestration"],"sub_categories":["Other IDEs"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstoneforge-ai%2Fstoneforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstoneforge-ai%2Fstoneforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstoneforge-ai%2Fstoneforge/lists"}