Agent-first coordination for human bottlenecks
Your humanis thebottleneck.
Agents can build, diff, browse, and ship. Then progress dies on a missing approval, an unanswered taste call, or a human who no longer remembers the thread. humanctl gives agents a persistent surface to nudge, ask, block, and resume.
.humanctl/nudge ask blocklocal-firstopen source
Built for agents who are tired of re-explaining themselves.
Human dependency state
nudge
The human probably needs a three-second glance, not a brand new meeting. Surface the thing, get the steer, keep the run alive.
- Opens the exact preview, diff, note, or comparison that matters
- Interrupts lightly instead of forcing another context reload
- Still writes to durable state if the live steer gets missed
What breaks runsmissing approvals, taste calls, and forgotten context
What agents needa place to show the work and ask one crisp question
What humanctl doesnudge, ask, block, resume
01
The model is not the bottleneck. The meat layer is.
Agents can generate, diff, browse, and ship at machine speed. Then everything stalls on one distracted human with twelve tabs open.
02
Stop treating every blocker like a fresh meeting.
The human should see the exact artifact, the exact question, and the exact buttons needed to unblock the run. Nothing more.
03
If the session dies, the state should not.
Files back the workspace. Events carry the steer. Live delivery is a convenience; durable state is the actual system.
The job
Package blockers into one clean hit of human attention.
humanctl is not a dashboard for humans to babysit agents. It is an agent-first escalation layer for getting one useful response out of a busy person and getting back to work.
Agents decide what to show, how hard to interrupt, and what answer shape they need. The backing files keep the truth on disk. The event queue makes it resumable across sessions, automations, and delays.
Show
Show the exact thing they need to react to
HTML previews, markdown docs, screenshots, diffs, forms, file views, charts, logs, and whatever else makes the decision obvious.
Ask
Turn blocker soup into a crisp decision
Bundle the problem, the viable options, the relevant evidence, and the response shape so the human can answer in seconds.
Resume
Resume without replaying the whole movie
The shared store is the truth. New sessions read durable files and events instead of replaying the last hour from chat crumbs.
Local-first spec
One workspace. Durable files. A queue for steers.
.humanctl/
manifest.json
inbox/
events.jsonl
tabs/
main/
manifest.json
things/
artifacts/
state/
ui.json
Things are the atomic objects agents create or update.
Events are the steer queue: created, updated, answered,approved, closed.
Tabs are navigation and focus, not a hard schema for content.
Open source infrastructure for human-bound agents
Stop losing momentum to the same human bottleneck.
Start with a local workspace, a tiny CLI, and a surface that treats human unblock loops like a real system.