<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Multi-Agent Coordination on RockB</title><link>https://baeseokjae.github.io/tags/multi-agent-coordination/</link><description>Recent content in Multi-Agent Coordination on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 30 Jul 2026 16:03:18 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/multi-agent-coordination/index.xml" rel="self" type="application/rss+xml"/><item><title>Succubus: Cross-Agent Coordination Daemon for AI Coding Agents — Full Review</title><link>https://baeseokjae.github.io/posts/succubus-cross-agent-coordination-2026/</link><pubDate>Thu, 30 Jul 2026 16:03:18 +0000</pubDate><guid>https://baeseokjae.github.io/posts/succubus-cross-agent-coordination-2026/</guid><description>Succubus is a Go daemon that coordinates multiple AI coding agents via file claims, shared task boards, and lifecycle hooks — preventing conflicts in shared repositories.</description><content:encoded><![CDATA[<h2 id="what-is-succubus">What is Succubus?</h2>
<p>Succubus is an open-source, single-binary daemon written in Go that coordinates multiple AI coding agents working on the same repository. It prevents the &ldquo;blind multi-agent&rdquo; problem — where two or more AI agents edit the same files without knowing about each other — by providing file claims with lease-based locking, a shared task board, inter-agent communication, and a real-time dashboard. Created by enowx labs and released on July 28, 2026, Succubus supports eight different AI coding tools including Claude Code, Codex CLI, Gemini CLI, Cursor CLI, and Aider, and integrates via both MCP server and mandatory lifecycle hooks.</p>
<h2 id="the-problem--why-do-ai-coding-agents-need-coordination">The Problem — Why Do AI Coding Agents Need Coordination?</h2>
<p>AI coding agents are becoming indispensable for software development. Developers routinely run multiple agents in parallel — one refactoring a backend module while another updates tests and a third writes documentation. The problem is that these agents operate in isolation. Each agent sees the repository as it was when it started, not as it is right now. When Agent A modifies <code>auth.go</code> and Agent B simultaneously rewrites the same function, the result is merge conflicts, lost work, and corrupted state.</p>
<p>This is the &ldquo;blind multi-agent&rdquo; problem. Without a coordination layer, each agent is a solo performer in what should be an ensemble production. The industry has tried various solutions — git hooks, manual task assignment, sequential agent runs — but none provide real-time awareness of what other agents are doing. Succubus addresses this gap by acting as a shared state server that every agent must register with before touching any file.</p>
<h2 id="architecture-overview--how-does-succubus-work">Architecture Overview — How Does Succubus Work?</h2>
<p>Succubus is a daemon process that runs on the developer&rsquo;s machine and exposes two integration surfaces: an MCP server for opt-in tool access, and lifecycle hooks for mandatory registration. The daemon uses an embedded SQLite database (via <code>modernc.org/sqlite</code>, its only non-stdlib dependency) to store agent identities, file claims, task board items, and agent room messages.</p>
<h3 id="one-binary-four-modes">One Binary, Four Modes</h3>
<p>Succubus ships as a single Go 1.26 binary with four operating modes:</p>
<ul>
<li><strong>Daemon mode</strong> — runs the background server that manages all coordination state</li>
<li><strong>Dashboard mode</strong> — serves a real-time web UI built with React 19 and Vite</li>
<li><strong>CLI mode</strong> — command-line interface for manual queries and management</li>
<li><strong>MCP server mode</strong> — exposes coordination primitives as MCP tools for agent consumption</li>
</ul>
<p>The binary is cross-platform, supporting macOS, Linux, and Windows on both amd64 and arm64 architectures. There are no runtime dependencies — no Node.js, no Python, no database server. Just a single executable.</p>
<h3 id="storage-and-project-identity">Storage and Project Identity</h3>
<p>Succubus stores all state in an embedded SQLite database. Project identity is derived from the git remote URL: the remote is normalized and hashed with SHA-256, and the first 12 hex characters become the project ID. This means a single Succubus daemon can serve multiple projects on the same machine, with each project&rsquo;s state fully isolated by its project ID.</p>
<p>Agent identity is cached locally at <code>.succubus/agent-&lt;session&gt;.json</code>, which survives context compaction — a critical detail for agents like Claude Code that may lose context between sessions. When an agent resumes work, it reads its cached identity rather than registering as a new agent.</p>
<h2 id="key-features--what-can-succubus-do">Key Features — What Can Succubus Do?</h2>
<h3 id="agent-identity-and-registration">Agent Identity and Registration</h3>
<p>Every agent that connects to Succubus receives a curated identity from a pool of 32 names — ORION, VESPER, KESTREL, NEXUS, and others. These identities persist across sessions via the local cache file, enabling the daemon to track agent history, heartbeat status, and claim ownership over time.</p>
<p>The heartbeat system uses three thresholds: agents ping every 30 seconds, are marked idle after 90 seconds of silence, and are declared dead after 300 seconds. This allows the daemon to detect crashed or disconnected agents and release their file claims automatically.</p>
<h3 id="file-claims-with-intelligent-leases">File Claims with Intelligent Leases</h3>
<p>The file claim system is Succubus&rsquo;s core feature. When an agent wants to edit a file, it must first claim it. The claim is a conditional UPSERT operation with a default TTL of 900 seconds (15 minutes). Claims can be released under four conditions:</p>
<ol>
<li><strong>Freed</strong> — the agent voluntarily releases the claim after finishing edits</li>
<li><strong>Expired</strong> — the TTL elapses without renewal</li>
<li><strong>Renewal</strong> — the agent extends its claim (normal operation for long edits)</li>
<li><strong>Dead holder</strong> — the agent&rsquo;s heartbeat stops and it&rsquo;s declared dead</li>
</ol>
<p>This design elegantly handles edge cases. If an agent crashes mid-edit, its claims expire automatically. If an agent is slow but still alive, it renews its lease. If two agents want the same file, the second one is told who holds the claim and can either wait or negotiate via the agent room.</p>
<h3 id="shared-plan-and-task-board">Shared Plan and Task Board</h3>
<p>Succubus includes a Kanban-style task board with dependency tracking and cycle detection. Agents can create tasks, assign them to specific agents (or leave them unassigned), mark dependencies between tasks, and update status. The board supports the full Kanban workflow: backlog, in progress, in review, and done.</p>
<p>The cycle detection is particularly important for multi-agent workflows. If Agent A depends on Agent B, and Agent B depends on Agent A, the system flags the circular dependency before work begins — preventing the kind of deadlock that can stall an entire multi-agent pipeline.</p>
<h3 id="agent-room-for-inter-agent-communication">Agent Room for Inter-Agent Communication</h3>
<p>One of Succubus&rsquo;s most innovative features is the agent room — a shared Q&amp;A space where agents can ask each other questions, mention specific agents with @mentions, and track resolution status. This enables patterns like:</p>
<ul>
<li>Agent A: &ldquo;I need to refactor <code>auth.go</code> — does anyone hold a claim on it?&rdquo;</li>
<li>Agent B: &ldquo;I do, but I&rsquo;m almost done. Wait 2 minutes.&rdquo;</li>
<li>Agent A: &ldquo;Confirmed. I&rsquo;ll claim it after your release.&rdquo;</li>
</ul>
<p>Without the agent room, this kind of coordination would require human intervention. With it, agents can self-coordinate, reducing the human&rsquo;s role to oversight rather than traffic control.</p>
<h3 id="real-time-dashboard">Real-Time Dashboard</h3>
<p>The dashboard is embedded directly in the Succubus binary — no separate build step, no deployment. It&rsquo;s built with React 19 and Vite, uses lucide-react for icons, and deliberately avoids Tailwind and component libraries. The dashboard shows:</p>
<ul>
<li>Active agents and their heartbeat status</li>
<li>Current file claims with remaining TTL</li>
<li>Task board with dependency graph</li>
<li>Agent room messages and resolution status</li>
<li>System health and configuration</li>
</ul>
<p>This gives human developers real-time visibility into what their AI agents are doing — essential for trust and oversight in multi-agent workflows.</p>
<h2 id="tool-support-and-integration--which-agents-can-use-succubus">Tool Support and Integration — Which Agents Can Use Succubus?</h2>
<p>Succubus supports eight AI coding tools out of the box:</p>
<table>
  <thead>
      <tr>
          <th>Tool</th>
          <th>Integration Type</th>
          <th>Notes</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Claude Code</td>
          <td>Hooks + MCP</td>
          <td>Full support with lifecycle hooks</td>
      </tr>
      <tr>
          <td>Factory Droid</td>
          <td>Hooks + MCP</td>
          <td>Full support</td>
      </tr>
      <tr>
          <td>Codex CLI</td>
          <td>Hooks + MCP</td>
          <td>Full support</td>
      </tr>
      <tr>
          <td>Gemini CLI</td>
          <td>Hooks + MCP</td>
          <td>Full support</td>
      </tr>
      <tr>
          <td>OpenCode</td>
          <td>Hooks + MCP</td>
          <td>Full support</td>
      </tr>
      <tr>
          <td>Cursor CLI</td>
          <td>Hooks + MCP</td>
          <td>Full support</td>
      </tr>
      <tr>
          <td>Copilot CLI</td>
          <td>Hooks + MCP</td>
          <td>Full support</td>
      </tr>
      <tr>
          <td>Aider</td>
          <td>Hooks + MCP</td>
          <td>Full support</td>
      </tr>
  </tbody>
</table>
<h3 id="mcp-server">MCP Server</h3>
<p>The MCP (Model Context Protocol) server exposes Succubus&rsquo;s coordination primitives as tools that agents can call. This is the opt-in integration path — agents that support MCP can discover and use Succubus&rsquo;s features without any custom configuration. The MCP server provides tools for claiming files, querying the task board, sending agent room messages, and checking agent status.</p>
<h3 id="lifecycle-hooks">Lifecycle Hooks</h3>
<p>Lifecycle hooks are the mandatory integration path — and this is Succubus&rsquo;s key design insight. Hooks are shell scripts that run before and after every agent operation (file read, file write, command execution). They register the agent with the daemon, claim files before edits, and release claims after edits. Because hooks are mandatory (they run as part of the agent&rsquo;s execution environment), agents cannot opt out of coordination.</p>
<p>The hooks are designed with a &ldquo;degrade to nothing&rdquo; philosophy: if the Succubus daemon is not running, the hooks exit silently and let the agent proceed normally. This means Succubus never blocks development — it only adds coordination when the daemon is available.</p>
<h3 id="agentsmd-and-agent-skills">AGENTS.md and Agent Skills</h3>
<p>Succubus also generates an <code>AGENTS.md</code> file in the project root that describes the coordination rules and agent identities. This file serves as a shared context document that every agent reads at startup, ensuring consistent behavior across different agent types. Combined with agent skills (reusable instruction sets), this creates a comprehensive coordination framework that goes beyond simple file locking.</p>
<h2 id="enforcement-tiers--how-strict-is-the-coordination">Enforcement Tiers — How Strict Is the Coordination?</h2>
<p>Succubus offers three enforcement tiers that let teams choose their comfort level:</p>
<table>
  <thead>
      <tr>
          <th>Tier</th>
          <th>Behavior</th>
          <th>Use Case</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Off</strong></td>
          <td>Hooks register agents but do not enforce claims</td>
          <td>Exploration and evaluation</td>
      </tr>
      <tr>
          <td><strong>Nag</strong> (default)</td>
          <td>Hooks warn when agents violate claims but do not block</td>
          <td>Teams building trust in the system</td>
      </tr>
      <tr>
          <td><strong>Block</strong></td>
          <td>Hooks prevent agents from editing claimed files</td>
          <td>Production multi-agent workflows</td>
      </tr>
  </tbody>
</table>
<p>The default is &ldquo;nag&rdquo; — a gentle reminder that another agent holds the claim. This lets teams adopt Succubus gradually, starting with awareness and moving to enforcement as they gain confidence.</p>
<h2 id="how-file-claims-work--technical-deep-dive">How File Claims Work — Technical Deep Dive</h2>
<p>The file claim system uses a conditional UPSERT pattern in SQLite. When an agent requests a claim on <code>src/auth.go</code>, the daemon executes:</p>
<ol>
<li>Check if a claim exists for <code>src/auth.go</code> with an active (non-expired) lease</li>
<li>If no claim exists, insert a new claim with the requesting agent&rsquo;s identity and a 900-second TTL</li>
<li>If a claim exists and is held by the same agent, renew the TTL</li>
<li>If a claim exists and is held by a different agent, return the current holder&rsquo;s identity</li>
</ol>
<p>The TTL is refreshed on every heartbeat, so as long as the agent is alive and working, its claims remain valid. If the agent crashes, the heartbeat stops, the agent is declared dead after 300 seconds, and all its claims are released.</p>
<p>This design is remarkably robust. It handles:</p>
<ul>
<li><strong>Graceful shutdown</strong>: agent releases all claims before exiting</li>
<li><strong>Crash recovery</strong>: claims expire via TTL</li>
<li><strong>Network partition</strong>: agent reconnects and renews claims</li>
<li><strong>Long-running edits</strong>: agent periodically renews its lease</li>
<li><strong>Dead agent detection</strong>: heartbeat timeout triggers claim release</li>
</ul>
<h2 id="comparison-with-alternatives">Comparison with Alternatives</h2>
<p>Succubus is not the only tool attempting to solve multi-agent coordination. Here is how it compares with the alternatives:</p>
<table>
  <thead>
      <tr>
          <th>Feature</th>
          <th>Succubus</th>
          <th>Bazinga</th>
          <th>Batty</th>
          <th>Forge Orchestrator</th>
          <th>Agent Hub MCP</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Language</td>
          <td>Go 1.26</td>
          <td>N/A</td>
          <td>N/A</td>
          <td>Rust</td>
          <td>N/A</td>
      </tr>
      <tr>
          <td>Binary size</td>
          <td>~10MB</td>
          <td>N/A</td>
          <td>N/A</td>
          <td>~3MB</td>
          <td>N/A</td>
      </tr>
      <tr>
          <td>File claims</td>
          <td>Yes (TTL leases)</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Task board</td>
          <td>Yes (Kanban + deps)</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Agent room</td>
          <td>Yes</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Dashboard</td>
          <td>Yes (React 19)</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>MCP server</td>
          <td>Yes (opt-in)</td>
          <td>No</td>
          <td>No</td>
          <td>Yes (only)</td>
          <td>Yes (only)</td>
      </tr>
      <tr>
          <td>Lifecycle hooks</td>
          <td>Yes (mandatory)</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Enforcement tiers</td>
          <td>3 tiers</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Tool support</td>
          <td>8 agents</td>
          <td>1 agent</td>
          <td>1 agent</td>
          <td>Limited</td>
          <td>Limited</td>
      </tr>
      <tr>
          <td>Dependencies</td>
          <td>1 (SQLite)</td>
          <td>N/A</td>
          <td>N/A</td>
          <td>Minimal</td>
          <td>N/A</td>
      </tr>
      <tr>
          <td>License</td>
          <td>MIT</td>
          <td>MIT</td>
          <td>MIT</td>
          <td>MIT</td>
          <td>MIT</td>
      </tr>
  </tbody>
</table>
<p><strong>Bazinga</strong> focuses on enforced engineering practices and code quality gates rather than cross-agent coordination. It is a useful tool for ensuring agents follow coding standards, but it does not solve the file conflict problem.</p>
<p><strong>Batty</strong> runs teams of AI coding agents in tmux sessions with test gating. Its approach is more about parallel execution orchestration than shared awareness — agents run in isolated terminals without knowing about each other.</p>
<p><strong>Forge Orchestrator</strong> is the closest alternative in terms of design philosophy. It is a 3MB Rust binary that coordinates multi-AI agents via MCP. However, it relies exclusively on MCP (no hook system), meaning agents must opt in to coordination. Succubus&rsquo;s hook-based approach ensures every agent participates, whether they support MCP or not.</p>
<p><strong>Agent Hub MCP</strong> provides universal coordination via MCP but lacks the hook-based enforcement that makes Succubus&rsquo;s coordination mandatory. It is a lighter-weight solution for teams that already use MCP-compatible agents exclusively.</p>
<p><strong>OpenRig</strong> takes a different approach entirely — it is a control plane for multi-agent coding topologies, more focused on infrastructure management than per-file coordination.</p>
<h2 id="getting-started-with-succubus">Getting Started with Succubus</h2>
<p>Getting started with Succubus is straightforward:</p>
<ol>
<li><strong>Download the binary</strong> from the GitHub releases page for your platform</li>
<li><strong>Start the daemon</strong>: <code>succubus daemon</code></li>
<li><strong>Install hooks</strong> in your project: <code>succubus install-hooks</code></li>
<li><strong>Configure enforcement tier</strong> in <code>.succubus/config.yaml</code> (default: nag)</li>
<li><strong>Run your AI coding agents</strong> as normal — hooks handle registration automatically</li>
<li><strong>Open the dashboard</strong> at <code>http://localhost:8080</code> to see real-time activity</li>
</ol>
<p>The daemon runs in the background and consumes minimal resources — the embedded SQLite database and Go runtime keep memory usage under 50MB in typical use.</p>
<h2 id="faq">FAQ</h2>
<h3 id="what-problem-does-succubus-solve">What problem does Succubus solve?</h3>
<p>Succubus solves the &ldquo;blind multi-agent&rdquo; problem where multiple AI coding agents edit the same repository without awareness of each other, causing file conflicts, lost work, and merge issues. It provides real-time coordination through file claims, shared task boards, and inter-agent communication.</p>
<h3 id="does-succubus-work-with-all-ai-coding-agents">Does Succubus work with all AI coding agents?</h3>
<p>Succubus supports eight AI coding tools out of the box: Claude Code, Factory Droid, Codex CLI, Gemini CLI, OpenCode, Cursor CLI, Copilot CLI, and Aider. It integrates via both MCP server (opt-in) and lifecycle hooks (mandatory), so any agent that supports shell hooks can be integrated.</p>
<h3 id="will-succubus-block-my-work-if-the-daemon-crashes">Will Succubus block my work if the daemon crashes?</h3>
<p>No. Succubus follows a &ldquo;degrade to nothing&rdquo; philosophy — if the daemon is not running, the lifecycle hooks exit silently and agents proceed normally. The daemon never blocks development; it only adds coordination when available.</p>
<h3 id="how-does-succubus-handle-crashed-agents">How does Succubus handle crashed agents?</h3>
<p>Succubus uses a heartbeat system where agents ping every 30 seconds. If an agent misses heartbeats for 90 seconds it is marked idle, and after 300 seconds it is declared dead. All file claims held by a dead agent are automatically released, preventing permanent locks.</p>
<h3 id="is-succubus-free-and-open-source">Is Succubus free and open source?</h3>
<p>Yes. Succubus is released under the MIT license and is available on GitHub at github.com/enowdev/succubus. It is written entirely in Go 1.26 with exactly one non-stdlib dependency (modernc.org/sqlite), making it easy to build from source or use the pre-built binaries.</p>
<h2 id="conclusion--is-succubus-ready-for-production">Conclusion — Is Succubus Ready for Production?</h2>
<p>Succubus is remarkably polished for a project that is less than a week old. The architecture is clean, the design decisions are well-considered, and the implementation is minimal and focused. The hook-based registration system is the right approach for solving the blind multi-agent problem — it ensures participation without requiring agent modifications.</p>
<p>The file claim system with conditional UPSERT and TTL-based leases handles edge cases that more naive implementations would miss. The agent room enables a level of self-coordination that reduces human overhead. The dashboard provides the visibility that teams need to trust autonomous agents.</p>
<p>The main risk is maturity. With 13 GitHub stars and 2 forks as of July 2026, Succubus has not been battle-tested at scale. The single-developer (enowx labs) backing means bus-factor is a concern. However, the MIT license means the project can be forked and maintained independently if needed.</p>
<p>For teams running multiple AI coding agents on the same repository, Succubus is worth evaluating today. The &ldquo;nag&rdquo; enforcement tier provides a low-risk way to test the system, and the &ldquo;degrade to nothing&rdquo; design means there is no downside to installing the hooks. As multi-agent workflows become the norm in software development, tools like Succubus will transition from nice-to-have to essential infrastructure.</p>
]]></content:encoded></item></channel></rss>