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.

  1. 01

    Inner Life

  2. 02

    Work

  3. 03

    Health

  4. 04

    Relationships

  5. 05

    Finances

  6. 06

    Knowledge

  7. 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

  1. input

    Voice X Chat

    raw signal

  2. hot

    Active window

    ~16k tokens . last few hours

  3. warm

    Recent context

    last 30 days . summarized

  4. cold

    Full archive

    postgres . searchable

  5. semantic core

    Identity + retrieval

    pgvector . BM25 hybrid

  6. 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.

build status . local log
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.