01 · HUMAN

Available today

Your users ask. Your product acts.

Embed a permissioned shell that only invokes actions you declared in your manifest. Side effects pause for confirmation — the same gate agents hit through the API.

See it in action

A user gets work done by asking.

A Duct shell floating over a sample product — the user asks, sees structured UI, and hands off with context. No navigating the app by hand.

Ship infrastructure without the busywork.

Deploy, scale, and manage your stack — one dashboard your whole team actually loves.

Deploy pipelines

Push to prod in one click with guarded rollouts.

Why this mode

One Shell. Three callers.

Not a chatbot widget

The shell is one delivery surface for your action layer. It answers, shows structured UI, collects input, and hands off — all bound to duct.config.ts.

Smart responses

Records become tables. Status queries become cards. The shell picks the right component from the result shape — no per-answer frontend work.

Consent before consequences

Irreversible actions pause for explicit approval in chat. Users stay in control — nothing runs without their say-so, and every call is logged.

Flow

How it works

Define actions once in duct.config.ts — this is how that contract plays out for this caller.

1

Define actions in your manifest

Map your API to duct.config.ts — permissions, side effects, and deeplinks in one contract.

2

User asks in plain language

"Show my invoices", "Cancel my subscription", "Take me to billing."

3

Shell invokes a declared action

Data views, in-conversation forms, or a signed handoff — only what the manifest allows.

4

Your API executes

Same backend, same permissions. Duct routes intent and enforces consent — your servers still run the work.