No description
Find a file
Natalie 4472993341 chore(redroid): update self-path to @ct/@applications after reorg
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 11:41:55 -04:00
cloud fix(security): escape reflected ?title= in adb-keyboard console (XSS) 2026-06-28 15:14:19 -04:00
deploy feat(redroid): the shared redroid Android box app 2026-06-28 15:07:59 -04:00
.gitignore feat(redroid): the shared redroid Android box app 2026-06-28 15:07:59 -04:00
.infra.yaml chore(infra): add .infra.yaml (convention:infra_manifest) for infra-net reconcile 2026-06-29 10:10:18 -04:00
app.manifest.yaml chore(redroid): update self-path to @ct/@applications after reorg 2026-06-29 11:41:55 -04:00
CLAUDE.md feat(redroid): the shared redroid Android box app 2026-06-28 15:07:59 -04:00
README.md feat(redroid): the shared redroid Android box app 2026-06-28 15:07:59 -04:00

@redroid — the shared redroid Android box

A headless Android-on-DigitalOcean droplet (lilith-store-redroid, 45.55.191.82) that runs the apps the lilith screening tools drive — Mr. Number and WhatsApp — on one device. This repo owns the box-side services; the screening apps (@mr-number, @whatsapp) drive it over adb and reuse its services without deploying it.

The split

@redroid (this repo) ── the box ──────────────────────────────────────────────
  cloud/adb-keyboard/      adb-keyboard console server   :8001  (loopback/SSH)
  cloud/ocr-service/       mrnumber-ocr (tesseract OCR)  :8003  (app-agnostic)
  cloud/terraform/         IaC reference (read-only; owned by uvlava)
  ws-scrcpy (on box)       browser console               :8000  (sign-in/calibration)
  deploy/deploy-droplet.sh push + (re)start the box services

@lilith/redroid-client (PyPI) ── shared client *code* ─────────────────────────
  RedroidDevice (adb base), vision extraction, screening recorder

@lilith/redroid-mcp (Verdaccio) ── shared MCP *code* ──────────────────────────
  createRedroidServer / runRedroidMcp factory

@mr-number / @whatsapp ── the screening apps ──────────────────────────────────
  client/*_lookup.py  (subclass RedroidDevice)   +   mcp/index.ts (factory call)
  per-app plum console-tray LaunchAgent (redroid-{mrnumber,whatsapp}-console)

Each screening app is a consumer of this box and of the two packages. The box runs both target apps off one /data volume.

Deploy the box services

deploy/deploy-droplet.sh        # scp adb-keyboard + ocr-service, (re)start, status

The droplet itself is provisioned by the uvlava infranet IaC — not from here. cloud/terraform/android-redroid.tf.reference is read-only context.

The WhatsApp constraint

WhatsApp allows one registration per number; the box uses a dedicated Quinn-controlled number for WhatsApp (registering her primary would log her phone out). Mr. Number has no such constraint.

Verify

bash -n deploy/deploy-droplet.sh
python3 -m py_compile cloud/ocr-service/server.py cloud/adb-keyboard/server.py
ssh -i ~/.ssh/id_ed25519_1984 root@45.55.191.82 'adb devices'

Repo on cocotte-forge: ssh://git@134.199.243.61:2222/platform/redroid.git.