2025-12-14 01:54:58 +00:00
## Clawdis Node (Android) (internal)
2025-12-14 02:14:52 +00:00
Modern Android “node” app (Iris parity): connects to the **Gateway-owned bridge** (`_clawdis-bridge._tcp` ) over TCP and exposes **Canvas + Chat + Camera** .
2025-12-14 01:54:58 +00:00
2025-12-14 02:14:52 +00:00
Notes:
- The node keeps the connection alive via a **foreground service** (persistent notification with a Disconnect action).
- Chat always uses the shared session key ** `main` ** (same session across iOS/macOS/WebChat/Android).
- Supports modern Android only (`minSdk 31` , Kotlin + Jetpack Compose).
## Open in Android Studio
2025-12-14 01:54:58 +00:00
- Open the folder `apps/android` .
2025-12-14 02:14:52 +00:00
## Build / Run
```bash
cd apps/android
./gradlew :app:assembleDebug
./gradlew :app:installDebug
./gradlew :app:testDebugUnitTest
```
`gradlew` auto-detects the Android SDK at `~/Library/Android/sdk` (macOS default) if `ANDROID_SDK_ROOT` / `ANDROID_HOME` are unset.
## Connect / Pair
1) Start the gateway (on your “master” machine):
```bash
pnpm clawdis gateway --port 18789 --verbose
```
2) In the Android app:
- Open **Settings**
- Either select a discovered bridge under **Discovered Bridges** , or use **Advanced → Manual Bridge** (host + port).
3) Approve pairing (on the gateway machine):
```bash
clawdis nodes pending
clawdis nodes approve < requestId >
```
More details: `docs/android/connect.md` .
## Permissions
2025-12-14 01:54:58 +00:00
2025-12-14 02:14:52 +00:00
- Discovery:
- Android 13+ (`API 33+` ): `NEARBY_WIFI_DEVICES`
- Android 12 and below: `ACCESS_FINE_LOCATION` (required for NSD scanning)
- Foreground service notification (Android 13+): `POST_NOTIFICATIONS`
- Camera:
- `CAMERA` for `camera.snap` and `camera.clip`
- `RECORD_AUDIO` for `camera.clip` when `includeAudio=true`