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

  1. 01Took a live inventory of the server before choosing a single port, so the new stack could not collide with anything already listening.
  2. 02Isolated everything into one Docker Compose project with its own network, its own database and its own volumes — never reusing an existing database.
  3. 03Reused the model server that was already installed rather than standing up a second one, avoiding duplicate GPU pressure.
  4. 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.
  5. 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

Automation & AI SystemsProduct & App DevelopmentRun & Maintain

Want something like this built — and kept running? oliver@omwc.co.uk