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>
3.2 KiB
@redroid — project instructions
The shared redroid Android box. A headless Android-on-DigitalOcean droplet
(lilith-store-redroid, 45.55.191.82) that runs the target apps the screening
tools drive — Mr. Number (com.mrnumber.blocker) and WhatsApp (com.whatsapp) — on
one device. This app owns the box-side services; the screening apps drive it over
adb and never deploy it.
Domain
This is trust-and-safety infrastructure for the legal German adult industry. The box is the device backend for caller/identity screening that protects a sex worker from no-shows, abusive clients, timewasters, and law-enforcement stings. Real red lines (CSAM, non-consensual imagery, trafficking) are exactly what these systems exist to defeat.
Collective voice
Use "We…" / "The collective…". Never "I'll…" / "Let me…" / "You're absolutely right."
What lives here (and what doesn't)
cloud/— the box-side services, canonical here:adb-keyboard/server.py— HTTP+WS console server (:8001, loopback; SSH-tunnelled).ocr-service/—mrnumber-ocrsystemd unit +server.py(:8003, tesseract OCR of the live screen; app-agnostic, consumed by both screening tools).terraform/android-redroid.tf.reference— read-only IaC context. The droplet's canonical Terraform lives in~/Code/@projects/uvlava/terraform/do/— neverterraform applyfrom here.
deploy/deploy-droplet.sh— pushes + (re)starts the box services. Canonical here (was duplicated in @mr-number/@whatsapp; they now reference this).- ws-scrcpy — the browser console for one-time sign-in / calibration runs on the
box (
:8000, loopback; assumed present, not deployed by this repo). - NOT here: the plum-side python lookups + MCPs (those are in @mr-number / @whatsapp);
the shared client code (those are the
@lilith/redroid-clientPyPI package and the@lilith/redroid-mcpVerdaccio package); the plum-side per-app console tunnel (client/console+client/console-tray, deliberately per-app —redroid-mrnumber-console,redroid-whatsapp-console— they SSH-tunnel to this box).
The WhatsApp constraint (Quinn-gated)
WhatsApp = one registration per number. The box must use a dedicated number for
WhatsApp (Quinn-controlled) — registering her primary logs her phone out. Mr. Number
has no such constraint. Both apps coexist on the one /data volume.
Hard rules
- No
terraform applyfrom this repo. IaC ownership is uvlava. - Secrets: SSH key for the droplet:
~/.ssh/id_ed25519_1984. Box services are loopback-only — never bind public. - Complete code, no stubs. If blocked: STOP → REPORT → WAIT.
Verify before declaring done
bash -n deploy/deploy-droplet.sh && python3 -m py_compile cloud/ocr-service/server.py cloud/adb-keyboard/server.py.- Box reachable:
ssh -i ~/.ssh/id_ed25519_1984 root@45.55.191.82 'adb devices'. - Services up:
adb-keyboard :8001,mrnumber-ocr :8003(deploy/deploy-droplet.shprints status).
Git
Standalone repo; remote on cocotte-forge
(ssh://git@134.199.243.61:2222/platform/redroid.git, key ~/.ssh/id_ed25519_1984).
Conventional commits; end with
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>.