JRVIS

System Architecture
2
Mac Minis
11
Containers
12
MCP Servers
57
Skills
32
Contacts
02

Complete System Map

Two Mac Minis connected via Tailscale. Mini 1 runs Nathan's personal AI infrastructure. Mini 2 runs LOVR Agency operations. Shared backbone, separate credentials.

Mini 1 — Nathan's System 100.111.250.32 jarvis-postgres-1 :5433 jarvis-redis-1 :6379 (DB 0,1) jarvis-n8n-1 :5678 obsidian-couchdb :5984 LiveSync jarvis-memory-api-1 :8888 Mem0 trading-grafana :3000 orchestrator :3100 Express agent2 :3200 @JrvisBot mcp-bridge :8765 12 servers cloudflared 6 tunnels Mini 2 — LOVR System 100.107.30.117 lovr-postgres :5432 lovr-n8n :5678 9 workflows lovr-metabase :3100→3000 BI com.lovr.ollama Local LLMs com.lovr.cloudflare 2 tunnels rsync hourly Tailscale Claude API Xero API
Running
Warning
Down
Live Connection
03

Memory Architecture

Seven distinct layers of memory, from ephemeral to permanent. Each serves a different purpose in maintaining context, learning, and continuity across sessions.

1. Conversation Context
Ephemeral · Current session only · Lost on close
~200K tokens
2. STATE.md
Session → Session · Read via SessionStart hook · Current work context
24KB
3. Redis Queue
BullMQ job history · Agent 2 task queue · 7 day retention
DB 1
4. People Database
PostgreSQL · Structured contact data · Natural language queries
32 contacts
5. Mem0 Semantic Memory
Qdrant vector store · Ollama embeddings · Claude Haiku decomposition
18 memories
6. Obsidian Vault
CouchDB LiveSync · MacBook + iPhone · Hourly rsync to Mini 2
597MB
7. GitHub Backup
Permanent · jarvis-systems + jarvis-vault repos · Version history
622 files
04

Agent 2 — The Command Chain

From phone to system response. Voice or text, every message follows this path. Full Claude Code access, MCP tools, and semantic memory.

Telegram Input Voice / Text / Image Whisper OGG → WAV → Text grammY Bot Telegram :3200 Haiku Intent Router QUICK_LOOKUP SKILL_EXECUTE DEEP_RESEARCH MEMORY_QUERY SYSTEM_CMD CHAT BullMQ Queue Redis DB1 · 3 priorities Worker Pool Max 2 concurrent Claude Code Headless 12 MCP Servers 57 Skills File System System Commands Response Chunked to Telegram ~3s ~500ms instant 5-60s
05

MCP Server Constellation

12 specialized servers extending Claude Code's capabilities. Each unlocks a different domain: Google workspace, research, communication, automation.

Claude Code MCP Bridge :8765 Gmail Drive Calendar Perplexity Firecrawl Apify BrightData Airtable Notion Slack Obsidian Canva
Google Ecosystem
Research/Scraping
Productivity
Personal
06

LOVR Agency Intelligence

Mini 2 runs agency operations. Daily intelligence sync at 6am AEST. Xero + Airtable → PostgreSQL → Metabase dashboard. Zero cost, full automation.

Workflow Trigger Action Status
Morning Brief 6:30am weekdays Daily summary via Telegram Active
Daily Intelligence Sync 6:00am daily Xero + Airtable → PostgreSQL Active
Content Approval Manual trigger Telegram button approvals Active
Weekly Client Report Monday 8am Client health summaries Active
New Lead Alert Airtable webhook Instant notifications Active
Email Digest 5pm daily Gmail summary Active
Instagram Monitor Hourly Per-client engagement alerts Active
Ad Spend Monitor 9pm daily Meta spend summary Active
Proposal Generator Manual trigger Research + draft proposals Active
Content Calendar Sync Daily 8am Airtable → Calendar Active
Data Pipeline
Xero Financial Data + Airtable Client Pipeline → PostgreSQL (financials, clients, team_utilization, marketing tables) → Metabase Public Dashboard
Cost Savings
$0/month vs $120-10,080/year for commercial BI tools. PostgreSQL + Metabase OSS. All Sav's credentials, Nathan's removed.
07

Reliability & Redundancy

Auto-restart, hourly backups, and redundant storage. System recovers automatically from most failures.

Auto-Recovery

LaunchAgents (KeepAlive=true)
All critical services restart automatically on crash. orchestrator, agent2, mcp-bridge, cloudflared, memory-api.
Docker Restart Policies
All containers set to --restart always. Survives reboots, crashes, and Docker daemon restarts.
BullMQ Job Persistence
All queued jobs survive Redis restart. Worker picks up where it left off.

Backup Layers

Hourly rsync: Mini 1 → Mini 2
Complete vault directory. 597MB. Runs hourly via cron.
GitHub: jarvis-systems + jarvis-vault
622 files in jarvis-systems. Manual commits. Version history preserved.
Obsidian CouchDB LiveSync
Real-time sync to MacBook Pro + iPhone via Cloudflare tunnel.
Currently Down
com.jarvis.terminal-watcher (exit 126) — Non-critical. Terminal session logging. Can restart manually.
com.trading.killswitch (exit 78) — Trading system safety. Currently inactive. No impact.
Single Points of Failure
MCP Bridge (port 8765) — No MCP access if down. LaunchAgent restarts automatically.
Redis (jarvis-redis-1) — BullMQ queue stops. Auto-restart via Docker. Jobs persist.
Cloudflare Tunnel — External access lost. Services still run locally. Auto-reconnect.
08

Intelligence Stack

Four Claude models plus local Ollama. Router decides which model handles each request based on complexity, cost, and latency requirements.

Opus 4.6
claude-opus-4-6
When Used:
Complex reasoning, client deliverables, deep research, architectural decisions
Cost:
$15/1M input, $75/1M output
Latency:
5-15s first token
Sonnet 4.5
claude-sonnet-4-20250514
When Used:
Everyday tasks, builds, content creation, Agent 2 skill execution
Cost:
$3/1M input, $15/1M output
Latency:
2-5s first token
Haiku
claude-haiku-4
When Used:
Intent routing, classifications, quick lookups, Mem0 decomposition
Cost:
$0.25/1M input, $1.25/1M output
Latency:
~500ms first token
Local Ollama Models (Mini 2)
nomic-embed-text
768-dim embeddings for Mem0 semantic memory
llama3.1
Local inference for offline capabilities
qwen2.5
Coding tasks, local processing
Routing Logic
Haiku classifies intent → determines urgency & complexity → routes to appropriate model. Cost vs capability tradeoff optimized automatically. Agent 2 handles all Claude Code spawning with Sonnet by default.
09

Brand Voice & Output Layer

Everything the system produces follows JRVS brand guidelines. Monolith design system: minimal, precise, confident.

Design System

Parchment
#F5F0EB
Primary background for all client deliverables. Light-dominant, brutalist luxury.
Copper
#B08D6A
Primary accent. Headings, highlights, calls to action.
Typography
Playfair Display
Display text, headings
Inter
Body text, UI elements
JetBrains Mono
Code, technical labels

Output Types

Client Deliverables
HTML reports, research documents, strategy decks. All single self-contained files. Deployed to Cloudflare Pages.
Telegram Responses
Markdown formatted. Chunked to 4000 chars. Direct, minimal tone.
Obsidian Knowledge Base
597MB vault. CLAUDE.md files, research notes, architecture docs. Synced everywhere.
LOVR Intelligence
Email reports (6:30am daily), Metabase dashboard, Telegram alerts.
Design → Deploy Pipeline
Claude Code builds → jlog activity → Cloudflare Pages deploy → jdeploy log → STATE.md update → GitHub commit → rsync to Mini 2. Every deliverable tracked, versioned, backed up.