I built an iOS app to use Claude on Sprites!

I’ve been a bit obsessed with Sprites, because they’re such a great way to run Claude Code. I love the sandboxed environment and the ability for Claude to safely do whatever it likes, and having a URL to expose a server is awesome.

But I wanted to be able to run them on my phone, and that’s a bit tricky because 1) no SSH, and 2) terminal Claude on my phone is a bit rubbish anyway. So I thought a bunch about the workflow, got Claude to research Claude Code, and came up with an app I think is pretty cool: Wisp. GitHub - mcintyre94/wisp: An iOS app for using Claude in fly.io Sprites

The core feature of Wisp is exposing Claude on your Sprites, in a chat UI:

This is a little like running Claude Code Mobile, except it has way more tools and can do all the sprite things. Responses and tool uses stream as you’d expect, and thanks to services you can come back later if it’s taking a while. Send a follow up and it’ll seamlessly resume that Claude session.

You can also have multiple simultaneous chats per Sprite, and resume Claude sessions that were started elsewhere. Your Sprite only runs while it’s responding, unlike interactive Claude sessions in the console.

When you first start the app you enter a Sprites token and a Claude Oauth token. You can also optionally auth Github. These are only ever used to make requests to the Sprites API and to auth your Sprites.

Wisp also has all the basic stuff - see all your Sprites, toggle the URL auth setting, view checkpoints/take a new one. There’s an embedded webview that automatically auths you, so you can view the URL without making it public. You can optionally clone a repo when you create a Sprite to get started right away, and if you authed Github then the Sprite will also be authed. It also auths the Sprites CLI if you want to do fun agent swarm stuff and ask it to make its own Sprites!

I think this is a pretty awesome workflow and would love to hear your thoughts!

Currently it’s only available as an open source iOS app, so I think you’ll need XCode if you want to give it a try. If there’s demand then I can learn how to get Testflight set up!

5 Likes

Just added file upload - I think this is the easiest way to put eg a PDF file onto a Sprite. Really handy for mobile workflow, especially if you have eg a Claude research article you want to work with. https://xcancel.com/callum_codes/status/2025688804795814017

I think this is actually missing from the sprites CLI and you’d need to mount the filesystem or use the API manually.

I’ve been experimenting with combining checkpoints into chat. It now automatically takes a checkpoint after the end of a response where Claude wrote, or you can do it manually from the last message. Those checkpoints are then displayed inline in chat right under that response.

You can then tap any of those checkpoints to restore the Sprite to that point and start a new chat.

I think this is a pretty great way to iterate, each chat becomes a bunch of branch points and you can roll back/forward to any point whenever you like.

Your app sounds very useful and I hope to give it a try when I get a chance. Thank you.

Some feedback - I hope the automatic checkpoints feature that you describe is optional: it’s not how I use checkpoints.

1 Like

Thanks Tom! Good feedback, I’ve added a setting to enable the auto-checkpoint feature. It’s a bit of an experimental idea so I’ve made it default false. The “Create Checkpoint” context menu option is always available on the last assistant chat message if you do want to save one at any time.

I’ve added a default worktree workflow, where each chat creates a new worktree and branch. This means you can work on a few independent features and they won’t collide with each other when you open PRs etc. The worktree (but not branch) is deleted when a chat is close/deleted, and worktrees all live at ~/.wisp/workflows/ so you can clean them up/do whatever.

I also added a feature to copy a cd <dir> && claude resume –session <session id> command, that you can paste straight into a sprite console session to pull up that chat in Claude Code. I really like this architecture where a Wisp chat is just a Claude session on your Sprite and all the normal tooling works.

Credit to zmanian for this (PR) - we now have a really awesome chat attachment UI:

Big improvement from the file upload we had before, which is still available for uploading files outside of a chat. But now you can ask about any photo/file on your phone (or anything already uploaded), and it’ll be uploaded inline and included in the chat

Since it’s uploaded to your Sprite, you can come back to it/work with it at any time, including outside of Wisp.

I’m really liking this architecture where all the data lives on your Sprites, and there’s no lock in to Wisp.

Oh, I’m absolutely setting this up today! I’ve been looking for something like this! I tried sprite-mobile but found it too finicky for my use case. A native app really makes me happy!

1 Like

I’ve added Quick Actions, pretty excited about this one!

Claude Code recently added a /btw command, so you can ask a quick side question while it’s streaming something. Quick Chat is a similar idea - you get a one off question/response with the current chat as context. It works whether or not Claude is streaming in the main chat.

There’s also Bash which lets you run a one off shell command manually on your Sprite, and optionally pass the result back to chat. Great for reproing an error/poking logs

You can also run them without a chat context from the overview tab, if you just want to run a command on your Sprite or ask Claude a question about your code etc

I’ve set up a TestFlight for anyone who wants to try this out! Join the Wisp for Sprites beta - TestFlight - Apple

Would love to hear any thoughts/feedback!

Just merged: unread chat indicators to help with multitasking. Indicator shows up when Claude has finished responding or needs to ask you a question

This is enabled by a new architecture where the app maintains multiple simultaneous connections to chats, which should also improve stability a lot (this is in the TestFlight).

1 Like