Can you manage a 3D printer farm from a phone?
PrintStash runs on a phone as a PWA: the farm at home or away, over WireGuard, Tailscale, alerts via ntfy or Telegram. Offline means the shell, not the library.
Yes, on the couch and away from home, though the second needs one network decision. PrintStash installs to your phone as a PWA with the printer list, library, and print controls. It is local-first and ships no relay: away from home you connect over WireGuard, Tailscale, or a hardened reverse proxy.
Two things shape how far that goes. Installed does not mean offline: the service worker caches the
app shell, and it deliberately skips every request under /api/, so with the server unreachable you
get a window and no data. And the installed app has no web push and no camera view, so the phone
that tells you a print finished is hearing from the server through ntfy, Telegram, Discord, or a
webhook.
Installing it
The requirement people trip on is HTTPS. Service workers only register in a secure context, so a
PrintStash reachable at http://10.0.0.20:3000 will run fine in a browser and never install. Put it
behind TLS first; running PrintStash behind a reverse proxy with TLS
covers a setup that works with a private hostname.
After that it is the ordinary browser flow. On Android, Chrome offers an install prompt or an Install app entry in the menu. On iOS, open the site in Safari, then Share and Add to Home Screen. On desktop, Chrome and Edge show an install control in the address bar. The manifest asks for a standalone window, so the installed copy opens without tabs or an address bar.
What actually works on a phone
The interface has real mobile surfaces rather than a desktop layout squeezed down: a bottom navigation bar covering the vault, pending imports, printers, and, for administrators, profiles.
The tasks that suit a phone are the ones you do while walking past the machines. Checking what every printer is doing, pausing or cancelling something that is going wrong, starting a known-good revision, glancing at recent print history. Browsing and searching the library works too, since filters and saved views are URL-driven, so a filtered view can be bookmarked on the phone exactly as on a desktop.
What is worse on a phone is the work that needs pixels: comparing two G-code revisions side by side, reading parsed slicer settings in a wide table, and the model viewer, which is a 3D canvas on a device that would rather be scrolling. Uploading is possible but awkward, because picking a mesh out of a phone’s file storage is a worse experience than dragging it from a desktop folder.
What offline means here
Being precise matters here, because “offline-capable PWA” suggests more than this one delivers.
The service worker precaches the app shell: the root document, an offline page, the manifest, and
the icons. Same-origin static assets are served from cache and refreshed in the background.
Navigations try the network first and fall back to the cached shell. Everything under /api/ is
excluded from the cache entirely. That is a choice, not an oversight: a stale printer status is
worse than no printer status.
So opening the installed app with the server unreachable gets you PrintStash’s own offline page, which says as much: cached screens remain available, and printer and library changes need a connection. You cannot browse your model list on a plane. What you get is an app that reopens cleanly instead of showing a browser error page, and comes back to life when the server does.
Getting told when something finishes
Since the installed app has no push channel, notifications go out from the server to something that does. PrintStash sends print completed, failed, and cancelled events, plus printer offline, to webhooks, Discord, Telegram, or ntfy. For a phone, ntfy is the direct answer: install the app, subscribe to a topic, and the alert arrives whether or not PrintStash is open.
Delivery is at least once, so a receiver should deduplicate on the idempotency key, and private, loopback, and link-local destinations are blocked by SSRF protection. The notifications guide has the setup for each target.
Checking the farm when you are away
A phone on the same Wi-Fi reaches the server directly. Away from home, PrintStash is local-first and has no relay of its own, so checking the farm means bringing the server to you: either a VPN back to your network, or a reverse proxy you exposed on purpose. That decision is a security one before it is a convenience one.
The VPN is the safer default for a farm you can still reach physically. WireGuard or Tailscale on the phone leaves PrintStash working exactly as it does at home: the printer list with temperatures and progress, pausing or cancelling a job, starting a known-good revision, dispatching from the fleet queue, searching the library, and the measured-grams cost history Moonraker reports.
The alternative is a hardened reverse proxy, which fits the shared shop tablet that should not hold tunnel credentials. Public exposure trades attack surface for convenience, and PrintStash’s security model assumes a trusted network, so real TLS, authentication in front, and a patched instance are the floor. Running PrintStash behind a reverse proxy with TLS walks through the setup, and the trusted-network security model sets out what the software assumes about where it runs.
Alerting does not change off-network. Finished, failed, cancelled, and printer-offline events leave the server for ntfy, Telegram, Discord, or a webhook, so the phone hears about the farm wherever it is; the notifications guide covers each target.
One boundary stated plainly, because the monitor-first apps lead with theirs: PrintStash has no camera streams, no web push, and no failure detection. If the couch job is mostly watching prints, Obico, OctoEverywhere, or Mobileraker do that well and are worth running alongside. What they do not carry is the layer behind the status: revisions with known-good verdicts, the fleet queue with least-busy routing and release gates, duplicate detection, and per-print cost history. When the errand from the road is restarting a stuck job or sending the right slice to a free machine, that is the layer that answers, and it fits the same phone.
Questions that come up
Is this a real app or just a website with an icon?
It is a website with a manifest and a service worker, which is what a progressive web app is. The practical difference from a bookmark is that it opens in a standalone window without browser chrome, keeps its own icon and task-switcher entry, and reopens its cached shell rather than an error page when the server is unreachable. The practical difference from a native app is that there is no push notification channel, no background sync, and no app store distribution. For a self-hosted tool that only your network can reach, that trade is usually the right one, since a native app would still need the same VPN or proxy to talk to your server.
Can I check my printers without a connection to the server?
No. Printer status comes from your server talking to your printers, and the service worker explicitly does not cache API responses, so there is no stale copy to show you. Offline gets you the app shell and a page that says the connection is gone. This is the correct behavior for a status tool: a cached temperature reading from forty minutes ago is worse than an honest failure, because you would act on it.
How do I get a notification on my phone when a print finishes?
Send it through ntfy, Telegram, Discord, or a webhook, configured in PrintStash’s notification settings, rather than expecting the installed app to notify you. ntfy is the closest fit for a phone because it is a small subscribe-to-a-topic app that works with a self-hosted server. PrintStash emits print completed, print failed, print cancelled, and printer offline events, and delivery is at least once, so a receiver that acts on the message should deduplicate on the idempotency key.
Does it work on an iPad or a shop tablet?
Yes, and a wall-mounted tablet is one of the better uses for it, since the standalone display mode gives you a full-screen printer list without browser furniture. The same rules apply: HTTPS for the install to work, and the tablet has to reach the server. On a shared tablet, be deliberate about which account stays logged in, because per-printer access control decides whether whoever walks past can start jobs or only watch them.
Sources
- PrintStash’s
frontend/public/manifest.webmanifest,frontend/public/sw.js,frontend/public/offline.html, andfrontend/src/lib/pwa.tsin the repository for the install behavior, the cached shell, and the exclusion of API requests from the cache. Checked August 19, 2026. - The v0.11.0 release notes for the installable offline shell, and the notifications guide for delivery targets.