unblock
unblock
Eine Warteschlange für alles, was deine Agenten von dir brauchen.
Ein Agent, der vor einer Hürde steht, die nur ein Mensch beseitigen kann — ein API-Schlüssel, ein Klick in der Konsole, eine OAuth-Freigabe, eine Genehmigung — registriert eine strukturierte Anfrage und arbeitet entweder weiter oder parkt. Du beantwortest eine Reihe davon auf einer Seite, Geheimnisse inklusive, und die geparkten wachen auf.
Du liest nie ein Transkript, um herauszufinden, was ein Agent wollte.
Warum es existiert
Jedes Human-in-the-Loop-Tool für Agenten löst nur ein Drittel dieses Problems. Das interrupt() von LangGraph hat die richtige Wartesemantik und bringt keine Warteschlange oder UI mit. HumanLayer und gotoHuman verfügen über strukturierte Anfragen und leiten sie über einen SaaS-Dienst weiter. Die lokalen MCP-Frageserver sind Single-Agent, synchron und geben die Antwort direkt über das Tool-Ergebnis zurück — genau dorthin, wo ein API-Schlüssel niemals hingeraten darf.
unblock vereint die drei: local-first, Geheimnisse außerhalb des Modellkontexts und eine Warteschlange für jeden Agenten auf der Maschine.
Related MCP server: human-loop-mcp
Wie es funktioniert
Zwei Aufrufe, und nur einer davon stoppt den Agenten.
Aufruf | blockiert? | wie viele gleichzeitig |
| nein — gibt ein Ticket zurück, Agent arbeitet weiter | unbegrenzt |
| ja — hält an, bis beantwortet | einer pro Agent |
Genau diese eine Einschränkung macht das teilweise Beantworten sicher. Das Beantworten einer eingereichten Anfrage unterbricht nie etwas, du kannst sie also in beliebiger Reihenfolge beantworten. Das Beantworten der geparkten Anfrage weckt den Agenten, und er sammelt jede eingereichte Antwort, die eingegangen ist, während er weg war.
Ein Agent, der drei Dinge braucht, deklariert eine einzige Park-Anfrage mit drei Feldern. Er parkt nicht dreimal, denn er kann nur an einer Stelle gestoppt werden.
Geheimnisse
Ein Geheimnis, das in das Formular eingegeben wird, wandert nie über den Kanal zurück, der im Kontext eines Modells landet. Der Daemon speichert es und übergibt dem Agenten eine Referenz:
op://Private/abc123/credential # 1Password — masks the value if printed
ub_9cjp4t-stripe_key # macOS keychain
$UNBLOCK_STRIPE_KEY # env file, 0600Der Agent löst es erst bei Bedarf auf und gibt es niemals aus. 1Password wird bevorzugt, wenn op angemeldet ist, denn op run maskiert den Wert, selbst wenn ein Unterprozess ihn ausgibt — das einzige Backend mit diesem Schutz.
Installation
npm install -g unblockd # daemon, MCP server, CLI (binary: unblock)
unblock daemon startDann richtest du einen Agenten darauf aus. Für Claude Code:
claude mcp add unblock -- npx unblockd mcpUnd installiere den Skill, damit Agenten wissen, wann sie parken sollen:
npx skills add aneym/unblock --skill unblock -gherdr
herdr plugin install aneym/unblock --yesalt+p u öffnet den unblock-Modus: ein gezoomter Bereich mit der gesamten Warteschlange, auf das aktive Profil begrenzt, direkt beantwortbar. Antworten wecken den Agenten in seinem Bereich.
Das Plugin listet außerdem Agenten auf, die herdr als blockiert erkannt hat, aber nie eine Anfrage deklariert haben — unter den deklarierten, sodass ein stilles Stocken weiterhin sichtbar ist.
Beantworten vom Telefon aus
unblock link erzeugt eine kurzlebige URL. Sie verfällt beim Absenden und läuft per Timer ab, damit ein veralteter Tab in deiner Tasche morgen nicht mehr live ist. Stelle es über dein eigenes Tailnet bereit oder nutze einen schnellen Tunnel, wenn du kein Tailnet hast:
tailscale serve --https=8799 127.0.0.1:4488 # tailnet only
cloudflared tunnel --url http://127.0.0.1:4488 # no accountLayout
src/schema.js ask + field validation, the profile rule
src/store.js SQLite queue, one-park-per-agent, drafts, links
src/secrets.js 1Password -> keychain -> env file
src/daemon.js HTTP API, the answer page, SSE
src/mcp.js MCP server: file / park / check / cancel
web/ the answer page
plugin/ herdr plugin
skills/unblock/ the discipline agents follow before parkingNull npm-Abhängigkeiten. Die Warteschlange ist eine SQLite-Datei unter ~/.local/state/unblock/queue.db.
Lizenz
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Give any AI agent a way to ask a person — for approval, a decision, an answer or a review.
Shared task queue for humans and AI agents: leases, handoffs, approvals and signed receipts.
Contact point for AI agents: describe a missing capability or need; a human operator helps.
Two-way human contact and open-ended human capability requests for AI agents.
381
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to ask clarification questions and receive structured user input through a Human-in-the-Loop interface.1MIT
- AlicenseBqualityDmaintenanceEnables AI agents to ask human operators questions through polished browser dialogs, supporting text/choice/confirmation inputs and file attachments.7MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to request human decisions for subjective or high-stakes choices through MCP tools like ask_human and provision_api_key.-
- AlicenseNot gradedqualityCmaintenanceProvides durable queues, human-in-the-loop approval gates, and an audit trail for AI agent fleets, enabling blocking approval requests and reliable work handoffs.6 npmMIT