logoalt Hacker News

Design and Implementation of Sprites

169 pointsby sethev01/15/2026106 commentsview on HN

Comments

MrOrelliOReilly01/15/2026

I appreciate the Fly.io team’s enthusiasm and am optimistic this will mature into a product I’d pay for, but my initial impression was of a lack of polish.

Documentation is sparse, or not even available? The API docs don’t tell you much about the service itself, and a Google search for docs returns an inaccessible website as the first result (https://docs.sprites.dev). Blog posts and forum threads and Claude skills shouldn’t be a substitute.

The snappiness of the sprites is very cool and I can definitely see it integrating into future Claude Code workflows. But the lack of a base container images means you’re still doing setup work on the sprite before you can begin development. I understand the philosophy is that sandboxes should be persistent, but Claude Code sessions also work better when isolated from each other, so it’d be nice to have some precepts to get a workspace setup quickly (given agentic coding is clearly a target).

I also found the CLI unintuitive but maybe that was just me!

So very cool idea but left with the impression that the Fly.io team’s should have spent a couple weeks on polish before shipping.

show 2 replies
raro1101/15/2026

Tried it. Docker wasn't preinstalled so asked Claude to do it and make sure it's running (supervisord or the likes isn't preinstalled).

It neatly did so and "registered" it as a sprite service. Then I exited my session, waiting for the sprite to go idle, but I don't think it ever does.. Still have it active. Don't know how to idle it.

Can't tell for sure if this means I'm losing credits as there is no billing usage shown anywhere.

Also waiting for the moment where I can launch a sprite from another's checkpoint.

show 4 replies
thomasfromcdnjs01/15/2026

I created a "mcp server" for sprites yesterday through this new ecosystem I am working on, you can clone the collection, and then just add this https://tpmjs.com/api/mcp/ajax/sprites/sse mcp sse url to claude desktop, or anything you want.

tpmjs is a registry of ai sdk npm packages (i created them for sprites), which you can add to personal collections, we automatically server your collections as mcp servers if you want.

Creating sprites in an example chat bot -> https://imgur.com/a/ETNxR1o

Creating sprites in claude desktop -> https://imgur.com/myC0U28

Listing out my sprites in claude desktop -> https://imgur.com/rgBU0jm

---

You can view the collection of tools here -> https://tpmjs.com/ajax/collections/sprites (fork it to use it yourself)

I'm looking into exe.dev and sprites.dev to build out extra features into tpmjs, agent sandboxes make a lot of sense.

roywiggins01/15/2026

I've been having fun with OpenCode's webui in a Sprite, set it up right in Termux and you can vibe code a website with a full backend from your phone. I have a Termux shortcut that sets up a port forward and pops open my web browser to the OpenCode webui. OpenCode can pick up the Sprite skill built into the containers so it can manage the instance itself (mostly setting up and destroying services).

Of course you can do similar with a VPS, but this makes it very easy (and cheap!) to spin up an entire new machine with a public url and HTTPS whenever you want to.

show 1 reply
drob51801/15/2026

Sounds cool. I love Fly.io. That crew is sharp. The article could do with a few pictures to illustrate the layers. I’ve read it, but I can’t say that I understand the implementation.

tptacek01/15/2026

I wish I'd had more space to write about the global orchestrator design, because it's fun.

The Fly Machines orchestrator goes through some trouble to keep the source of truth for each VM decentralized, owned by the physical it runs on. But there's still global state --- apps, organizations, services. That stuff is all on Postgres. Postgres keeps up with it just fine but I'd be lying if I didn't say we're always looking out the corner of our eyes on metrics.

The global state for Sprites is on object storage. Each organization gets a separate SQLite database, and that database is synchronized to object storage with Litestream.io (Lightstream is load bearing in a bunch of places here; solid as a rock for us).

I think people really still sleep on the "multiple SQLite database" backing store design.

show 3 replies
tom_01/15/2026

The sprite is a pretty outdated thing these days, but is the term sufficiently unused to make it free for reuse?

show 4 replies
senko01/15/2026

Not sure where to report this, so here goes: something weird's going on with the title setters (from default .bashrc, the 'case' block near the top) when connecting from my Linux box.

Tried with xterm, tilix and ghostty, all of which support the title setter escape sequence locally. For some reason, these get messed up (smells like edge case with escaping) and the result looks like this:

    $ sprite c  ": history-search-backward'
    \]\u@\h\[\]:\[\]\w\[\]\$ '                           ": history-search-forward'sprite@sprite:~$
    "sprite@sprite:~$
I'm guessing y'all use Zsh because that works flawlessly :)
show 1 reply
dang01/15/2026

Recent and related: Code and Let Live - https://news.ycombinator.com/item?id=46557825 - Jan 2026 (186 comments)

agosta01/16/2026

Guess I'm confused - is the ideal use case for Sprites for suspendable, iterative, sandboxed compute sessions (with disk)?.. Or is the idea that these things can also/should run production workloads in place of a traditional webserver setup? If the latter, can every sprite boot up with what's needed to instantly serve web traffic? Or would they need to build/install things internally every time a new sprite turned on? Do these horizontally scale a long lived, high trafficked application?

show 3 replies
ssully01/15/2026

Sounds neat! Also kind of funny, because I already use Fly machines as a bit of a playground for some personal projects and really like it for that purpose. I have minor issues, some of which this blog post directly talks about, but nothing that has held me back.

Also I like a lot of what you get built-in with Fly machines(ex:Grafana). So I am curious how this would fit in my workflow. Maybe Sprites for rapid development and toy projects, and move to a Fly machine when I need something a little more beefy?

Looking forward to checking this out.

nnevatie01/15/2026

I was looking forward to a post about designing sprites, i.e. little graphical blobs flying across screen. Needless to say, this was not it.

show 2 replies
benatkin01/15/2026

To me, this sounds more monolithic than containers. I think I'd like something less monolithic. However, those who like monorepos might be more quick to develop an interest in this. I could of course use containers within the MicroVM, which is what I really want anyways, because I want lighter weight containers than MicroVMs for sandboxes.

While looking into giving fly another shot as a cloud provider even though I think it's still pretty much a commodity for me, I found an issue in Google: I searched for "fly.io sao paolo" and the title of the first result on fly.io is "Regiones · Fly Docs", translated from english to Spanish. While I find the translation in titles on Google annoying, I haven't often seen the characters messed up like this. I reproduced this in Incognito at this URL: https://www.google.com/search?hl=es&q=fly.io%20sao%20paolo

show 1 reply
karlmdavis01/20/2026

I love absolutely everything about this… except for the lack of cross-platform support. I know how ludicrous it is to expect that, but… most workflows I’m considering solutions like this for are crippled by their inability to run Xcode or a native Windows build. Heck, I’m pretty sure I’ll even run into glibc version mismatches that block work I care about.

Frustrating that the best solution is still, “well, if that’s important to you, then set that up in your home lab or rent some extra (pet) VMs in the cloud.”

tomjen301/15/2026

I was reading through the documentation and it seems like these are writing directly to storage not on the machine where the sprite lives? That makes me worry for how slow the storage is. npm install writes a lot of files.

show 1 reply
akrauss01/15/2026

What I missed when trying it was a simple way of accessing private repositories. There does not seem to be ssh agent forwarding, or is there? What do people use?

I realize this is all very fresh, but still wondering…

show 1 reply
blackqueeriroh01/15/2026

I love my sprite.

I just want an easier way to connect to and launch sprites from my phone.

any ideas there?

peterldowns01/15/2026

Very cool. One usecase the blogpost seems to hint at is to use this to implement async agents that write code for you. Like, you have some system that hears about a new issue — from slack, linear, wherever — and then spins up a Sprite, checks out the codebase, works on a solution, commits, and creates a PR.

Is that what you guys are thinking of? I get that Sprites are a new primitive, but I feel confused as hell about what exactly I'd want to do with it.

blackqueeriroh01/15/2026

I love sprites. I’m currently trying g to figure out how to best launch and connect to sprites from iOS. I’ve tried several things - vibe coding a terminal app is a little wild and not the best way maybe to handle this.

I believe currently the sprites CLI is using websockets to handle the connection, and the external proxy when you make a sprite public doesn’t handle websockets correctly?

Does that sound right?

dangoodmanUT01/15/2026

Checkpoints defined by the guest, not the host, was something I was working on recently too [1] (just before this came out). Very validating!

[1] https://github.com/danthegoodman1/checker

lbrito01/15/2026

>Any time anybody needs a pen, several are at hand, in exactly the first place they look.

>Now, today, under the hood, Sprites are still Fly Machines. But they all run from a standard container.

So its basically a faster VM?

What are some use cases for this that benefit from the faster boot time?

show 1 reply
disillusioned01/15/2026

Made a sprint and connected via Windows Terminal and noticed it's purely white on black, not observing the normal Claude terminal color schemes... any ideas why that's the case? Am I missing something insanely simple?

amonks01/15/2026

Very cool product, but I have to ask, out of personal interest:

What did the bracket in the slack channel determine was “Chicago’s best sandwich”? Or the top three, even? I’m always looking for new sandwiches.

Off the top of my head, I might nominate,

- the pork tenderloin at JT’s

- the Big L from Fontano’s (hot take, I know; it might go to Graziano’s if they hinge-cut the bread, but not doing so is a fatal flaw to me)

- the Cambodian fried chicken sandwich that’s occasionally available at Hermosa

- honorable mention: the comically oversized chicken torta at Migos

(Edit: I inexcusably transposed Bari and Fontano’s; the nomination is intended for Fontano’s)

show 1 reply
boundlessdreamz01/15/2026

Is there a way to copy files to/from the sprite? Couldn't see an option for that in the CLI

show 4 replies
fuddle01/15/2026

How does Sprites compare to E2B sandboxes?

neuroelectron01/15/2026

This is not the kind of sprites I'm interested in

show 1 reply
ZeroConcerns01/15/2026

[flagged]

show 3 replies