Disposable cloud dev environments

Run ten agents at once.
Then close your laptop.

Ephemerals gives every branch its own cloud machine with a coding agent already running on it. The work carries on while you are offline, asleep or on a train — and it is all still there when you open the tab again.

$10 / seat / month · compute from $0.18 an hour, billed by the second

acme-corp $0.71 so far
  • fix/stripe-webhook-retry live

    Editing src/billing/webhook.ts

    acme/checkout 8 vCPU 41:07 $0.49
  • feat/org-invites live

    84 tests passed · serving :3000

    acme/checkout 2 vCPU 1:12:11 $0.22
  • chore/bump-angular starting

    Cloning acme/site…

    acme/site 4 vCPU 00:12 $0.00

Zero inbound ports

Nothing on the internet can open a connection to your box.

One instance per branch

Dedicated, never shared, sized from 2 to 16 vCPU.

Three ways in

Browser terminal, SSH, and a preview URL per port.

Gone when the PR merges

The machine is reaped and its secrets go with it.

Parallelism

Your branches stop taking turns.

One machine per branch is what makes ten agents at once an ordinary Tuesday. No stashing, no port already in use, no waiting for one agent to finish before you start the next — and nothing running on your laptop competing for its fans.

Size each branch

A refactor across a monorepo gets 16 vCPU; a docs fix gets 2. The size you pick is the machine you get — one environment, one instance, no bin-packing.

The team sees the fleet

Environments belong to the organization, not to whoever pressed the button. A colleague can open the branch that is already running instead of starting a second box on the same work.

The workspace follows along

The agent pushes an event when it moves, so the file tree and the diff refresh themselves. Nothing polls, and a missed event costs a stale second, not a wrong view.

Availability

The cloud does the waiting.

The agent runs in a tmux session on the instance, not in your browser tab. Shut the lid, lose the wifi, close the window — the pane keeps running on the box. Open the workspace again and you reattach to it, scrollback intact.

  • Nothing to reconnect, nothing to replay, nothing lost to a dropped socket.
  • Start a long build at 18:00 and read the output tomorrow.
  • A cron job at 3am can push a branch: access to your repositories outlives your session.
agent detached · still running

$ tmux new-session -A -s agent

[detached — client gone 21:14]

● claude

  running 47 test files…

  wrote src/orgs/invite.ts

  wrote src/orgs/invite.test.ts

  

Access

Run it, look at it, take over whenever you like.

Every port becomes a link

Start a dev server on any port and Ephemerals hands you a URL for it. WebSockets and hot reload are proxied, so the page updates as the agent edits the file — and previews live on their own registrable domain, so a page inside one can never reach the app's session cookie.

p3000-562ae1d6.ephemerals-previews.dev
port 3000 hot reload connected

Full control, from your own terminal

Your keys, your dotfiles, root on the machine. Forward a port with ssh -L and the environment's localhost is your localhost. Public keys only — passwords are refused outright, and the environment itself still has no port open to the world.

$ ssh 562ae1d6@ssh.ephemerals.dev

ubuntu@ephemeral:~/checkout$ git status

On branch fix/stripe-webhook-retry

$ ssh -N -L 3000:localhost:3000 562ae1d6@ssh.ephemerals.dev

Security

The safest place to let an agent run is not your laptop.

An agent with a shell is an agent with your SSH keys, your browser profile and your company's whole checkout. Give it a machine that holds none of that, that nobody can connect to, and that you can throw away.

Isolated

Nothing can dial in.

Each environment is one EC2 instance in a security group with no inbound rules at all. Every terminal, forward and preview rides a channel the box opened outward through AWS Systems Manager.

Your secrets are sealed with a KMS data key under an encryption context, so a row lifted into another account does not decrypt — it errors. The instance role holds no KMS grant, and no secret value is ever returned to a browser.

Auditable

Every request is decided fresh.

Your role is never baked into the cookie; it is re-read from the database on each guarded request. Removing a member takes effect on their next call, not at the end of a seven-day session.

Support access is a signed, read-only session that names the real actor inside the token, with a required reason and a durable record of who, whom, why and when. Commits are authored from the session that made them.

Ephemeral

The blast radius has an end date.

A machine exists for one branch. When the pull request merges, it is reaped and the secrets scoped to it are deleted with it.

A bad afternoon costs you one disposable box, not your workstation. There is no long-lived host accumulating state, credentials and everyone's half-finished branches.

Review

Hand it over the moment it is ready.

Read the diff in the workspace, commit, push the branch, open the pull request — without leaving the tab. The commit is authored by the person who pressed the button, resolved per request, so a colleague picking up a running branch does not sign your name to it.

  • Send a reviewer the preview URL and they see the running app, not a screenshot.
  • They can open the same environment, the same terminal and the same file tree.
  • Merge the PR and the machine is reaped for you.
fix/stripe-webhook-retry 4 files changed

src/billing/webhook.ts

- if (event.type === 'invoice.paid') {

+ if (isTerminal(event.type)) {

+ await claimBeforeReport(event.id);

 

src/billing/webhook.test.ts

+ it('ignores a replayed event', async () => {

Coming soon

Code from your phone. Or from Slack.

The workspace is a browser tab and the agent is a process on a machine — neither of them needs you sitting in front of it. Start a branch from your phone on the way in, or from the thread where somebody reported the bug.

  • In progress Mobile workspace
  • In progress Slack app

Pricing

Ten dollars a seat, plus the machine time you use.

Compute is metered per second from the moment an environment is created until the moment it is deleted. No trial, no free tier, and no card details in our database — payment is collected by Stripe and managed in Stripe's own portal.

Per seat

$10 / user / month

Billed monthly, counted from the members of your organization. Everyone in the org can see and use every environment in it.

Per machine hour

Compute prices by machine size
SizeMemoryPer hour
2 vCPU4 GB$0.18
4 vCPU8 GB$0.36
8 vCPU16 GB$0.72
16 vCPU32 GB$1.44

Charged by the second, so a nine-minute environment costs nine minutes.

Give your next branch a machine of its own.

Sign in with GitHub, pick the repositories you want to work on, and start one. It boots with the toolchain and the agent already on it.

Start with GitHub

We only ask for the repositories you pick.