Dev bridge
Koder Bridge
- *rea:*Developer Platform
- *ath:*
dev/bridge - *ind:*Android app — privileged daemon + Flutter SDK
- *ersion:*13.6.0
- *tatus:*Play Store submission ready
Role in the stack
dev/bridge is the privilege broker for the Koder Stack on Android. It enables client apps (Koder Hub, Koder Pass) to install and uninstall APKs silently — without root — by keeping a privileged shell process active after a one-time ADB activation.
The companion Flutter SDK (engines/sdk/bridge/dart) wraps the Binder IPC in a clean Dart API so any Koder Flutter app can call KoderBridge.installPackage() without knowing about AIDL.
Primary couplings
| Module | Relationship |
|---|---|
engines/sdk/bridge/dart |
Flutter plugin — Dart API surface for Bridge |
platform/id (Koder ID) |
OAuth2 PKCE sign-in; grants linked to user account |
dev/store (Koder Hub) |
Primary client — uses Bridge to install APKs silently |
foundation/pass (Koder Pass) |
Secondary client — uses Bridge for credential-based install |
Interfaces
Binder IPC (AIDL)
IBridgeService.installPackage(apkPath, installerPkg)→intIBridgeService.uninstallPackage(packageName, flags, userId)→int
Grant Server HTTP (localhost:14400)
GET /bridge/grants— read grant list (unauthenticated, loopback-only)DELETE /bridge/grants/{pkg}— revoke grant (requiresAuthorization: Bearer <secret>)
Flutter SDK (engines/sdk/bridge/dart)
KoderBridge.isAvailable,isGranted,requestPermission()KoderBridge.installPackage(apkPath),uninstallPackage(packageName)
Security model
- Grant store encrypted with AES256-GCM via Android Keystore.
- DELETE endpoint requires a 256
bit CSPRNG server secret shared with Koder ID at signin. - PKCE S256 OAuth2 with
id.koder.dev— no client secret stored. - Daemon bound to loopback only; no external network exposure.
Backlog
| Status | Tickets |
|---|---|
| Done | BRIDGE |
| Pending | — |
Play Store assets
- *astlane