back to work
2026backend · web · androidSolo·2026 — present·shipping weekly
Lumi.
Personal AI. Runs on your hardware.
lumi.local · waveform_active
lumi ▸ stays on this machine. always.
on-devicebackend · web · android
problem
Every popular assistant ships your prompts, voice recordings, and personal context to someone else's GPUs. For people who want an AI that knows them — calendars, notes, conversations — that's a non-starter.
approach
Built Lumi as four repos that move together. A Python backend on Postgres holds memory and state. A React web client and a Kotlin Android app talk to it over a private tunnel. Voice activation runs on-device — no audio leaves the user's machine. Marketing site on Cloudflare Pages keeps load-times sub-second worldwide.
outcome
Live on my own hardware, shipping weekly. Voice wake-word, chat, memory, and Android client all working. Architecture chosen so a non-technical user could one-day boot it on a $200 mini-PC.
repos
4
stacks
Python · Kotlin · React · Astro
egress at rest
0 bytes
stack rationale
- Self-hosted PostgresLong-term memory must outlive the model. Postgres handles JSON, vectors, and structured records in one place — no vendor lock-in.
- Kotlin (not Flutter / RN)Wake-word and audio streaming need native APIs and tight memory control. Kotlin makes both straightforward.
- Astro for marketingMostly static, zero hydration cost. Cloudflare Pages serves it from the edge. Tiny TTFB, low CO₂.
full stack
- Python
- PostgreSQL
- Docker
- React
- Kotlin
- Astro