Skip to main content
A bespectacled bird reading a quickstart guide while a small creature sleeps in a tiny bed nearby
Sprites are cloud VMs that feel like persistent dev environments. You can run commands, install packages, create files—and everything stays exactly how you left it. Unlike containers that reset each time, Sprites remember your entire filesystem between sessions. The magic: when you’re not using your Sprite, it goes to sleep. Send a command or HTTP request, and it wakes up instantly. Everything is right where you left it. This guide will walk you through creating your first Sprite. In just a few minutes, you’ll have a persistent development environment that responds to HTTP traffic and remembers everything between runs.

Install the CLI

Install with our install script (macOS/Linux):
This script auto-detects your platform, verifies checksums, and installs the latest Sprite CLI to ~/.local/bin. For Windows or manual installation, see CLI Installation. Verify installation:

Authenticate

Sprites uses your Fly.io account for authentication:
This opens a browser window to authenticate with Fly.io.
If authentication fails, try running fly auth logout followed by fly auth login first, then retry sprite org auth.

Create Your First Sprite

This creates a new Sprite with default configuration, running and ready to accept commands. Set it as your active Sprite to avoid adding -s my-first-sprite to every command:
Use sprite list to see all your Sprites, or sprite destroy -s my-first-sprite when you’re done with one. You can have multiple Sprites running simultaneously—each with its own isolated environment.

Run Commands

Execute commands in your Sprite:
Auto-wakeup magic: When you’re not using your Sprite, it shuts down to save resources. When you run a command or hit its URL, it wakes up instantly—like magic. No manual starting or stopping required.

See Persistence in Action

Your Sprite comes pre-configured with common development tools (Node.js, Python, Go, Git, and more). Here’s the magic: everything you install or create persists between commands.

Check available runtimes

See what’s already installed and ready to use:

Install a package

Install dependencies just like you would locally—they’ll stick around:

Create and read files

Files you create persist across sessions. Write once, read anytime:
Unlike containers that reset on each run, your Sprite keeps your installed packages, files, and entire filesystem intact.

Start a Web Server

Every Sprite has a unique HTTP URL and can serve traffic. This makes it perfect for testing APIs, hosting prototypes, or running background services.

Serve HTTP

First, get your Sprite’s public URL:
Then start a simple Python server:
Visit the URL in your browser—you’ll see Python’s directory listing page. Press Ctrl+C to stop the server when you’re done. Your Sprite automatically routes HTTP traffic to port 8080 and wakes up to handle requests.
By default, your Sprite’s URL requires authentication. To make it publicly accessible, run:
The sprite auth mode (the default) requires a Sprite token with Bearer authentication.

Test on-demand wake-up

Here’s where it gets cool. Close your terminal, wait a minute, then visit the URL again. Your Sprite wakes up automatically to serve the request. That’s the magic of on-demand wakeup—no manual starting or stopping required.
You’ve got a working Sprite! You’ve created a persistent environment, installed packages, created files, and served HTTP traffic—all of which will be there next time you connect. Try cloning a repo, running a build, or deploying a tiny HTTP service to see what else you can do.

Using the SDKs

The CLI is perfect for day-to-day development, but if you’re building tools, automation workflows, or integrating Sprites into your application, the SDKs give you programmatic control. Use them to dynamically create environments, orchestrate workloads, or embed Sprites into your product.

Next Steps

Working with Sprites

Sessions, ports, persistence, and everything beyond the basics

CLI Reference

Complete command-line documentation