logoalt Hacker News

Design and Implementation of Sprites

97 pointsby sethevtoday at 3:59 PM76 commentsview on HN

Comments

thomasfromcdnjstoday at 7:13 PM

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.

drob518today at 8:56 PM

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.

raro11today at 6:12 PM

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
peterldownstoday at 9:14 PM

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.

MrOrelliOReillytoday at 5:53 PM

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
roywigginstoday at 5:28 PM

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
akrausstoday at 8:35 PM

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…

tom_today at 6:25 PM

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

show 3 replies
nnevatietoday at 8:42 PM

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
senkotoday at 8:01 PM

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
ssullytoday at 7:44 PM

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.

amonkstoday at 9:09 PM

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
dangtoday at 7:57 PM

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

tptacektoday at 5:24 PM

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 2 replies
lbritotoday at 6:34 PM

>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?

boundlessdreamztoday at 6:46 PM

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

show 4 replies
tomjen3today at 8:05 PM

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
fuddletoday at 6:16 PM

How does Sprites compare to E2B sandboxes?

benatkintoday at 6:57 PM

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
ZeroConcernstoday at 5:54 PM

[flagged]

show 3 replies
neuroelectrontoday at 6:35 PM

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

show 1 reply