Skip to main content
Tesser runs your dev environment on persistent cloud boxes while your coding agent — and your files — stay on the laptop. One box runs one service; a mesh wires them together by name; your browser sees all of it through localhost. The agent edits local files and invokes tesser like any other CLI. Files sync out; commands run remotely; dev servers stay up after the terminal dies; heavy jobs land on workbench boxes instead of your machine — or your dev server’s.

The shape of it

One instance per box

A box is born as (content × service) and runs exactly one thing. Dev instances sync from your worktree; pinned instances run an immutable commit — the shared main your whole mesh falls back to.

A mesh with zero app config

Deps are loopback ports: the localhost:5001 already in your .env just is the backend, on boxes and laptop alike. Names resolve per box — your boxes prefer your instances, the shared mesh never routes into them.

Callers own every start

No reconcilers. Agents, humans, and CI start things; the cloud only ever turns things off. Idle boxes sleep in minutes-to-hours, cost cents asleep, wake in seconds with caches warm.

Cells decide, SSH carries

A control plane of tiny single-writer actors holds routing, lifecycle, and policy — and never touches your bytes. Data moves over SSH and private IPs; logs never leave the box.

Where to go

Quickstart

One service, then a mesh, in a dozen commands.

Manifests

The one TOML file of facts each service declares.

CLI reference

Every verb and its contract.

Architecture

Boxes, cells, boxd, the mesh, and the lifecycle.