Skip to main content
Glama

unblock

Одна очередь для всего, что вашим агентам нужно от вас.

Агент, который упирается в стену, которую может устранить только человек — API-ключ, клик в консоли, OAuth-грант, одобрение — регистрирует структурированный запрос и либо продолжает работать, либо останавливается. Вы отвечаете на пачку таких запросов на одной странице, включая секреты, и остановленные просыпаются.

Вам никогда не придётся читать транскрипт, чтобы узнать, чего хотел агент.

Зачем это существует

Каждый инструмент human-in-the-loop для агентов решает только треть этой проблемы. interrupt() в LangGraph имеет правильную семантику ожидания, но не поставляет ни очереди, ни интерфейса. HumanLayer и gotoHuman имеют структурированные запросы и маршрутизируют их через SaaS. Локальные MCP-серверы вопросов — однопользовательские, синхронные и передают ответ напрямую через результат инструмента — а это именно то место, куда API-ключ никогда не должен попадать.

unblock — это все три вместе: локальный-first, секреты, которые не попадают в контекст модели, и одна очередь для всех агентов на машине.

Related MCP server: human-loop-mcp

Как это работает

Два вызова, и только один из них останавливает агента.

вызов

блокирует?

сколько одновременно

unblock_file

нет — возвращает тикет, агент продолжает работу

без ограничений

unblock_park

да — удерживает до ответа

один на агента

Это единственное ограничение делает частичные ответы безопасными. Ответ на поданный запрос ничего не прерывает, поэтому вы можете отвечать на них в любом порядке. Ответ на остановленный запрос пробуждает агента, и он собирает все поданные ответы, которые поступили, пока он был остановлен.

Агент, которому нужно три вещи, объявляет одну остановку с тремя полями. Он не останавливается трижды, потому что его можно остановить только в одном месте.

Секреты

Секрет, введённый в форму, никогда не возвращается по каналу, который попадает в контекст модели. Демон хранит его и передаёт агенту ссылку:

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

Агент разрешает её в момент необходимости и никогда не выводит её. 1Password предпочтителен, когда op авторизован, потому что op run маскирует значение, даже если подпроцесс выводит его — единственный бэкенд с такой защитой.

Установка

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

Затем подключите к нему агента. Для Claude Code:

claude mcp add unblock -- npx unblockd mcp

И установите навык, чтобы агенты знали, когда останавливаться:

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

herdr

herdr plugin install aneym/unblock --yes

alt+p u открывает режим unblock: увеличенная панель со всей очередью, ограниченная активным профилем, с возможностью ответа на месте. Ответы пробуждают агента в его панели.

Плагин также перечисляет агентов, которых herdr определил как заблокированных, но которые не объявили запрос — ниже объявленных, чтобы тихий простой оставался видимым.

Ответы с телефона

unblock link создаёт временный URL. Он умирает при отправке и истекает по таймеру, поэтому устаревшая вкладка в вашем кармане не останется активной завтра. Разместите его в своей собственной tailnet-сети или используйте быстрый туннель, если у вас нет tailnet:

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

Структура

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

Ноль npm-зависимостей. Очередь — это один SQLite-файл по адресу ~/.local/state/unblock/queue.db.

Лицензия

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