the human layer for ai agents · v0.1 alpha

Your agents already
await promises.
Now they can
await humans

A typed, async, resumable primitive for delegating tasks from AI agents to humans — with routing, notifications, verification, and callbacks built in. Open source.

start in 3 lines →read the docs
MIT licensedPython + TypeScriptself-host in one command
agent.py
from awaithumans import await_human
from pydantic import BaseModel

class Refund(BaseModel): amount: float; customer: str
class Decision(BaseModel): approved: bool

decision = await await_human(
    task="Approve refund?",
    payload_schema=Refund,
    payload=Refund(amount=240, customer="cus_123"),
    response_schema=Decision,
    notify=["slack:#ops"],
    timeout_seconds=3600,
)

if decision.approved: process_refund()
↳ typed payloads↳ resumable↳ auditable
integrates with
temporallanggraphcoming sooninngestrestatecrewaipydantic aiautogen
why now

The agentic economy
has a structural ceiling.

Every agent in production hits the same three walls. Model improvement closes none of them — they are permanent. Building for these walls today is what separates real agent infrastructure from demos.

WALL 01

Authorization

Agents can reason. They cannot be trusted to decide alone — consequence, liability, and accountability require a human signature. This wall gets higher as agents get more capable, not lower.

A CFO agent pauses before wiring $2M to a new vendor. A medical agent routes a dosage decision to the on-call physician.
WALL 02

Reality

The world exists outside the model's context window. No amount of intelligence closes the gap between what the model knows and what's actually happening on the ground. Not a training problem — a physics problem.

A logistics agent waits for confirmation the package was actually picked up. A real-estate agent needs a human to walk the property before listing.
WALL 03

Presence

Software 2.0 will be headless — agents navigating the internet autonomously. But the physical world wasn't built for agents and won't be rebuilt overnight. Until it catches up, agents need humans to be their hands.

An agent needs a wet signature on a legal document before filing. An agent managing a retail store needs someone to restock a shelf.
how it works

One call. Suspend. Resume.

agentyour codeserverawaithumanschannelslack/emailhumanjudgesverifierai checkcallbackagent resumesFIG. 1.0 — ASYNC HUMAN PRIMITIVE / FLOWstep 1 / 5
channels

Humans complete tasks
where they already are.

Schemas drive the UI on every channel. The same task renders as a Slack modal, an email with action buttons, or a typed form in the dashboard — without you writing a single template.

ah
awaithumansAPP · 9:41 AM
Approve refund?
amount: $240.00
customer: cus_123
ApproveDeny
slack

Interactive messages with Block Kit modals. Reply in thread, completion is parsed by the verifier.

ops@acme.com → you · approve refund?
Approve refund?
$240.00 · cus_123 · requested by checkout-agent
Approve →Deny
email

Action buttons inline. Click → confirmation page. Reply with natural language to complete.

task #1039pending
Approve refund?
amount$240.00customercus_123reasonshipping delay
ApproveDeny
dashboard

Typed forms generated from your Zod / Pydantic schema. Audit trail and admin built in.

installation

5 minutes from pip install → first task.

Time-to-first-task-delegated under 5 minutes is a hard acceptance test on every release. CI runs the quickstart on a fresh machine.

~/agents — python