Host persistent agents
on the cloud.

Give each of your users their own VM, forever.

Start free
Book a demo

Developers building on Maritime work at these companies

Give your agents true autonomy.Their own space to explore, build, break things, and try again.

atlas · /data
atlas
reports
september.pdftoday
workspace
clients.xlsx08:03
journal.md412 entries
memory
2026-09.md
Image
Ary
online
can you move our 9am?18:03
ok, moving to 10am18:04
done18:05
Type a messageok, moving to 10amdone
mail.google.comcalendar.google.com
signed in as atlas
9:00
10:00
11:00
Sync with Ary

Persistent workspace. Files, repos, browser auth that stays signed in, etc. An agent can come back after a week and pick up where it left off.

paper.tex
paper.pdf
root@atlas: ~/paper+
$ apt install texlive-latex-base
Get:1 texlive-binaries8.1 MB
Get:2 texlive-base21.4 MB
Get:3 texlive-latex-base1.2 MB
Fetching30.7 MB
Setting up texlive-latex-base ...
$ pdflatex paper.tex
Output written on paper.pdf (4 pages).
$ libreoffice paper.pdf
$
paper.pdf · LibreOffice Draw
Snapshot-Restore Scheduling for Persistent Agent Micro-VMs
Ary Shrivastava, Maria Gorskikh, and Brandon Li
September 3, 2026
Abstract

Long-lived software agents spend most of their lifetime idle, yet the conventional deployment keeps a full virtual machine resident for each of them. We study a scheduler that snapshots an idle guest to disk and restores it on the next inbound message, so that a parked agent costs only its storage. We characterise the restore path, show that its latency is dominated by page-cache warm-up rather than by the hypervisor, and give a bound on the expected monthly cost of an agent as a function of its wake rate.

1  Introduction

A persistent agent is a process with a disk, a set of credentials, and a schedule of its own. Unlike a request handler, it has state that outlives any single interaction, which rules out the stateless scaling model of serverless platforms. We model an agent as an alternating sequence of awake and asleep intervals and write a(t) ∈ {0, 1} for its state at time t. The cost over a horizon T is then

C(T) = csST + cv ∫0T a(t) dt(1)

where S is the size of the snapshot on disk and cₛ, cᵥ are the storage and compute prices. For the agents in our fleet the second term is small: a typical agent is awake for eleven minutes a day, and the bound in Section 4 follows from this observation alone.

2  The restore path

We restore a guest in three steps. The memory snapshot is mapped rather than read, so the first instructions execute before the file is resident; the block device is attached as a thin clone of the parked volume; and the network tap is re-created with the address the guest had when it slept.

Download and run software. Apt-get any library you need, run and operate headful Chrome, download WhatsApp, clone repos, and so on.

train.py
model.py
data.py
1
2
3
4
5
6
7
8
9
10
11
12
13
import torch
from tqdm import tqdm
from model import Net
from data import loader
net = Net().to("cuda")
opt = torch.optim.Adam(net.parameters(), lr=3e-4)
for epoch in range(5):
bar = tqdm(loader, desc=f"Epoch {epoch + 1}/5")
for x, y in bar:
loss = net.step(x, y)
opt.step()
bar.set_postfix(loss=f"{loss:.2f}")
torch.save(net.state_dict(), "workspace/model.pt")
TERMINALPROBLEMSOUTPUT
$ python train.py

Run AI generated code. Have your agent write and serve web apps and APIs, or run scripts it wrote itself.

notes.md
report.pdf
root@atlas: ~+
$ node server.js
listening on :8080
$
notes.md
report.pdf
root@atlas: ~+
$ node server.js
listening on :8080
$
notes.md
report.pdf
root@atlas: ~+
$ ./backup.sh
synced 1.2 GB to s3
$
notes.md
report.pdf
root@atlas: ~+
$ pdflatex paper.tex
Output written on paper.pdf.
$
notes.md
report.pdf
root@atlas: ~+
$ python ingest.py
48,000 rows written
$
notes.md
report.pdf
root@atlas: ~+
$ node server.js
listening on :8080
$
notes.md
report.pdf
root@atlas: ~+
$ ./backup.sh
synced 1.2 GB to s3
$
notes.md
report.pdf
root@atlas: ~+
$ pdflatex paper.tex
Output written on paper.pdf.
$
notes.md
report.pdf
root@atlas: ~+
$ python ingest.py
48,000 rows written
$
notes.md
report.pdf
root@atlas: ~+
$ node server.js
listening on :8080
$

Actual isolation and safety. Give your agent the autonomy to try anything, and safely mess up along the way.

Every agent gets a real, persistent machinethat's up in half a second.

An actual VM.

A Firecracker micro-VM with its own kernel, on bare metal, with preloaded dependencies.

A persistent disk.

Files, memory, logins, and packages stay through sleep, restart, and redeploy.

Really fast boot and wake latency.

New machines boot in 0.5s. Sleeping ones are back in 0.6 s, mid-task.

Run your agent here.Dashboard, CLI, and SDK.

Deploy an agentFree for 3 agents.

Or keep your agent, but give it a computer.One MCP. A desktop per user id.

Early access
Computers reference
// any client that speaks MCP: Cursor, Claude Code, your own agent
{
"mcpServers": {
"maritime-computers": {
"type": "http",
"url": "https://mcp.maritime.sh/mcp",
"headers": { "Authorization": "Bearer mk_..." }
}
}
}
$ claude mcp add --transport http maritime-computers \
https://mcp.maritime.sh/mcp
atlas · desktoplive · noVNCTake over
ApplicationsPlaces10:42
Hetzner Accounts
←Search or type a URL
Terminal
agent@atlas:~$

A headful Linux desktop inside the agent's own micro-VM. It opens a browser, clicks, types, and files things. You watch live, or take the mouse.

Try a desktop agent

Building an agent startup?Get up to $10,000 in credits.

Apply