Mobile

Mobile-tuned chat surface and PWA install on iOS / Android.

pi-forge is an installable PWA with a mobile-tuned chat surface — talk to the agent and monitor what it's doing from your phone.

What works on mobile

The phone surface is chat + project monitoring:

Hidden (and unmounted, not just display: none) on mobile so they don't load CodeMirror or hold a server-side PTY:

To get the desktop layout on a phone, use your browser's "Request Desktop Site" toggle — the mobile breakpoint reacts to viewport width, not user-agent, so the layout snaps back to full desktop.

Installing as a PWA

Once installed, pi-forge runs fullscreen with no browser chrome and respects your phone's safe-area insets.

iOS Safari. First visit shows a hint: "Install: tap Share, then Add to Home Screen." iOS doesn't fire beforeinstallprompt — there's no Install button, only the Share-sheet flow. If you dismiss the hint, reach the same flow via the share button (square with up-arrow).

Android Chrome / Brave / Edge. First visit shows a banner with an Install button. If you dismiss it, install via the browser menu → Install app (or Add to Home Screen).

HTTPS is required for install (operator gotcha)

Both Chrome and Safari only treat a site as installable over HTTPS (or http://localhost). A LAN-IP http:// instance — including the npm run dev:remote flow at http://10.0.0.5:5173 — won't show an install option even with a valid manifest and service worker.

Production deployments behind a TLS-terminating reverse proxy (Caddy, nginx, Traefik) get install for free. For local testing, two paths:

npm run dev / dev:remote also disables the service worker (devOptions: { enabled: false } in vite.config.ts) so HMR works — that's a second reason install won't work in dev. You need a production build (npm run build) for the SW to be active.

Mobile-specific behaviors

See also