ActionBoxDOCS

What ActionBox Is

The server-authoritative human decision layer for software and AI agents that cannot wait at a terminal.

ActionBox gives software a durable way to ask a person for a decision and continue safely. It is the human equivalent of input() for CI/CD pipelines, background workers, scheduled jobs, and AI agents that cannot wait at a physical terminal.

The short version

Create a typed Action, send it to a human inbox, and consume the recorded response through the API, CLI, SDK, or a signed callback. Add bounded Controls when a reviewer should be able to retry, stop, or inspect work without closing the Action. Notifications are useful alerts; the Action state remains authoritative.

How ActionBox works

The workflow has one clear boundary between automation and human judgment:

1. Create an Action

Your service sends a question with the exact operation, typed choices or fields, priority, expiry, and bounded context. Use an idempotency key when retries must not create duplicate requests.

2. A person decides

The operator reviews the request in the hosted web inbox, checks the context, and submits the response that matches the interaction schema. If a workflow needs written justification or a diff review, model that requirement explicitly with a typed text interaction or a diff context block.

3. Your system resumes

Read the terminal Action, receive the signed webhook, or let the CLI/SDK wait for the result. Branch on the response value, execute the approved operation, and report the real execution outcome separately.

An open Action can also expose Action Controls. Controls let a reviewer request a bounded follow-up operation—such as retrying a job or opening its logs—without turning that request into the Action's final decision.

What stays true

These guarantees make the human checkpoint safe to place inside an automated system:

Server-owned state

A closed browser, lost terminal, or dropped connection does not lose or resolve an Action.

Immutable outcomes

Resolved, cancelled, and expired Actions cannot be edited or rolled back.

Typed responses

Boolean, choice, text, integer, number, rating, and form interactions return structured values.

Safe delivery

Signed callbacks retry independently; idempotency keys and event IDs help consumers deduplicate replays.

Choose a starting point

Ready to build?

Start with the Getting Started guide, then choose the CLI, Python SDK, TypeScript SDK, or REST API that fits your worker.

On this page