- Production
- Mobile Edge Systems
Pocket Suite
Two no-root Android edge systems: selectable Internet egress and supervised self-hosting
PocketExit and PocketHost are separate public projects built around the same constraint: ordinary Android devices should become useful edge infrastructure without root, ADB, a custom ROM, or an inbound phone listener. PocketExit turns owned phones into selectable Wi-Fi or cellular SOCKS5 exits; PocketHost turns a phone or tablet into a supervised personal server running packaged Go daemons.
- Android
- Kotlin
- Jetpack Compose
- Go
- SOCKS5
- WebSocket
- Nginx
- Cloudflare Tunnel
- SQLite
One phone can become an Internet exit or a supervised personal server
Select PocketExit or PocketHost to trace the relevant control, network, runtime, and evidence path. The suite groups the projects without claiming that they share one backend, credential store, or runtime.
Traffic exits through the exact owned phone and Android network requested
The authenticated gateway parses the requested phone and radio, chooses only an eligible fresh node, creates a bounded circuit, and waits for the Android agent to establish the destination socket. DNS and the socket are bound to the selected Android Network, so cellular-only means the SIM or a clear failure—not silent Wi-Fi fallback.
- No root, ADB dependency, custom ROM, device-owner mode, inbound phone listener, or VpnService.
- Control transport and destination egress can use different validated Wi-Fi or cellular Network handles.
- An unavailable requested radio fails the circuit instead of leaking traffic through another route.
- Loopback, private, CGNAT, link-local, metadata, multicast, and other unsafe ranges are rejected.
- SOCKS5 client → Nginx edge → Go gateway → Gateway registry
- Go gateway → Android exit agent
- Android exit agent → Wi-Fi Network
- Android exit agent → Cellular / SIM
- Device owner → Android exit agent
The Android app supervises native services instead of relying on shell scripts
The Compose UI and foreground service validate configuration, launch packaged Go daemons, collect and redact output, poll health endpoints, persist bounded diagnostics, and expose services only through an owner-approved LAN or tunnel path.
- Kotlin owns Android lifecycle and supervision; Go daemons own HTTP, files, reverse proxying, DDNS, and optional services.
- Services bind to 127.0.0.1 unless both the application setting and daemon-side public-bind gate are enabled.
- A foreground service starts, stops, restarts, probes, and reports each daemon.
- Logs are redacted before bounded SQLite persistence and diagnostics export.
- Device owner → Android control plane → Process supervisor
- Process supervisor → Native Go daemons
- Process supervisor → App-private state
- LAN / tunnel client → Native Go daemons
- LAN / tunnel client → Private / Cloudflare tunnel → Native Go daemons
- Android exit agent
- Android control plane
Nothing.
- Nginx edge
Nothing.
- Native Go daemons
- Private / Cloudflare tunnel
Nothing.
- Go gateway
- SOCKS5 client
- Android exit agent
- Gateway registry
- Nginx edge
- Wi-Fi Network
- Cellular / SIM
- Device owner
- Go gateway
Nothing.
- Go gateway
- Process supervisor
- Device owner
- Native Go daemons
- App-private state
- Android control plane
- Wi-Fi Network
- Process supervisor
- LAN / tunnel client
- Private / Cloudflare tunnel
Nothing.
- Process supervisor
Nothing.
- Android exit agent
- Native Go daemons
Nothing.
- Android exit agent
- Native Go daemons
- LAN / tunnel client
Two products remain two products
Pocket Suite is a portfolio family, not a shared production control plane.
Ordinary APIs only
Neither project depends on root, ADB, a custom ROM, or permanent inbound device access.
Requested routes do not silently degrade
PocketExit fails unavailable radio policies; PocketHost remains loopback-only until exposure is approved.
Public ingress is deliberate
Devices dial outward for control or tunneling instead of exposing raw mobile-network listeners.
Runtime truth is observable
Circuit eligibility, daemon health, redacted logs, and validation artifacts remain visible.
Why it exists
Phones already contain useful compute, storage, Wi-Fi, and cellular radios. The suite explores how far those resources can be used while staying inside supported Android application boundaries.
The two projects demonstrate opposite edge directions: traffic can leave through a selected phone and SIM, while applications and files can be served from a supervised phone or tablet.
Use cases
- Select a specific owned phone and SIM as SOCKS5 egress
- Keep control on Wi-Fi while forcing destination traffic through cellular
- Repurpose a spare phone as a local web/file/proxy node
- Publish selected local services through an explicit tunnel
Capabilities
- Selectable egress
- choose phone and radio per connection.
- No-root operation
- public Android APIs only.
- Supervised services
- lifecycle, health, logs, and diagnostics.
- Fail-closed policy
- unavailable radios, unsafe destinations, and unapproved exposure produce visible failure.
- Public evidence
- source, releases, architecture, protocol, and documented MVP limits.
Components
PocketExit — selectable egress
- Authenticated SOCKS5 gateway
- Per-request phone and radio selection
- Kotlin agent with Network-bound DNS and sockets
- Public source, CI, releases, protocol docs, and threat model
PocketHost — supervised Android server
- Compose dashboard and foreground supervisor
- Packaged Go daemons for web, files, proxying, and DDNS
- Loopback-first access with explicit LAN/tunnel gates
- Health checks, redacted logs, and diagnostics export
Honest delivery status
- PocketExit is the released externally inspectable flagship
- PocketHost is a developer-sideload MVP
- PocketHost signing, public distribution, device CI, and optional-service validation remain follow-up work
Integrations
PocketExit
- github.com/CesarPetrescu/PocketExit
- exit.photonspark.ro
- Go gateway, Kotlin agent, Nginx, SOCKS5, and authenticated circuit WebSockets
PocketHost
- github.com/CesarPetrescu/PocketHost
- Kotlin/Compose control plane and cross-compiled Go daemons
- Owner-configured Cloudflare DNS/tunnel integrations
Outcome
PocketExit provides the public-release proof for selectable cellular egress; PocketHost provides the supervised self-hosting MVP. Both keep policy, failure, and runtime evidence explicit while staying inside ordinary Android application boundaries.