-
Notifications
You must be signed in to change notification settings - Fork 0
Differences from opencode
GraphAgent is a fork of opencode, not a replacement opinion about it. Everything upstream can do, this repository still does: multi-provider support, built-in LSP, the client/server split, TUI/desktop/web clients. The fork adds one big thing and several supporting ones.
Upstream opencode runs one agent loop, optionally with task subagents. GraphAgent adds the workflow engine on top:
| upstream opencode | GraphAgent | |
|---|---|---|
| Parallel work |
task subagents, fire-and-forget |
Dependency graph with wave scheduling, concurrency permits, per-node budgets |
| Quality control | Your prompts | Review gates that compile into independent standards/intent reviews plus arbitration; REJECT is a real outcome with a disposal contract |
| Durability | Session storage | Event-sourced workflow state; crash recovery reconciles from durable evidence, never replays provider work |
| Rewriting mid-flight | Kill and restart |
pause → replan (supersede/replace/cancel nodes) → resume; completed outputs survive; the view shows the current revision |
| Cost shaping | One model per session | Two tiers in dag.jsonc: judgment nodes on advanced, volume on standard
|
| Observability | Transcript | TUI DAG inspector (waves, live status, per-node detail), sidebar summaries, HTTP API for everything |
| Reuse | Custom commands | Named workflow libraries at project/global/builtin scopes; /dag-flow retargets curated reference topologies |
The engine is AGPL-licensed (see the README license table); the rest of the repository stays MIT, so if you never touch the DAG code, you are on plain upstream terms.
-
Autonomous goal loop (
/goal): a single-session complement to graphs — one durable goal worked across turns, judged externally, budgeted, resumable. - Hooks compatibility: the Claude Code hooks protocol (26 events × 5 execution types) on top of the native plugin system.
- Execution-location ownership: in multi-worktree setups, workflow rows carry a directory stamp checked on every ownership decision — sibling worktrees of one project cannot act on each other's graphs. This area shipped three rounds of hardening (issues #238, #269, #270) with mutation-tested probes.
- CJK/IME terminal fixes, per-workflow worktree isolation, and a standalone Go configuration assistant.
Pick upstream opencode if you want the mainstream project: the npm package, the community, updates tracking the original team.
Pick GraphAgent if your work looks like any of these:
- Tasks with staged dependencies where parallel slices genuinely help (multi-module refactors, audit-then-fix trains, parallel review lanes).
- Work that needs gates you can trust more than a prompt — review arbitration with fingerprint binding, red-first regression discipline.
- Long-running jobs that must survive restarts without redoing paid provider work.
- Situations where you want judgment on a strong model and volume on a cheap one, declared once in config.
Both can coexist: GraphAgent without the DAG features behaves as upstream opencode.
The fork tracks upstream periodically; upstream features land through merges, fork features land through the layered gate (feat/** → PR → dev typecheck gate → full suite on dev → four-gate PR to main incl. E2E on Linux and Windows → manual release dispatch). Releases carry curated notes; known limitations are listed, not hidden.