Featured Projects Snippbot is source-available

Snippbot Mobile: your agents, in your pocket

The companion app for your own Snippbot server. One developer built it with AI coding sessions and Snippbot's own dev agent, from a stubbed app in March to a Google Play production release in October.

Snippbot Mobile app icon

Snippbot Mobile

Live on Google Play

Pair your phone with your own Snippbot server using a 6-digit code or QR code, then chat with your agents and check in on their work from anywhere. No Snippbot account, nothing routed through our servers.

127
commits to the app
82
pull requests
56
days of active work
553
automated tests passing
51
security issues fixed
v15
live on Google Play
Snippbot Mobile store feature graphic
Snippbot Mobile home screen with agents and recent conversationsSnippbot Mobile chat with an agentSnippbot Mobile in the Aurora themeSnippbot Mobile in the Warm Copper theme

Milestone by milestone

Snippbot Mobile was not a swarm project. One developer made the product calls and built it with AI coding sessions, from a stubbed app in March to a production release in October.

  1. 1 Plan Mar 22
  2. 2 v1.0 Mar 25
  3. 3 Hardening Mar 22 – Apr 6
  4. 4 Demo mode Sep 1 – 2
  5. 5 Over the air Sep 13
  6. 6 Play review Sep 24 – 30
  7. 7 Production Oct
1

Plan

Mar 22

A stubbed Expo app got a release plan: connect every screen to the real server.

6 plan phases
From wiring shared data hooks to submitting on Google Play.
5 app tabs
Chat, Agents, Insights, Settings and More.
16+ screens
Each one wired to the same data layer the web app uses.
  • Every stubbed screen was connected to the backend through the shared React Query hooks the web app already used, instead of a second API layer.
  • QR pairing, remote session continuation, and push notifications were already in place to build on.
  • Firebase config and the Play Store service account were scoped as their own foundation step.
2

v1.0

Mar 25

Version 1.0 brought the phone's chat up to parity with the web app.

3 days plan to v1.0
The plan was written Mar 22; v1.0 shipped Mar 25.
3 message actions
Copy on every message; Edit and Retry on your own.
  • Fixed chat text clipping on Android 15 and 16, where the new renderer measured message bubbles too narrow.
  • Replaced a hidden long-press menu with always-visible Copy, Edit, and Retry buttons.
  • Added inline editing with Cancel and Save & Send.
3

Hardening

Mar 22 – Apr 6

Two security audits covered the path from phone to server, end to end.

16 audit findings fixed
Every finding from the remote-session security review.
35 issues in one audit
2 critical, 7 high, 13 medium and 13 low, all critical and high closed.
55 new automated tests
Added with the 35-issue audit so the fixes stay fixed.
  • A device can no longer approve its own request to join: the server checks who asked before it accepts an approval.
  • Device tokens lost the power to change security settings; that now takes an owner session or key.
  • Session transfer tokens expire after 2 minutes instead of 5, and error messages sent to the phone no longer reveal internal reasons.
4

Demo mode

Sep 1 – 2

The app learned to work with no server at all, so a first look is never a dead pairing screen.

0 servers needed to try it
Demo mode runs the full app on built-in sample data.
API 36 Android target
Moving to Expo SDK 54 cleared the last Google Play blocker.
  • Demo mode switches only the two network entry points, so no screen had to know about it.
  • Guided connect walks a new user from install to pairing.
  • Edge-to-edge fixes, checked on a Samsung phone running Android 16: the keyboard no longer covers what you type, and the tab bar clears the system navigation bar.
5

Over the air

Sep 13

Fixes now reach phones without waiting for a new store build.

10 min between update checks
The app checks on launch and whenever it returns to the foreground.
5 → 1 live connections
One shared connection replaced up to 5 duplicates per foreground.
  • Updates were installed but never requested, so a new bundle applied only after two cold launches, and Android keeps apps alive for days.
  • The server's own logs showed the phone was still on a four-day-old bundle, missing two fixes for the exact symptoms.
  • The same release added production diagnostics and fixed a scroll gesture bug.
6

Play review

Sep 24 – 30

Release polish, an optional Supporter badge, and a build sent for Google's production review.

$4.99 one-time Supporter badge
Optional. It adds three themes; every core feature stays free.
178 countries
Build 15 was submitted for production review in 178 countries.
3 Supporter themes
Midnight Circuit, Aurora and Warm Copper.
  • A "New to Snippbot?" card on first launch explains that the app talks to a computer you control, your own machine or a VPS, then walks through install, start, and pair.
  • First-launch test mode lets anyone, including store reviewers, explore the app before pairing.
  • Build 14 reached internal testers on Sep 30; build 15 went to production review the same day.
7

Production

Oct

Google approved the release, and fixes since then have shipped over the air.

v15 live on Google Play
Build 15 passed Google review and is in production.
454 crash loops in 33 s
Found on the emulator after pairing from test mode, fixed over the air Oct 2.
553 automated tests passing
The full mobile suite on main at that fix.
  • Pairing from test mode could leave a stuck error screen. The fix resets navigation and keeps the user signed in.
  • A Home screen Retry button that looked dead now shows a spinner and clears the old error.
  • The main branch now matches what Play users run, so no new store build was needed.

From the build chat

Adam Dev avatar
Adam Dev

"Expo SDK 52+ enables edge-to-edge on real Android builds — we've already been burned by this on Snippbot mobile: keyboard hides inputs and the system nav bar overlaps bottom tabs."

Adam Dev avatar
Adam Dev

"The Retry button at line 265 calls it directly, so the identical error stays on screen with no spinner for up to 15s. The button looks dead."

Adam Dev avatar
Adam Dev

"Retry now gives feedback. loadRecent resets both recentLoading and recentError on entry."

Adam Dev avatar
Adam Dev

"Snippbot users already have the latest mobile fixes over the air, so a v16 build isn't needed."

Who built it

Our developer

product, design, store, pricing, and every release decision

Claude Code

coding sessions; co-author on 110 of the 127 commits

Codex

coding sessions, including first-launch test mode

Adam Dev avatar

Adam Dev

Snippbot agent: traced bugs from phone screenshots and server logs, shipped fixes, planned releases

Try it with your own server

Install the server, start it, and pair the app with a 6-digit code or QR code. No Snippbot account, nothing routed through our servers, and every core feature is free.

More projects