---
title: "Checkpoint & Restore — Sprites"
description: "Statefulness, with an undo button. Checkpoints on Sprites."
---

# Checkpoint & Restore Statefulness, with an undo button

Sprites are safe, sandbox environments with checkpoint and restore. Restore your entire environment to a working state in seconds.

$30 trial credits

create, like, 500 Sprites for free

[Play with Sprites](https://fly.io/app/sign-up) [Docs](https://docs.sprites.dev/)

### Footgun-proof vibe coding

AI agents can write goofy code. Sprites take the stress out of vibe coding by letting you create and restore from checkpoints.

### Version control for the whole VM

Creating a checkpoint on a Sprite is like a git commit for your whole system. Database changes, packages, policies: it all gets tracked in a checkpoint.

### Fast and secure backups

Checkpoints take about 300ms to create and your Sprite environment won't even notice. Backed up to object storage for durability and peace of mind.

Quick Start

\#

Install the Sprites CLI curl https://sprites.dev/install.sh | bash

\#

Create a Sprite sprite create my-project

\#

Do some work, then checkpoint sprite checkpoint -s my-project -c "looking good so far"

\#

Oops. Restore to the last checkpoint sprite restore -s my-project

Disposable Compute

Sprites get VMs when they need them. Fire one up, do some work, forget about it for 6 months. We make sure it gets compute when you come back.

Firecracker VMs

Sprites execute code in Firecracker VMs. Even we have a hard time seeing what they're doing.

Isolated Networking

VMs run on isolated networks. Nothing can connect to your Sprite directly.

Dynamic Resources

Sprite VMs have access to big chunks of CPU and Memory. Your blobs of code just use what they need, up to 8 CPUs and 16GB of RAM for any given run.

Tiered storage

You read and write to fast, directly attached NVMe storage. Your data then gets written to durable, external object storage.

Same disk for every run

When Sprites become inactive, we remove their compute (and stop charging you!). When we assign new compute to Sprites, they come up with the exact same data on the filesystem.

Max Compatibility

Since it's just ext4, you won't run into weird edge cases like you might with NFS or FUSE mounts. You can happily use shared memory files, for example, so you can run SQLite in all its modes.

Only pay for actual data

You don't pay for allocated filesystem space, just the blocks you write. And it's all TRIM friendly, so your bill goes down when you delete things.

Live Checkpoints

Checkpoints are transactional metadata. They take about 300ms and your Sprite environment won't even notice.

Copy-On-Write

We only copy blocks that have changed. This keeps your bills down, incremental checkpoints don't use much space.

Full Environment

If you've installed packages, services, or policies in your Sprite, these are checkpointed with your code and data.

Quick restores

Restores put everything in place then restart your Sprite. You'll be reconnected in well under a second.

Manage them within the environment

Point your LLM at /.sprite/llm.txt and it'll happily take care of checkpoints for you.

URLs for External Access

Sprites have independent URLs.

Automatically Activate Sprite

Requests to your Sprite URL assign new compute to your Sprite, if inactive. Your data remains, and even a "cold start" request will typically take less than 1s.

Just listen on 8080

Requests to your sprite URLs are proxied to whatever you have listening on port 8080 within the Sprite.

Public Access, if you want

Just run `sprite url -s <name> update --auth public` and we open your Sprite URL to the internet. Serve up an entire app, show your friends, and accept webhooks. If it speaks HTTP it can speak to your Sprite.

Fine-grained network egress

Layer 3 network policies restrict outbound connections.

Simple rules

Configure sprites with a list of domain names to allow, include our default list of LLM friendly destinations, or let them access everything.

Live updates via REST API

Network policies are updated via an authenticated REST API. Updates are enforced immediately.

Transparent to Applications

Since these are enforced at L3, apps can use the full range of TCP and UDP protocols available to them.

## Billing

Hourly Per Second

You pay only for Storage and compute resources while a Sprite is active. Usage is aggregated across your organization.

### CPU Time

$0.0385 /vCPU/hr

Minimum 0.0625 CPU while running.

### Memory Time

$0.021875 /GB RAM/hr

Minimum 256MB RAM while running.

### Storage

$0.50 /GB/month

Prorated to the hour. 1,000 sprites using 10MB data = 10GB total.

All compute resources are billed per second. Storage is billed hourly but aggregated monthly.
