Architecture

Two cooperating processes over one streaming WebSocket protocol: a local edge and an always-on brain.

EDGE — laptop / phone / glasses (where you are)
  Mic -> wake word (openWakeWord) -> VAD (Silero) -> STT (Deepgram/Whisper)
      -> [BrainBridge] --WebSocket--+
  Speaker <- TTS (ElevenLabs/Piper) <-+   (barge-in, smart turn-taking, AEC)
                                |
              streaming events  |  (Tailnet + Bearer-token auth)
                                v
BRAIN — always-on host / VPS (24/7)
  Agent loop: own LLM (+fallback chain) - tool-calling - session + memory
  Confirmation tier ENFORCED in code - smart idle session reset
  Tools: vault(r/w) - web - telegram - gmail - calendar - notion - smart-home
         - utilities - system/PC-control - browser - reminders - coding/git
  Memory L0-L5 - proactive tick (durably logged) - scheduler - audit - health
  HTTP sidecar: /talk (iPhone Siri voice) - /control (remote PC executor)

Why the split

  • Edge (src/jarvis/edge/) keeps audio + STT/TTS local for privacy and low mic latency.
  • Brain (src/jarvis/brain/) holds the 24/7 obligations — reasoning, memory, scheduler, channels — so they survive the laptop being off.
  • The Pipecat “LLM stage” is replaced by a thin BrainBridge processor, so swapping reasoning backends or transports never touches the audio pipeline.
  • The brain can run in-process (single machine) or as a shared WebSocket server so every device shares one brain and one memory.

Memory — six layers

LayerWhatWhere
L0 Workinglive conversation; smart-reset on long idleRAM
L1 Learneddurable facts (remember/recall/forget)memory/learned/
L2 Journaldaily summaries + a durable log of proactive nudgesmemory/journal/
L3 Vaultyour Obsidian KB — read always, write on the authoritative hostJARVIS_VAULT_PATH
L4 Hot-cachefronts slow paths (search, utilities)in-process + optional Redis
L5 Semanticrecall by meaning, not just keywordsoptional local embedder
Smart session reset. After a long idle gap (JARVIS_SESSION_IDLE_RESET_MINUTES) the brain journals the prior conversation and clears working memory, so a fresh conversation hours later doesn't drag stale context or anaphora (“set it back” pointing at a “it” from this morning). Durable memory is untouched — Watari forgets the thread, not the person.

Proactivity that remembers

A background tick weighs signals and may speak unprompted within a budget and quiet hours. Every proactive line is recorded into both working memory (so you can answer “yes, do it” at once) and the L2 journal (so you can refer back days later). See Security for the enforced confirmation tier that gates anything it tries to act on.