Koder Bridge
- Area: Developer Platform
- Path:
dev/bridge - Kind: Android app — privileged daemon + Flutter SDK
- Version: 13.6.0
- Status: 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 sign-in.
- 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-1–BRIDGE-9 |
| Pending | — |
Play Store assets
- *astlane