tesser the way it would invoke git
or pnpm.
The remote machine is a box: a deliberately low-level primitive —
persistent compute, a synchronized workspace, one running service. Tesser
does not model tasks, agent sessions, or what a repository “is”. On top of
boxes it adds exactly one new idea: a mesh. Services find each other by
name, resolved per box, so a frontend on one box, a backend on another, and
a shared main worker form a working system with zero application
configuration.
Remote development compute, and the wiring between it, for local coding agents.
Principles
Local is the source of truth
The agent edits local files; sync mirrors them out. Remote edits are never merged back. Boxes hold no important state — every box is reproducible from its content source and manifest recipes, which is what makes aggressive sleeping and reaping safe rather than brave.The CLI is the product surface
Agents know a small set of stable verbs and opaque IDs — never AWS, instance types, security groups, or tunnels. Creating commands print their ID as the only stdout; progress goes to stderr; remote exit codes pass through verbatim. Every workflow an agent needs is a pipeable one-liner.Callers own every start
There is no reconciler. Nothing in the cloud starts, restarts, or resurrects a named thing on its own — every instance start traces to an agent, a human, or CI. The control plane may start only anonymous warm-pool blanks, and it may turn things off. A bug in auto-stop costs a re-warm; a bug in auto-start costs money forever.Cells decide, never carry
The control plane is small single-writer actors holding decisions: registries, defaults, overrides, routing tables, presence, policy. Data — sync, exec, logs, mesh traffic — moves over SSH and VPC private IPs and never touches the control plane. If the control plane dies, running boxes keep routing on their last tables and SSH keeps working.Names are globally meaningful, locally resolved
A service name means one thing across the org; which instance it reaches is decided by each box’s own table. Your boxes prefer your instances; the shared mesh resolves only to shared instances. There is no global route anywhere — per-user routing conflicts aren’t forbidden, they’re unrepresentable.Config declares facts; callers make judgments
A manifest holds what is true about a service: where it lives, what it listens on, how to set up, run, and health-check it, what it needs. When to restart, when to test, what else to install — judgments — belong to the agent, expressed through verbs and flags. There are no behavior knobs in config.Apps need zero changes
Dependencies materialize as loopback ports — thelocalhost:5001 already
in the repo’s .env simply is the dep, on a box and on the laptop alike.
No SDK, no injected env convention, no DNS, nothing installed on the host
OS. The browser gets <boxid>.localhost:<port> for free.