Case study · 2026
Second Brain
Private AI on my own hardware
A home-screen PWA that tracks projects, chases renewals until they're paid, watches revenue and triages email — running entirely on my own server against a local model, with no public ports and nothing sent to a third-party AI provider.
0
Public ports open
100%
AI runs locally
1
GPU, already owned
4
Isolated services
Challenge
Off-the-shelf AI assistants want your calendar, your inbox and your revenue data on someone else's servers, billed per token. I already owned a capable GPU and a server running production services. The problem was building something genuinely useful on top of it without touching anything already running — the file storage, the build service and the model server all had to keep working untouched, and nothing new could be exposed to the public internet.
Approach
- 01Took a live inventory of the server before choosing a single port, so the new stack could not collide with anything already listening.
- 02Isolated everything into one Docker Compose project with its own network, its own database and its own volumes — never reusing an existing database.
- 03Reused the model server that was already installed rather than standing up a second one, avoiding duplicate GPU pressure.
- 04Bound every service to localhost and published only over a private mesh network with HTTPS, so there is no public attack surface and the reverse proxy was never touched.
- 05Reclaimed the GPU by stopping two unused tools and unloading a model that had been pinned in VRAM — with the exact command to reverse it documented.
The assistant
An installable home-screen PWA that behaves like a native app, backed by an automation engine and push notifications.
- Projects, calendar and revenue in one view
- Renewal watchdog that keeps chasing until something is actually paid
- Email and message triage
- Web Push to the phone via a self-hosted notification server
- Semantic search over personal notes using vector storage
The stack it runs on
Deliberately boring, deliberately isolated — the interesting part is what it doesn't do.
- Postgres with pgvector, internal to the project only
- n8n as the automation engine
- Local LLM served from an existing model server on an RTX 3090
- All data on one dedicated NVMe path, outside existing storage
- Private mesh HTTPS only — no public ports, no reverse proxy changes
Outcome
- A working personal assistant with zero per-token AI cost and no data leaving the building.
- Production services on the same box entirely undisturbed — the whole point of the design.
- A repeatable pattern for clients who want AI but cannot send their data to a third party.
- Proof I can deploy local models and vector search on real hardware, not just call an API.
Services involved
Want something like this built — and kept running? oliver@omwc.co.uk