Design and Implementation of Sprites

Architecture & Data Model

  • Global control plane for Sprites uses object storage plus “one SQLite DB per organization”, replicated via Litestream; commenters highlight this as an underused pattern, comparing it to Cloudflare Durable Objects and “1 DB per user” designs.
  • An Elixir/Phoenix-based orchestrator uses distributed Erlang (via dns_cluster/libcluster) to run queries on remote SQLite instances, sending code to where the DB is rather than shipping queries over the wire.
  • Storage is tiered: local NVMe with async/object backing; first heavy writes (e.g., npm install) can be slower, but follow‑up runs are faster and performance is expected to improve.

Intended Use Cases & Limits

  • Core pitch understood as: fast-creating, suspendable, stateful sandboxes, good for dev boxes, agents, small personal/side projects, and “malleable, personalized apps.”
  • Sprites are explicitly not positioned (today) as horizontally scalable infra for Internet-scale production APIs; larger workloads should migrate to Fly Machines or similar.

Suspend/Idling, Billing, and Pricing

  • Multiple users report Sprites never appearing to idle, long “running” times, and no obvious way to stop them via CLI; they fear silent overbilling.
  • Fly replies that Sprites only count as “active” when serving HTTP or with an attached console, and CPU billing is utilization-based; idle Sprites should cost almost nothing.
  • There were bugs in suspend and in status caching; fixes are being rolled out, but some existing Sprites need environment upgrades. Users request: explicit idle timeouts, a force‑idle CLI command, and clear usage/billing metrics.

Developer Experience & Documentation

  • Strong interest but repeated complaints about sparse or broken documentation, confusing API docs, unreachable docs site, and somewhat unintuitive CLI.
  • Team explicitly prioritizes shipping early over polish; promises more documentation and UX refinement, but believes early adopters tolerate rough edges.
  • Questions arise around workflows: SSH agent forwarding for private repos, copying files (now partly addressed by a new FS HTTP API), base images, and better IDE integration (e.g., SFTP mounts).

Naming & Expectations

  • Many readers initially expected an article about 2D game sprites; some find the name misleading or “terrible,” others argue the term is still widely used and fine.
  • Overall sentiment: technically very interesting and promising, but early-stage, with gaps in polish, observability, and user guidance.