awaithumans is engine-agnostic. Drop it into any agent framework, then extend it through one of four adapter buckets — notifiers, verifiers, routers, task-types.
First-class activity. Replay-safe, idempotent by default.
await workflow.executeActivity(awaitHuman, ...)
Drop-in node that suspends a graph on awaitHuman; resumes on response.
graph.add_node('approve', awaitHuman)Step-function adapter.
Durable-execution adapter.
Tool wrapper for crew agents.
Native dependency.
The core awaitHuman() signature never forks. Per-customer divergence lives in adapters — and adapters belong to exactly four buckets.
How a human is told a task is waiting.
How a human's output is validated.
Who gets assigned the task.
How the task renders to a human.
Adapters are ~80 lines of TypeScript or Python. The contract is small on purpose — write your own in an afternoon.