◆ AI & Agents

Claude Code Lives Inside Your Agency.

Not a chat box bolted onto a dashboard — a real agent runtime. Claude Code runs in a sandboxed terminal inside your workspace, wired to your data over MCP, and everything it ships waits at the same review gate as your team.

◆ Per-session sandboxes◆ Typed MCP tools◆ Approval-gated output
The sandbox

Every Session Gets Its Own Jailed Machine.

The agent can build — but only inside the walls. Each terminal session gets a fresh machine with bubblewrap isolation: your repo mounted, your scopes enforced, torn down when you're done.

1 : 1
One sandbox per session — a fresh jailed machine every time, never shared.
bubblewrap-jailed
Fly.io
The terminal service runs on real machines — a real shell, not a toy.
terminal-service
2 CLIs
Claude Code and Codex, ready at the prompt — pick per session.
claude · codex
voice
Talk to the terminal — voice input streams straight into the agent.
hands-free prompts
per-session sandboxfly.io terminal servicebubblewrap isolationclaude codecodexvoice input to agents
MCP wiring

Typed Tools, Wired to Your Data.

The terminal doesn't guess — it calls. Tenant-scoped MCP servers expose your SEO context and the DataForSEO index as typed tools, so every claim in a session traces back to a real call with a real schema.

Tenant-scoped by construction

Servers mount per workspace. The terminal for one client can read that client — and nothing else. No global keys, no shared context.

The same typed-tool discipline powers the ads workbenches — propose, approve, apply. See it in Growth →

Headless agents

A Queue That Ships Reviewable Work.

Long jobs go headless — claude -p, an isolated clone, a context pack attached. What comes back is a draft at a gate, not a surprise in production. And headless publish is fenced to Claude only: the budget model can’t ship unsupervised.

◆ Click to annotate

Point at the Page. Say What You Want.

Drop a pin on the live draft and type the note. The agent turns it into a bounded JSON edit — scoped to the element you touched, diffable, and gated like everything else.

  • Pins anchor to the exact element — never “somewhere on the homepage”
  • Edits arrive as bounded JSON ops, not free-form rewrites
  • The same review gate before anything ships

Inside Zyan Build →

Model policy

Opinionated About Who Ships What.

Claude by default. Kimi K3 where budget wins. Hard fences wherever money or publishing moves.

Claude
The default everywhere — every agent surface runs Claude out of the box.
default model
Kimi K3
The budget lane — swap it in per workspace where cost beats polish.
budget model
fenced
Direct publish is Claude-only. The budget model can't ship unsupervised.
headless publish
gated
Approval gates sit wherever money or publishing moves — a human clicks Ship.
money · publishing
Across the platform

Where It Shows Up.

The runtime isn't one page — it's underneath the platform.