architecture . v1
How Oasis is built.
Five kernels. Seven domains. One self-model injected on every LLM call. Memory tiered into hot, warm, cold, and semantic. Daemons mapped to run continuously in the background. Public claims here are tied to sanitized evidence paths and build history.
01 . buyer translation
What this proves.
The technical architecture matters because it translates into how Paul advises ServiceNow teams: memory, governance, repeatability, vendor flexibility, and permissioned action.
Governed memory
A repeatable way to carry context across engagements instead of restarting from blank chats.
Repeatable judgment
Council reviews, identity context, and build history make the advisory point of view inspectable.
Permissioned action
Outbound workflows are designed around confirmation paths rather than blind automation.
Vendor flexibility
The model router keeps Claude, GPT, Grok, Gemini, and local models replaceable.
02 . trust ledger
Claims, proof, and boundaries.
The site should make the evidence legible without pretending private context can be public. These labels separate implemented code, wired loops, public artifacts, and private material that needs redaction.
- claim
- Oasis has a real multi-model routing layer.
- status
- implemented
- public proof
- backend/src/llm/router.py
- private boundary
- Usage logs can be shown in redacted form; prompts may contain private context.
- claim
- Memory is tiered across hot, warm, cold, and semantic context.
- status
- implemented
- public proof
- backend/src/memory/retrieval.py
- private boundary
- The useful memory content is personal by design, so examples need redaction.
- claim
- Daemon loops are mapped into the operating system.
- status
- wired
- public proof
- backend/app.py startup map and backend/src/daemon/
- private boundary
- Heartbeat and output examples can be shared only after removing private calendar, inbox, and journal data.
- claim
- Outbound workflows use queue-backed approval paths.
- status
- implemented
- public proof
- backend/src/actions/queue.py
- private boundary
- Action rows may reference email, calendar, and social content; public examples should be synthetic or redacted.
- claim
- Oasis powers Paul's Catalyst and advisory work.
- status
- used privately
- public proof
- catalyst-sn.com and the Proof Stack page
- private boundary
- Client and partner artifacts stay private unless converted into sanitized samples.
03 . kernels
Five kernels.
Each one is a primitive that the rest of the system composes against.
kernel 01
Memory
Persistent across every model. Hot, warm, cold, semantic. pgvector backbone. The context every other AI app forgets between sessions.
hot . warm . cold . semantic- schemabackend/migrations/
- retrievalbackend/src/memory/retrieval.py
- consolidationbackend/src/daemon/kairos.py
kernel 02
Voice
Speak in. Speak back. Voice memos today; always-on conversational with wake word and barge-in in flight.
whisper . deepgram . cartesia- ingestbackend/src/sync/voice_memos.py
- uisrc/app/dashboard/voice/
kernel 03
Identity
One self-model injected into model calls. Same voice across Claude, Grok, GPT, Ollama. The identity layer I could not find in consumer AI tools.
self_model . goals . voice . constraints- semantic corebackend/src/memory/semantic_core.py
- router hookbackend/src/llm/router.py
kernel 04
Reflection
Daily, weekly, monthly loops. Kairos consolidation overnight. Pattern recognition that compounds the longer the system runs.
daily . weekly . monthly . kairos- kairosbackend/src/daemon/kairos.py
- inner-lifesrc/app/dashboard/inner-life/
kernel 05
Action
Daemons mapped to act without being asked. Calendar, mail, signals, briefings. 15 wired loops. Outbound workflows are designed around queue-backed approval paths.
15 wired loops . 3 tier permission . action logging- daemonsbackend/src/daemon/
- action queuebackend/src/actions/queue.py
- auth tiersbackend/src/permissions/model.py
04 . domains
Seven domains.
Every part of the life it runs. One operating system.
01
Inner Life
02
Work
03
Health
04
Relationships
05
Finances
06
Knowledge
07
Home
05 . memory
Tiered memory.
The hottest context goes to the model. The rest stays searchable.
Hot
Active context window. Last few hours. ~16k tokens.
Warm
Recent conversations + journal entries. Last ~30 days.
Cold
Long-term archive. Postgres rows. Searchable.
Semantic Core
pgvector embeddings. BM25 hybrid retrieval.
Memory flow
capture . retrieve . assemble . answer
input
Voice X Chat
raw signal
hot
Active window
~16k tokens . last few hours
warm
Recent context
last 30 days . summarized
cold
Full archive
postgres . searchable
semantic core
Identity + retrieval
pgvector . BM25 hybrid
answer context
Assembled per turn
right memory, right model
06 . router
Multi-model router.
Claude, GPT, Grok, Gemini, Ollama. One interface. Bring your own keys.
Claude (Opus / Sonnet / Haiku)
Reasoning and review
OpenAI (GPT-4o / o-series)
Code, structured output
xAI Grok
Search-grounded answers
Google Gemini
Long-context synthesis
Ollama (local)
Free + private inference
Anthropic Workbench
Eval and red-team runs
07 . daemons
Daemons that act.
15 background loops mapped across the system and wired into the app startup map. Outbound capabilities are designed around queue-backed approval paths.
- kairos . nightly memory consolidation
- morning briefing . 06:00 daily
- podcast scoring . on new episode
- social signals . continuous
- inbox monitor . 5-minute interval
- relationships nudge . daily
- health protocol check . daily
- calendar sync . on event change
- link ingest . on URL drop
- skill scanner . on file change
- voice memo transcribe . on upload
- outreach drafter . on trigger
- thesis indexer . weekly
- vps health . hourly
- council pressure-test . on draft
08 . status
Build status.
Pulled from the local git history. This is provenance, not runtime telemetry.
- latest build event
- cbf99aaWave 1 Gap 5 - distributed tracing (#8) . just now
- memory work
- 1h agoadd memory dedup pass with dry-run safety default
- reflection work
- scheduled dailyinner-life target loop
- daemon loop map
- 15 wiredstartup map for kairos . briefing . podcast . inbox . relationships . health . skills
- model stack
- 5Claude . GPT . Grok . Gemini . Ollama
09 . stack
Tech stack.
Boring choices, deliberately. Everything is replaceable.
Frontend
- Next.js 16
- React 19
- Tailwind 4
- shadcn/ui
Backend
- Python 3.12
- Starlette
- uvicorn
- LiteLLM
Data
- PostgreSQL
- pgvector
- Supabase
- BM25 hybrid retrieval
Voice
- Whisper (STT today)
- Deepgram Nova-3
- Cartesia Sonic-3
- Pipecat (planned)
Local
- Ollama
- Apple Shortcuts
- Docker Compose
- VPS (hetzner / mac mini)
Privacy + sovereignty
Three-tier permission model (autonomous, confirm-once, always-ask). Action logging and queue-backed approvals are implemented for outbound workflows. Data is designed to stay on Paul's hardware by default; cloud model calls are routed intentionally where configured. Full export is packaged as JSON, schema, and metadata.