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.

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.

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.

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.