Open to Backend, GenAI & Full-Stack roles · remote or Hyderabad

Projects

Agent Frameworks & Infrastructure

MindForge

Agentic-intelligence framework for Claude Code.

3 min read · 543 words

View repo 1,822 commits updated yesterday
Node.js TypeScript MCP sql.js SSE

Multi-agent AI workflows are powerful but chaotic: unbounded token spend, logic drift in long loops, and no audit trail. MindForge is a command-driven orchestration framework for Claude Code that brings governance to that chaos.

It exposes 221 slash commands, 164 specialized subagents, and 354 skills plus a hooks system, cost-aware model routing (Haiku/Sonnet/Opus tier escalation), and SHA-256 audit chains. A unit-tested wave engine over a dependency DAG, with audit events streamed over SSE and an embedded sql.js store. Ships as npx mindforge-cc, which also installs for Antigravity, Cursor, Copilot, Gemini CLI and OpenCode, with hooks enforced on Claude Code only.

  • 221 commands · 164 subagents · 354 skills — 152 subagents adapted from VoltAgent's awesome-claude-code-subagents (MIT)
  • Wave execution via a DAG + dependency tracking in a unit-tested JS engine
  • Cost-aware routing + audit/replay via hash-linked logs
  • Built on a pure Node.js + WASM runtime with a strict-TypeScript SDK

1,822 commits on main as of 2026-10-21, the most of any project in this portfolio; 0 stars.

Architecture

MindForge splits into four load-bearing subsystems. Wave execution (bin/autonomous/wave-executor.js + dependency-dag.js) topologically sorts tasks with Kahn's algorithm, detects cycles explicitly, and groups the result into waves bounded by a hand-rolled Semaphore. Model routing (bin/models/model-router.js) maps personas to model tiers — planner and security personas escalate to Opus, executor/reviewer/QA run on Sonnet, quick tasks run on Haiku — configurable via MINDFORGE.md. Governance (bin/governance/audit-hash.js + audit-verifier.js, paired with bin/autonomous/audit-writer.js) is one canonical SHA-256 hasher shared by writer and verifier, chaining each entry to the one before it. Persistence splits in two: resumable session state lives in .planning/HANDOFF.json via state-manager.js, while a separate embedded sql.js datastore (celestial.db) holds traces, remediations, skills, and knowledge. Streaming is MindForgeEventStream (sdk/src/events.ts), a localhost-only SSE server that tails .planning/AUDIT.jsonl, in an SDK with zero runtime dependencies; its WebSocketEventStream is a client only, as MindForge ships no WebSocket server.

The repo's own capabilities manifest states the limit: the bin/autonomous/ engine is unit-tested but not yet wired to any live command path. AutoRunner has no production caller, mindforge headless is a stub that exits 1, and /mindforge:auto and /mindforge:execute-phase are markdown specs the model follows.

How It Works

Steps 1, 2 and 5 belong to the unit-tested engine, which no live command calls yet (the council reuses only its Semaphore); steps 3, 4 and 6 are reachable today.

  1. dependency-dag.js builds a DAG from a plan's declared dependencies and topologically sorts it into waves — a circular dependency throws immediately instead of deadlocking silently.
  2. Within a wave, wave-executor.js's Semaphore caps how many tasks run concurrently.
  3. A model tier resolves through model-router.js's persona map when model-client.js is asked for a model (the council, cross-review and research engines do); difficulty-scorer.js would log a shadow route to stderr given a taskContext, but nothing in bin/ passes one yet.
  4. Lifecycle hooks append entries to the local audit log through audit-writer.js, hashing each against the previous entry's hash via audit-hash.js — a tamper-evident chain, though the log itself (.planning/AUDIT.jsonl) is gitignored, so it protects a local run rather than git history.
  5. State — tasks, waves, audit pointers — persists to .planning/HANDOFF.json via state-manager.js, so a session can resume after a crash.
  6. Once started and pointed at a project, MindForgeEventStream's /events endpoint streams new audit entries as audit_entry events to any local client; verify-audit.js can independently replay the chain and fails closed the moment a hash breaks.