Skip to main content
Glama

unblock

Una sola cola para todo lo que tus agentes necesitan de ti.

Un agente que se topa con un muro que solo un humano puede franquear — una clave de API, un clic en la consola, una concesión de OAuth, una aprobación — registra una solicitud estructurada y o sigue trabajando o se estaciona. Respondes un lote de ellas en una sola página, secretos incluidos, y las estacionadas se despiertan.

Nunca lees una transcripción para averiguar qué quería un agente.

Por qué existe

Toda herramienta con un humano en el circuito para agentes resuelve un tercio de este problema. interrupt() de LangGraph tiene las semánticas de espera correctas y no incluye ninguna cola ni interfaz. HumanLayer y gotoHuman tienen solicitudes estructuradas y las enrutan a través de un SaaS. Los servidores de preguntas MCP locales son de un solo agente, síncronos, y devuelven la respuesta directamente a través del resultado de la herramienta — que es exactamente donde una clave de API jamás debe ir.

unblock es los tres a la vez: local-first, secretos que permanecen fuera del contexto del modelo, y una única cola para todos los agentes de la máquina.

Related MCP server: human-loop-mcp

Cómo funciona

Dos llamadas, y solo una de ellas detiene al agente.

llamada

¿bloquea?

¿cuántas a la vez?

unblock_file

no — devuelve un ticket, el agente sigue trabajando

ilimitadas

unblock_park

sí — espera hasta que se responda

una por agente

Esa única restricción es lo que hace seguro responder parcialmente. Responder a una solicitud registrada nunca interrumpe nada, así que puedes responderlas en cualquier orden. Responder a la estacionada despierta al agente, y este recoge todas las respuestas registradas que llegaron mientras estaba ausente.

Un agente que necesita tres cosas declara un único park con tres campos. No se estaciona tres veces, porque solo puede detenerse en un único lugar.

Secretos

Un secreto escrito en el formulario nunca regresa por el canal que va a parar al contexto de un modelo. El daemon lo almacena y le entrega al agente una referencia:

op://Private/abc123/credential        # 1Password — masks the value if printed
ub_9cjp4t-stripe_key                  # macOS keychain
$UNBLOCK_STRIPE_KEY                   # env file, 0600

El agente lo resuelve en el momento en que lo necesita y nunca lo imprime. Se prefiere 1Password cuando op ha iniciado sesión, porque op run enmascara el valor incluso si un subproceso lo muestra en pantalla — el único backend con esa protección.

Instalación

npm install -g unblockd         # daemon, MCP server, CLI (binary: unblock)
unblock daemon start

Luego apunta un agente hacia él. Para Claude Code:

claude mcp add unblock -- npx unblockd mcp

E instala la skill para que los agentes sepan cuándo estacionarse:

npx skills add aneym/unblock --skill unblock -g

herdr

herdr plugin install aneym/unblock --yes

alt+p u abre el modo unblock: un panel ampliado con toda la cola, acotado al perfil activo, en el que se puede responder directamente. Las respuestas despiertan al agente en su panel.

El plugin también lista los agentes que herdr ha detectado como bloqueados pero que nunca declararon una solicitud — debajo de los que sí declararon, de modo que un estancamiento silencioso siga siendo visible.

Responder desde el móvil

unblock link genera una URL efímera. Muere al enviar la respuesta y expira con un temporizador, así que una pestaña abandonada en tu bolsillo no seguirá viva mañana. Sírvela a través de tu propia tailnet, o usa un túnel rápido si no tienes tailnet:

tailscale serve --https=8799 127.0.0.1:4488     # tailnet only
cloudflared tunnel --url http://127.0.0.1:4488  # no account

Estructura

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 parking

Cero dependencias de npm. La cola es un único archivo SQLite en ~/.local/state/unblock/queue.db.

Licencia

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to ask clarification questions and receive structured user input through a Human-in-the-Loop interface.
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to ask human operators questions through polished browser dialogs, supporting text/choice/confirmation inputs and file attachments.
    7
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to request human decisions for subjective or high-stakes choices through MCP tools like ask_human and provision_api_key.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides 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 npm
    MIT