Skip to content

Configuration Reference

This page documents all configuration options available for Sprites, including resource allocation, environment settings, and client configuration.

Sprites currently use a fixed resource configuration set by the service:

ResourceValue
CPUs8 vCPUs
RAM8192 MB
Storage100 GB

The region is chosen by the API based on its deployment region (FLY_REGION), with a fallback of iad. These values are not configurable via the CLI/SDK/API yet. (SDK config fields are accepted but ignored by the API.)

Configure HTTP access to your Sprite:

OptionValuesDefaultDescription
authsprite, publicspriteAuthentication requirement
Terminal window
# Make URL public
sprite url update --auth public
# Require authentication
sprite url update --auth default

For the REST API and Go SDK, use sprite or public for url_settings.auth.

VariableDescriptionDefault
SPRITE_TOKENAPI token override (env fallback)-
SPRITE_URLDirect sprite URL (for local/dev direct connections)-
SPRITES_API_URLAPI endpointhttps://api.sprites.dev

SDKs do not read environment variables automatically. Pass values explicitly (commonly from env vars):

Terminal window
export SPRITE_TOKEN="spr_xxxxxxxxxxxxx"
interface ClientOptions {
baseURL?: string; // API endpoint (default: https://api.sprites.dev)
timeout?: number; // Request timeout in ms
}
const client = new SpritesClient(token, {
baseURL: 'https://api.sprites.dev',
timeout: 30000,
});
// Configure with options
client := sprites.New(token,
sprites.WithBaseURL("https://api.sprites.dev"),
sprites.WithHTTPClient(&http.Client{
Timeout: 30 * time.Second,
}),
)

Location: ~/.sprites/sprites.json (current) and ~/.sprites/config.json (legacy compatibility)

{
"version": "1",
"current_selection": {
"url": "https://api.sprites.dev",
"org": "personal"
},
"urls": {
"https://api.sprites.dev": {
"url": "https://api.sprites.dev",
"orgs": {
"personal": {
"name": "personal",
"keyring_key": "sprites-cli:<user-id>",
"use_keyring": true,
"sprites": {}
},
"team": {
"name": "team",
"keyring_key": "sprites-cli:<user-id>",
"use_keyring": true,
"sprites": {}
}
}
}
}
}

Location: .sprite in project directory

{
"organization": "team",
"sprite": "project-dev"
}

This file is automatically created by sprite use and should be added to .gitignore.

Available for all execution methods:

OptionTypeDescription
cwdstringWorking directory
envobject / []stringEnvironment variables (JS object or Go []string)
ttybooleanEnable pseudo-terminal
rowsnumberTTY rows (default: 24)
colsnumberTTY columns (default: 80)
detachablebooleanCreate detachable session
sessionIdstringAttach to existing session
controlModebooleanEnable control messages (requires detachable/sessionId)
Terminal window
sprite exec [options] [command]
Options:
-dir <path> Working directory
-env <KEY=VALUE,KEY2=VALUE2> Environment variables (comma-separated)
-tty Allocate pseudo-terminal
-id <session-id> Attach to session
-detachable Create detachable session

The default Sprite environment includes:

ToolVersion
Node.js22.20.0
Python3.13.7
Go1.25.1
Ruby3.4.6
Rust1.90.0
Elixir1.18.4
Erlang28.1
Java25 (Temurin)
Bunlatest
Denolatest
ToolDescription
Claude CLIAnthropic’s Claude
Gemini CLIGoogle’s Gemini
OpenAI CodexOpenAI’s Codex CLI
CursorCursor CLI
ToolDescription
GitVersion control
curlHTTP client
wgetFile download
vimText editor
nanoText editor
htopProcess viewer
tmuxTerminal multiplexer
jqJSON processor
ManagerFor
aptSystem packages
npmNode.js
pipPython
cargoRust
go getGo
gemRuby
mixElixir

No default ports are exposed. Start services on any port and access via:

  1. Sprite URL - https://sprite-name.sprites.dev:PORT
  2. Port forwarding - sprite proxy PORT
  • Outbound: Full access to internet
  • Inbound: Via URL or port forwarding only
  • DNS: Standard resolution
PropertyValue
Typeext4
Provisioned size100 GB (current default)
PersistenceFull
Location/ (entire filesystem)
DirectoryDescription
/home/spriteUser home directory
/tmpTemporary files (not persisted on restart)

Sprites currently hibernate after 30 seconds of inactivity. This timeout is not configurable via the CLI/SDK/API yet.

For Go, use context cancellation:

ctx, cancel := context.WithTimeout(ctx, 5*time.Minute)
defer cancel()
cmd := sprite.CommandContext(ctx, "long-command")