# Sunshine (repository: mobile-vpn) > Sunshine is a consumer VPN for iOS and Android, sold on brand rather than price: one plain rate per gigabyte, a meter the customer can see, a monthly ceiling the customer sets (prices Proposed, nothing on sale yet; accounts are invite-only). This site is the web portal: it hands out tunnel configurations by QR code or share sheet for the official WireGuard apps. Control plane on AWS SAM (Cognito, Stripe, DynamoDB, HTTP API, CloudFront); per-region edge nodes on Amazon Linux 2023 running in-kernel WireGuard. Private keys are generated on the device and never uploaded. Nodes keep aggregate counters only. "Sunshine" is a working name; the product uses the WireGuard protocol (a registered trademark of Jason A. Donenfeld). ## Docs - [README](https://raw.githubusercontent.com/snowtimber/mobile-vpn/main/README.md): what it is, layout, quick start, cost model - [AGENTS.md](https://raw.githubusercontent.com/snowtimber/mobile-vpn/main/AGENTS.md): canonical agent instructions, hard constraints (no-logs, device-side keys, no NAT Gateway, brand rules) - [Brand strategy](https://raw.githubusercontent.com/snowtimber/mobile-vpn/main/docs/brand-strategy.md): position, proofs, the "never" list, voice, look, channels - [Pricing strategy](https://raw.githubusercontent.com/snowtimber/mobile-vpn/main/docs/pricing-strategy.md): one rate per GB, minimum, customer-set ceiling (Proposed) - [Architecture](https://raw.githubusercontent.com/snowtimber/mobile-vpn/main/docs/architecture/vpn-architecture.md): control plane, edge, peer lifecycle, cost, abuse posture - [Decisions](https://raw.githubusercontent.com/snowtimber/mobile-vpn/main/docs/adr/): AD_003 WireGuard, AD_004 browser keys, AD_005 region-wide peer set, AD_006 node NAT, AD_007 Stripe, AD_008 Cognito, AD_009 no-logs, AD_010 economics, AD_014 metering, AD_016 account P, AD_017 brand-led positioning and per-GB pricing - [Roadmap](https://raw.githubusercontent.com/snowtimber/mobile-vpn/main/docs/roadmap.md): phases and gates as checkbox state - [Changelog](/changelog.html): what changed for customers, newest first, in plain language; Atom feed at /changelog.xml ## API (same origin) - `GET /api/config` public portal bootstrap; everything else needs a Cognito ID token - `GET /api/me`, `GET /api/regions`, `GET|POST /api/devices`, `DELETE /api/devices/{id}` - `POST /api/billing/checkout`, `POST /api/billing/portal`, `POST /api/billing/webhook` (Stripe-signed) - `GET /api/egress-check` (public): is this request leaving through one of our servers? - `GET /downloads/android.json`: manifest of the current Android test build (version, sha256, url); the APK itself is under `/downloads/`. iPhone: TestFlight build pending.