GrapheneOS Mobile Stack
Build a fully autonomous phone — no Google account, no tracking, no cloud dependency. This recipe starts with the operating system and works up through apps for every daily task.
All components are A3/T2 (fully autonomous, open source) unless noted.
Goal
A phone that:
- Runs without a Google account
- Does not send telemetry or location data
- Handles messaging, email, photos, navigation, passwords, and 2FA
- Syncs with your self-hosted server (optional)
- Can be wiped and rebuilt in under an hour
You will end up with a daily-driver phone that respects Pause, Exit, and Recoverability.
Requirements
- Google Pixel device (Pixel 6 or newer recommended)
- A computer with a web browser and USB cable
- 30–60 minutes for initial setup
- Optional: a self-hosted server (Minimal Autonomous Server) for photo sync and file storage
Components
| Component | Catalog Card | Role |
|---|---|---|
| GrapheneOS | compute/os | Mobile operating system |
| F-Droid | mobile/app-store | App store |
| Aurora Store | mobile/app-store | Play Store bridge (no account) |
| Signal | communication/messaging | Encrypted messaging |
| SimpleX Chat | communication/messaging | Anonymous messaging |
| K-9 Mail | communication/email | Email client |
| Ente Photos | applications/photos | Encrypted photo backup |
| Aegis | security/2fa | 2FA authenticator |
| Bitwarden / Vaultwarden | security/passwords | Password manager |
| OsmAnd | mobile/navigation | Offline maps |
| Mull | mobile/browser | Hardened browser |
| HeliBoard | mobile/keyboard | Private keyboard |
| NewPipe | applications/media | YouTube without Google |
| Syncthing | storage/sync | File sync (optional) |
All are A3/T2.
Step-by-Step Instructions
1. Install GrapheneOS
GrapheneOS has a web installer — no command line needed.
- On your computer, open https://grapheneos.org/install/web
- Enable OEM unlocking on your Pixel: Settings → About phone → tap Build number 7 times → Developer options → OEM unlocking
- Connect Pixel to computer via USB
- Follow the web installer — it will unlock bootloader, flash GrapheneOS, and relock bootloader
- Reboot into GrapheneOS
Important: Relocking the bootloader enables verified boot — do not skip this step.
After first boot:
- Skip Wi-Fi during initial setup (you can add it after)
- Do not add any Google account
- Set a strong PIN or passphrase
2. Install App Stores
GrapheneOS has no app store by default. Install F-Droid first, then use it for everything else.
F-Droid:
- Open the built-in Vanadium browser
- Go to https://f-droid.org
- Download the APK and install
- Open F-Droid → Settings → Repositories → ensure “F-Droid” and “F-Droid Archive” are enabled
Neo Store (optional, better UI):
- In F-Droid, search for “Neo Store”
- Install and use as your primary F-Droid client
Aurora Store (for apps not on F-Droid):
- In F-Droid, search for “Aurora Store”
- Install, open, choose “Anonymous” login
- Use only when F-Droid does not have what you need
3. Replace the Keyboard
Your keyboard sees everything you type. Replace it first.
- Install HeliBoard from F-Droid
- Go to Settings → System → Languages & input → On-screen keyboard
- Enable HeliBoard, disable Vanadium keyboard
- Open HeliBoard → download dictionaries for your languages
HeliBoard has no internet permission — keystrokes never leave your device.
4. Install Browser
- Install Mull from F-Droid (DivestOS repo)
- Open Mull → set as default browser
- Change default search engine to DuckDuckGo or your SearXNG instance
- Install uBlock Origin from Firefox Add-ons
Or keep Vanadium (GrapheneOS built-in, Chromium-based) as a secondary browser for compatibility.
5. Set Up Messaging
Signal (for contacts who use it):
- Install from Aurora Store (not on F-Droid) or download APK from signal.org/android
- Register with your phone number
- Enable disappearing messages by default: Settings → Privacy → Default timer
SimpleX Chat (for maximum privacy):
- Install from F-Droid
- No registration needed — create a profile name and start
- Share connection links with contacts instead of phone numbers
6. Set Up Email
- Install K-9 Mail from F-Droid
- Add your email account (IMAP/SMTP)
- Disable remote image loading: Settings → account → Fetching mail → disable “Show images”
If using a privacy email provider (Tuta, Proton Mail), install their dedicated app from Aurora Store.
7. Set Up Photo Backup
Option A: Ente Photos (easiest, works without self-hosting):
- Install from F-Droid or Aurora Store
- Create account — photos are E2E encrypted, Ente cannot see them
- Enable auto-backup from camera folder
Option B: Immich (requires self-hosted server):
- Install Immich app from Aurora Store
- Point to your Immich server URL
- Enable auto-backup
8. Set Up Passwords and 2FA
Bitwarden (connects to your Vaultwarden server or Bitwarden cloud):
- Install from Aurora Store
- Point to your Vaultwarden server URL, or use Bitwarden cloud
- Enable biometric unlock
- Enable auto-fill: Settings → Passwords & accounts → Bitwarden
Aegis (2FA):
- Install from F-Droid
- Set a vault password and enable biometric unlock
- Import existing 2FA codes or scan new QR codes
- Enable automatic encrypted backups to a local folder
- Sync that folder to your server via Syncthing (optional)
9. Set Up Navigation
- Install OsmAnd from F-Droid (free, all features)
- Download maps for your country/region
- Test offline navigation — disconnect Wi-Fi and navigate somewhere
Your location data never leaves the device.
10. Set Up Media
NewPipe (YouTube without Google):
- Install from F-Droid
- Import your YouTube subscriptions (export from Google Takeout as OPML, import into NewPipe)
- Download videos for offline viewing
AntennaPod (podcasts):
- Install from F-Droid
- Search for podcasts or import OPML from your previous app
- Set auto-download for offline listening
11. Optional: Connect to Self-Hosted Server
If you have a Minimal Autonomous Server or similar:
Syncthing — sync files, Aegis backups, documents:
- Install from F-Droid
- Add your server as a device (scan QR code)
- Share folders: camera backups, documents, 2FA backups
Nextcloud — calendar, contacts, files:
- Install from F-Droid
- Connect to your Nextcloud instance
- Enable contact and calendar sync via DAVx⁵ (install from F-Droid)
WireGuard — secure access to home network:
- Install from F-Droid
- Import your VPN config (scan QR from your server)
- Enable always-on VPN: Settings → Network → VPN → WireGuard → Always-on
12. Sandboxed Google Play (If Needed)
Some apps (banking, transport) require Google Play Services. GrapheneOS lets you install them sandboxed — no special privileges.
- Settings → Apps → Install Google Play Services (built into GrapheneOS)
- Google Play runs in a sandboxed profile — it cannot access other apps’ data
- Create a separate user profile for apps that need Google: Settings → System → Multiple users
This keeps Google confined. Your primary profile stays clean.
Failure Modes
| Component | Failure scenario | Impact | Recovery |
|---|---|---|---|
| GrapheneOS | Failed OTA update | Phone may not boot | Boot to recovery, factory reset, restore from backup |
| F-Droid | Repository down | Cannot install new apps | Apps already installed work. Use Aurora Store or direct APK. |
| Signal | Phone number change | Lose access to account | Re-register with new number. Message history from backup. |
| Aegis | Phone lost/stolen | Lose 2FA codes | Restore from encrypted backup (stored on Syncthing/server) |
| OsmAnd | Outdated maps | Incorrect routing | Re-download maps when online |
| Aurora Store | Anonymous login blocked | Cannot download Play Store apps | Wait for new session, or use APKPure/direct APK download |
| Sandboxed Play | Google Services crash | Banking/transport apps fail | Restart Play Services, or use browser versions of services |
Highest-impact failure: losing Aegis 2FA codes without backup. Set up Syncthing backup of Aegis vault on day one.
Verification
After setup, verify the three structural criteria:
- Pause: Turn on airplane mode. Messaging (cached), maps (offline), photos (local), passwords (local vault), 2FA (offline) — all work. Only Signal/email need internet to send/receive.
- Exit: All data is on-device or in standard formats. Export contacts (VCF), photos (JPEG/PNG), passwords (Bitwarden export), 2FA (Aegis JSON), subscriptions (OPML). Flash stock Android and you’re back to factory.
- Recoverability: Factory reset GrapheneOS, reinstall apps from F-Droid, restore Aegis vault from Syncthing backup, restore Bitwarden from server. Under one hour.
What It Replaces
| Need | Was | Now | Monthly savings |
|---|---|---|---|
| Phone OS | Stock Android + Google | GrapheneOS | $0 (free) |
| App store | Google Play | F-Droid + Aurora | $0 |
| Messaging | WhatsApp / Telegram | Signal + SimpleX | $0 |
| Photos | Google Photos (15 GB free, then $3/mo) | Ente Photos / Immich | $0–3 |
| Maps | Google Maps | OsmAnd | $0 |
| Passwords | LastPass ($3/mo) | Bitwarden / Vaultwarden | $3 |
| 2FA | Google Authenticator | Aegis | $0 |
| YouTube | YouTube (ads or $14/mo) | NewPipe | $14 |
Total potential savings: ~$20/month, plus you own your data.
Next Steps
- Set up a Minimal Autonomous Server to self-host the backend
- Browse the full Mobile Apps page for more alternatives
- Add Nextcloud for calendar, contacts, and office documents
- Explore the Family Cloud recipe for shared photo and file storage