Viewport daemon, relay, and hosted runtime are available in alpha. Surfaces may change.
VIEWPORT
For developers

Decide from anywhere

The inbox is where every agent decision lives. Here's how to work it from web, Slack, or a webhook.

The inbox is where every decision the agent is waiting for shows up. You make the call, the runner receives it, and the agent continues or stops cleanly.

What lands in the inbox

Three kinds of decisions, distinguished by what the agent is asking:

KindWhat it meansTypical action
Plan review"Here's my proposed plan. Should I execute it?"Approve plan / Request changes / Comment
Approval gate"Can I do this specific thing?" (e.g., rm a path)Allow once / Allow always / Deny
Context candidate"I learned something. Add it to memory?"Approve / Discard / Edit then approve

You see one queue with everything. Filter by kind, by repo, by who routed it, or by urgency.

The daily rhythm

A common loop:

  1. You kick off an agent on a task and walk away.
  2. A web or Slack notification says: "Claude Code paused in ~/code/api."
  3. You open the link and land directly on the inbox item.
  4. You read the plan or the question. Two paragraphs, usually.
  5. You tap Approve. Or Deny. Or you leave a comment for the agent.
  6. The daemon receives the resolution. The agent continues. Or stops cleanly.
  7. You go back to what you were doing.

Some items take more thought, such as a 14-step plan that touches auth. Some are quick, such as a one-off tool permission. Either way, the decision is recorded with the exact context and digest the reviewer saw.

On desktop

The web app at app.getviewport.com/inbox has the full surface:

  • List rail on the left, grouped by urgency or kind.
  • Detail surface on the right with the decision context and the action dock.
  • Comments thread for back-and-forth with the agent or with teammates.
  • Keyboard shortcuts are still being tightened while the product is in alpha.

On Mobile Web

The same web app is responsive for phone-sized screens. Mobile web is a supported layout, not a separate product surface.

In Slack

Connect Slack at app.getviewport.com/settings/integrations and route inbox events to a channel. Slack delivery is in alpha; use it as a notification path first, and verify any high-impact decision in the web app until your workspace policy is tested.

See Slack integration for the setup.

Via webhook

If you'd rather wire it to your own consumer (PagerDuty, Linear, custom dashboard), configure a webhook endpoint and the platform POSTs a JSON payload on each event:

{
  "type": "inbox_item.created",
  "workspace_id": "01J…",
  "inbox_item_id": "ibx_…",
  "kind": "plan_review",
  "agent": "claude-code",
  "session_id": "ses_…",
  "preview": "Migrate auth middleware from cookie to bearer tokens.",
  "decision_url": "https://app.getviewport.com/inbox/ibx_…",
  "expires_at": "2026-05-11T15:42:00Z"
}

See Webhook delivery for the full schema, signing model, and retry behavior.

What "explicit decide" means

For the first launch path, plan gates are intentionally human-decided. The platform records the approve, request-changes, or reject decision with the run so the team can see exactly why the agent continued.

Later automation can add narrow auto gates, but do not start there. See Approval policies.

When you don't decide

Every inbox item has a TTL (default: 1 hour). If no one decides in time, the policy says either:

  • Escalate · reroute to a wider audience (e.g., entire team after 15 min).
  • Cancel · stop the run when the gate times out.
  • Hold indefinitely · the agent stays paused, you decide when you decide. Useful for explicit long-running gates.

Each policy gate can choose its timeout behavior.

Where to go next

On this page