Backed by Y Combinator

# The modern development runtime

Run multiple worktrees in parallel by offloading dev servers and other heavy workloads to isolated cloud machines.

[Get started](https://tesser.sh/sign-in) [Book a call](https://cal.com/jeffrey-lin/tesser-chat)

```sh
curl -fsSL https://tesser.sh/install | sh
```

Or set it up with your agent:

```
Set up tesser.sh in this repo
```

Agents: the setup guide is https://tesser.sh/auth.md

## Built for teams of devs and agents

### Port forwarding to localhost

Every port your app uses is forwarded to your laptop, so the dev server on the machine opens at localhost:3000 like it always has. Hot reload and sign-in cookies keep working, and a panel on the page switches between branches.

### Local and cloud agents

Claude Code and Codex run `tesser` from your laptop. Cloud agents like Devin and Capy run it with an API token and get the same machines.

* Claude Code
* Codex
* Gemini CLI
* Copilot
* Cursor
* Devin
* Capy

### Your existing setup

Tesser starts your app with the install and dev commands you already use. Every machine comes with Node and Docker, so most stacks run as they are.

* Next.js
* Vite
* Node.js
* Bun
* Docker
* Postgres
* Redis
* Python

### Bring your own compute

`tesser cloud connect` moves every machine into your own AWS account, inside your VPC and on your AWS bill. We host only the control plane.

## Set up in less than a minute

1. Install the CLI  
One command installs `tesser`, and `tesser login` signs you in through the browser.  
[Quickstart](https://tesser.sh/docs/quickstart)
2. Install the agent skill  
`tesser skill install` gives Claude Code and Codex a short skill that points them at `tesser --help`. From then on your agent runs the commands itself.  
[Coding agents](https://tesser.sh/docs/agents)
3. Describe your app  
A short TOML file in the repo lists your app's ports and the install and dev commands you already use. Commit it once and every worktree can use it.  
[Manifest reference](https://tesser.sh/docs/manifest)
4. Open localhost:3000  
Your agent runs `tesser dev web` in its worktree. The dev server comes up on that worktree's machine, and you open it at localhost:3000.  
[Open a box in your browser](https://tesser.sh/docs/browser)

## Flexible by design

### Parallel coding agents

Every agent gets its own worktree and machine, so five agents on one repo never fight over port 3000 or your laptop's CPU.

### Preview links

Put a link to your running branch in the PR. A reviewer opens it at `box-7f3a91.localhost:3000` and tries the change before reading the diff.

### Tests and builds

`tesser exec -- pnpm test` runs the suite on the worktree's machine. The output and exit code come back as if it ran locally.

### Apps with a database

Each branch runs its own Postgres and Redis with Docker Compose, so one branch's migrations never touch another's data.

## How Tesser compares

Most cloud dev environments ask you to move into them. Tesser fits into the workflow you already have. It syncs your checkout and runs your existing install and dev commands, with no Dockerfile or devcontainer to write. Port forwarding and per-branch routing are built in, so every branch opens on localhost.

| Claim                             | Codespaces | Coder | E2B | Tesser |
| --------------------------------- | ---------- | ----- | --- | ------ |
| Syncs from your existing checkout | No         | Yes   | No  | Yes    |
| Port forwarding to localhost      | Yes        | Yes   | No  | Yes    |
| Service routing across machines   | No         | No    | No  | Yes    |
| No session time limit             | No         | Yes   | No  | Yes    |
| Fully managed                     | Yes        | No    | Yes | Yes    |
| Runs in your own AWS account      | No         | Yes   | Yes | Yes    |

## Frequently asked questions

* ### Do I edit code on the machine?  
No. You and your agent keep editing on your laptop. `tesser exec` and `tesser dev` copy the files that changed to the worktree's machine before they run, so the machine always runs what's in your editor.
* ### Can you see my code?  
No. Files go from your laptop to the machine over SSH, and so do command output and your app's traffic. Our servers track machine ids, ports, and states, and [Security and data flow](https://tesser.sh/docs/where-your-code-goes) lists everything they receive. On the Team plan, the machines can run in your own AWS account.
* ### Do I pay while I'm not using it?  
You pay for the seconds a machine is awake, and only for its disk while it sleeps. It falls asleep after 10 idle minutes, or 2 hours if it runs a dev server, and wakes in about 20 seconds the next time you use it. After 16 hours asleep it is removed.
* ### How long does a new machine take?  
About 20 seconds to boot, or a second or two if your org keeps warm machines of that size ready. It starts from your repo's snapshot, a disk image taken after `setup` ran, so `node_modules` and package stores are already there and the first install only catches up.
* ### What's on the machine?  
Ubuntu 24.04 with Node 22 and 24, Bun, and Docker with Compose, and you have sudo for anything else. Each one has 2 vCPU, 8 GB of memory, and a 40 GB disk by default, and `--size` goes up to 8 vCPU and 32 GB on Pro and Team.
* ### How do my env files get there?  
Sync skips gitignored files, so `.env.local` stays on your laptop until your [manifest](https://tesser.sh/docs/manifest) lists it under `env.files`. Then every sync copies it over SSH. You can also store a value in your org with `tesser env set web KEY=value`, and every machine running `web` gets it.

## Get started

Install the CLI and follow the [quickstart](https://tesser.sh/docs/quickstart) to get your first cloud environment up and running.

[Get started](https://tesser.sh/sign-in) [Book a call](https://cal.com/jeffrey-lin/tesser-chat)

```sh
curl -fsSL https://tesser.sh/install | sh
```

Or set it up with your agent:

```
Set up tesser.sh in this repo
```

Agents: the setup guide is https://tesser.sh/auth.md
