Private preview · Rust + GPUI · macOS

The native environment for coding agents.

Zumith Studio runs side by side — each session in its own worktree, with goals, accounts, a daemon that outlives the window, and a browser and simulator the agent can actually see.

Build the preview View on GitHub
atlas · feat/scheduler — Claude Code zumithd · local
claude-opus-5 engineer@example.com PR #42 · CI ✓
Make the scheduler dependency-aware and surface what blocks each phase.
thinking · 4s
Read crates/scheduler/src/graph.rs212 lines
Edit crates/scheduler/src/graph.rs+42 −7
Edit crates/scheduler/src/next.rs+18 −3
cargo test -p scheduler112 passed
Plan 3/7Wire next-step engine
Steer the agent… @/⌘↵
ONE WINDOW FOR EVERY AGENT YOU RUN
official harnesses · PTY fallback · fork across providers
Native · Rust + GPUI

Not a web view. A Metal-rendered app.

Zumith Studio is written in Rust on GPUI, the same GPU-accelerated UI framework behind Zed. No Electron, no Chromium tab per agent. The whole app idles in less memory than one browser tab — and it stays responsive with twenty sessions streaming at once.

0.19s
Cold start to window
process spawn → on screen
67MB
Idle resident memory
RSS after 10 s, debug build
28µs
Daemon round trip
p50 over the Unix socket
8ms
Typing latency p95
in-app perf probe

Measured on an M4 Pro, unoptimized debug binary. Release builds are faster. Performance is an acceptance criterion, not a promise — the probe ships in the app.

Sessions outlive the window

Long-running work lives in zumithd, a local daemon. Close Studio, reopen it, and the agent is still where you left it — streaming, interruptible, steerable.

A worktree per session

Every session is born in its own git worktree cut from a freshly resolved origin/main. Agents never step on each other; archived worktrees clean themselves up.

Feature → ready-to-merge PR

Diff, terminal, PR status and CI live next to the chat. Review comments become findings the agent can act on. The loop ends at a green, mergeable pull request.

Multi-account

Every login you have. One window.

Register as many accounts per provider as you own — work, personal, a team seat, an API key. Studio reads who each one is straight from the provider's own config, offline, and shows their quota and spend side by side.

  • Identity resolved from the CLI's config — no network call, no credential ever leaves the adapter.
  • Account is sticky for a session; switching forks the session with a handoff capsule instead of mixing contexts.
  • Usage dashboard with tokens, cache savings and an estimated cost per account and model.
Claude · workwork@example.com
5h window · 62%
Claude · personalpersonal@example.com
5h window · 91%
Codex · teamteam@example.com
weekly · 34%
Cursorapi key · no signed-in identity
$12.40 est.*
* if billed at full API ratecache hit 88% · 2.1M tokens today
Goals

Intent that survives the context window.

A goal is not a note — it is a native object with a plan, phases, decisions, findings and evidence. Studio prepends the active goal to a session's first prompt, so every agent starts knowing what "done" means, and what was already decided.

  • Plan mode with real questions: the agent asks, you pick from options, the plan card gets approved or sent back.
  • TODOs aggregated across subagents; phase progress shown as a strip in the transcript.
  • Decisions carry forward across forks and providers, so the next agent never re-litigates them.
Active goal
Dependency-aware scheduler ships behind a flag
1Model phase graph
2Topological ordering
3Wire next-step engine
4Surface blockedBy in the panel
5Stale-after-days flag
3 decisions2 findingsevidence: 112 tests
Agent is asking
Which scheduler semantics for cycles?
Refuse at plan time recommended
Break cycles, warn
Allow, schedule by insertion
Stage · Browser & Simulator

The agent gets its own screen.

Every session can bind a Stage: a browser or an iOS simulator the agent Observes and Acts on — structured tree, stable refs, host-taken pixels. It is not your desktop and it never touches your windows. No Chromium, no Playwright, no Appium: a small native host that outlives Studio.

Browser instrument
localhost:4321/checkout
e12 button "Pay"
observe → 41 nodes · 1280×800 @2x
act click e12 · wait load
observe → "Order confirmed" ✓
Simulator instrument
install build/Atlas.app
launch mx.decodelabs.atlas
tap "Continue" · observe

Observe. Act. Verify. No hoping.

The agent changes a view, looks at its own Stage, and fixes what it sees before it reports back. Screenshots of your real display go through Studio's capture grant only — the Stage is a surface the session owns.

  • Session-sticky: one Browser or Simulator per session, reattached across turns.
  • Accessibility tree with refs (e12) for deterministic clicks, typing and swipes.
  • Hosted by zumith-stage, a separate helper app — closing Studio does not kill it.
Zumith Continuity

Your Conversation moves. Its identity does not.

Your Mac and Linux VPS form a single-owner Compute Fabric in My Compute. Every zumithd connects outbound to optional Zumith Cloud, and a fenced Handoff moves the complete managed Workspace while its Conversation remains stable.

  • Ed25519 device enrollment, signed challenges and binary MessagePack v4 over WSS.
  • Workspace lease + Runtime epoch: exactly one writer before and after every Handoff.
  • Companion talks directly to Zumith Cloud for transcript, messages, Stop and approvals.
Zumith StudioMacBook · GPUI client
My Compute · Mac
Zumith ComputeDefault VPS · Linux · zumithd
active Workspace · 2 workers
CompanioniPhone · message, Stop, approve
1 approval pending
Agentic development environment

Built for fleets, not one chat.

Studio is the place where several agents work on one project at once — and where you can still tell what each of them is doing.

Workers & missions

Hand a phase to a worker in its own worktree, gate it, merge it back. A mission runs the whole graph — spawn on ready, merge on green — and wakes you only when something blocks.

Agent mailbox

Claude, Codex, Cursor and OpenCode sessions talk to each other through Zumith’s own MCP server: ask, reply, hand off, warn before touching a shared file.

Second opinion

Fork any session to another model or provider with a native resume and an enriched handoff. Keep the one that is right.

Auto-compaction

The daemon measures context weight and compacts after the turn ends, before the window dies. Configurable threshold, never a steer.

Voice mode

A spoken orchestrator that opens chats, delegates to workers, asks how they are doing, and tells you when something is ready. It delegates; it never writes code.

Honest failures

Every failure is classified — auth, quota, network, provider, interrupted — and stored with the turn. No phantom error banners, no eternal spinners.

Install

Build the private preview.

Builds from source on Apple Silicon, copies a signed Zumith Studio.app into /Applications and registers zumithd as a LaunchAgent. Repository access, GitHub CLI, Xcode CLT and rustup are required. Continuity V1 is undergoing end-to-end validation.

zsh
$ gh repo clone OmarAlex24/zumith-studio -- --branch codex/zumith-continuity && cd zumith-studio && bash scripts/install.sh
# → /Applications/Zumith Studio.app · ~/.zumith-studio/zumithd.sock
Preview source · access required Read the docs
macOS · Apple Silicon local-first · SQLite no telemetry MIT licensed