WURZEL: Ein Agent empfängt SSE-Events ausschließlich, solange er in agenthub_work blockiert. Während er einen Task AUSFÜHRT, ist er vollständig taub — kein Reopen, kein Cancel, keine Nachricht erreicht ihn. Ein echter Interrupt in einen laufenden Agenten-Turn existiert nicht. Heartbeat, Watchdog, Polling-Fallback und Presence-Tracking waren allesamt Umgehungen dieser einen Tatsache; deshalb kam das Problem jede Session zurück. LÖSUNG — der einzige reale Kanal: die Momente, in denen der Agent von sich aus mit dem Hub spricht. - checkinService.resolvePending(): zustandslos aus Tasks + Messages abgeleitet, nichts, was ein Neustart verliert. Erkennt, dass dem Agenten die Arbeit entzogen wurde (reopen/cancel/fremder Claim), und liefert ungelesene Nachrichten + offene Zuweisungen mit. - agenthub_task_log gibt den pending-Block zurück; der Tool-Text macht ihn verbindlich (pending.interrupted ⇒ sofort aufhören, nicht einreichen). - Neu: agenthub_checkin(agent, taskId) für lange Strecken ohne Log-Zeile, plus GET /agents/:agent/pending. - resolvePending degradiert auf reinen Namensvergleich, wenn keine Config da ist — ein Check-in darf nie an Konfiguration scheitern. DEC-0035: `review` bindet den Agenten wie `in_progress`. Vorher galt er in der Sekunde des Einreichens als frei, griff sich die nächste Task, und ein Reopen prallte danach am Ein-Task-Guard ab (so ging der Reopen von TSK-0218 verloren). Der Loop bleibt aktiv — wach warten, nichts Neues anfangen. Außerdem: in_progress → open erlaubt, damit der Architekt eine festhängende Arbeit überhaupt entziehen kann (vorher 400, Agent blieb dauerhaft blockiert). SICHTBARKEIT: /health und /agent-health zeigen pro Agent pendingCount (wartende Tasks) und deafForSec (wie lange ohne Check-in bei laufender Arbeit). Ungelesene Nachrichten stehen separat — der dreistellige Altbestand einzelner Agenten hätte das Signal sonst erschlagen. Tests: 279 → 290. tests/singleClaim (b) auf den neuen Vertrag umgeschrieben (+ (b2): ein Reopen gewinnt gegen die nächste Task). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
AgentHub
Local coordination layer for AI coding agents.
Install
AgentHub is not yet published to npm. Clone the repository, build it, and link it globally:
git clone https://git.rebreak.org/chahine/agenthub.git
cd agenthub
pnpm install
pnpm build
npm link
After npm link, the agenthub command is available everywhere.
Quick Start
agenthub init
agenthub task create --title "Implement DNS cache" --role implementer
agenthub handoff create --fromRole architect --toRole implementer
agenthub status --update
Supported Agents
- Claude Code
- Codex CLI
- Kimi Code CLI
Network Mode
AgentHub can expose a project to other machines on the same network. Discovery is automatic: as soon as the host broadcasts, a client can find it without knowing the IP address.
On the host machine (e.g. Mac):
cd my-project
agenthub init
agenthub server start --host 0.0.0.0 --port 3377
On another machine (e.g. Windows) run init and accept the discovered server:
cd my-project
agenthub init # asks to connect to the LAN server it found
agenthub task create --title "Windows task" --role implementer
agenthub status
For non-interactive setup, let init discover the server automatically:
agenthub init --server auto
After init, every command automatically talks to the configured server. You can still override it per command with --server http://<ip>:3377 or via the AGENTHUB_SERVER environment variable.
The init --server step only stores the server URL locally; it does not create a second project. The host machine keeps the single source of truth.
License
MIT