TextureFlow MCP Server
by Stepodkelly
README.md
# TextureFlow
TextureFlow is a voice-first Android accessibility layer for notification attention and explicitly
confirmed actions. The interface combines an Eye of Horus identity, a dense moth-paper texture,
liquid-glass controls, semantic audio cues, and haptic boundaries.
## Built Surfaces
- Android notification listener with active-state reconciliation, boot/package recovery, a
15-minute health job, durable SQLite outbox, and bounded rebind backoff.
- Android-to-Convex foreground connection with heartbeat, command polling, an independent
watchdog, finite network timeouts, persisted command claims, and lease-safe outbox delivery.
- Confirmed action boundary for reply, dismiss, and snooze. The voice bridge can prepare and
confirm a proposal, but only Android can execute a live `PendingIntent` and create its receipt.
- Convex Core for devices, events, attention, people, sessions, proposals, confirmation grants,
commands, receipts, fixtures, and correlated traces.
- VoiceOS-compatible MCP bridge with eleven tools and no immediate-send operation.
- Deterministic intelligence fallback, bounded context, strict model schemas, rehearsal fixtures,
safety scenarios, and a non-dispatching live smoke harness.
- Sensory engine with carpet scrolling, glass focus, boundary bumps, urgency, confirmation,
execution, success, and failure cues across audio, haptic, and visual channels.
The full target architecture is in [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md). Android recovery
details are in [docs/ANDROID_INTEGRATION.md](docs/ANDROID_INTEGRATION.md) and
[docs/ANDROID_CONNECTION.md](docs/ANDROID_CONNECTION.md).
## Local Configuration
Copy `.env.example` to `.env.local` and provide the Convex deployment values. Both `.env.local`
and `.env.convex` are ignored. Team/deploy credentials are used only by local tooling and must
never be placed in Android.
The Android debug build pre-fills only the non-secret Convex URL and owner ID. Use **Configure Core
link** in the app to enroll the scoped device token at runtime. TextureFlow encrypts that token
with an Android Keystore AES-GCM key; it is not packaged in the APK.
## Verification
```sh
npm run check
env JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home" \
./gradlew lintDebug assembleDebug testDebugUnitTest
node --env-file=.env.local tools/live-smoke/run.mjs
node --env-file=.env.local tools/verify-bridge-live.mjs
```
The debug APK is generated at `app/build/outputs/apk/debug/app-debug.apk`.
## Demo Safety
`tools/live-smoke/run.mjs` uses synthetic data and deliberately ends execution with a
`POLICY_BLOCKED` receipt. Rehearsal commands never create an Android execution receipt. The bridge
only announces success after a receipt from the authenticated target device says `DISPATCHED`.
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues