awaithumans works with any agent framework. Extend it through one of four places: how a human is notified, how their answer is quality-checked, who gets assigned the task, and how the task is rendered to them.
First-class activity. Replay-safe, idempotent by default.
await workflow.executeActivity(awaitHuman, ...)view docs →
Drop-in node that suspends a graph on awaitHuman; resumes on response.
graph.add_node('approve', awaitHuman)view docs →Step-function adapter.
Durable-execution adapter.
Tool wrapper for crew agents.
Native dependency.
The core awaitHuman() signature never forks. Customer-specific behavior lives in adapters, and every adapter belongs to one of exactly four places.
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 around 80 lines of TypeScript or Python. The contract is small on purpose. Write your own in an afternoon.