Owns the box-side services for the lilith screening tools (Mr. Number, WhatsApp), extracted from the duplicated cloud/ dirs in @mr-number / @whatsapp: - cloud/adb-keyboard, cloud/ocr-service (mrnumber-ocr systemd unit), cloud/terraform (read-only IaC reference; droplet owned by uvlava). - deploy/deploy-droplet.sh — push + (re)start the box services. The screening apps drive this box over adb; they no longer carry their own copies. Shared client code lives in @lilith/redroid-client (PyPI) + @lilith/redroid-mcp (Verdaccio). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.5 KiB
@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.