🐉 SOV3³ + OOWM — Operator Runbook

Tab 4 of 4. For when the overview isn't enough. Per-model: route, invoke, observe, catch failures. The "make it work and make it not lie" reference.

Tab 4 / 4 Same canonical source as tabs 1-3 For when you're shipping, not when you're pitching

00 / Pre-flight checks

Before any model call in production, verify these 6 things. Failures here cascade.

SOV3 substrate
POST /mcp responds with tool list
curl http://localhost:3101/mcp
Ollama
At least 1 base model loaded
ollama list
OOWM engine
Module imports without error
python3 -c "from sovereign_temple.sov3_oowm import OOWM"
BFT council
At least 23 of 33 nodes reachable
curl /mcp tool=sov3_council_status
SIGIL chain
Last receipt valid + signed
cat ~/.sovereign/last_sigil.json | jq -r .sig | wc -c → 88
Models loaded
Each model below has a load probe
curl http://localhost:11434/api/show -d '...'

01 / Operate the MoE family

01.A

qwen3:30b-a3b · Deep reasoning MoE

Apache 2.0 · 18GB · 80 tok/s · 32K context · 3B active/token
Apache 2.0
1Route

The MoE is the default for deploy, sovereign, and defence task categories. The SOV3 router sends those tasks here unless overridden.

# Confirm route
curl -s -X POST http://localhost:3101/mcp \
  -d '{"tool":"sov3_oowm_routing","category":"deploy"}'
→ {"brain":"moe_large_online","model":"qwen3:30b-a3b","mindset":"decisive"}
2Invoke direct
# Direct Ollama call (bypasses SOV3 routing)
curl -s -X POST http://localhost:11434/api/generate \
  -d '{
    "model": "qwen3:30b-a3b",
    "prompt": "Summarise Article 50 of the EU AI Act in 5 bullets",
    "stream": false,
    "options": {"temperature": 0.3, "num_ctx": 8192}
  }' | jq .response
3Invoke via SOV3
# Same task, routed through sovereign sandwich
curl -s -X POST http://localhost:3101/mcp \
  -d '{
    "tool": "sov3_apply_routing",
    "category": "deploy",
    "query": "Summarise Article 50 of the EU AI Act in 5 bullets"
  }'
→ Auto-routes, signs response with Ed25519, returns sovereign envelope
4Observe
What success looks like
HTTP 200, response {"response": "...", "eval_count": 234, "eval_duration": 3_400_000_000_ns}, SIGIL receipt appended to ~/.sovereign/sigil.jsonl
First-token latency~800ms cold, ~120ms warm
Tokens/s~80 sustained
Memory resident~22GB unified (M-series Mac)
Receipt formatJSONL appended, Ed25519 line
5Failures you'll see
Timeout on a cool cache
First call after boot loads 18GB from disk → 30-60s. Solution: warm the cache once on boot via ollama run qwen3:30b-a3b ""
"server busy, please try again"
VM Ollama is saturated by sibling agents (W38 honest finding). Solution: graceful fallback to deepseek-r1:7b via sov3_apply_routing with voters parameter.
M4 Mac 192GB: not loaded
30B is designed for the 192GB M4. If you see qwen3:30b-a3b not found on a 16GB Mac, route to the smaller MoE (qwen2.5:3b) — see Op 01.B.
01.B

qwen2.5:3b · Fast MoE router

Apache 2.0 · 2GB · ~200 tok/s · 8K context · the "everything is fine, route now" model
Apache 2.0
1When to use
  • Router needs to decide FAST which downstream model to use
  • Resource-constrained Mac (16/32GB)
  • Always-on classifier (junk/topic/route) — needs sub-100ms latency
  • The fallback when qwen3:30b-a3b is unavailable
2Invoke
# Fast route call
curl -s http://localhost:11434/api/generate \
  -d '{"model": "qwen2.5:3b", "prompt": "Classify: GDPR-compliance / EU-AI-Act / other"}'
3Observe
What success looks like
One-word or one-line answer in < 50ms. Used for routing decisions, not for final answers.

02 / Operate the MoM family

02.A

moondream · Vision perception

Open · 1.7GB · ~150ms/image · object recognition + captioning
Open
1Route

MoM is the default for world, physical, sovtown, companion — anything with image/sensor/spatial input.

# Route via SOV3
curl -s -X POST http://localhost:3101/mcp \
  -d '{"tool":"sov3_oowm_routing","category":"world"}'
→ {"brain":"mom_large_offline","model":"moondream:latest","mindset":"curious"}
2Invoke (image)
# Direct vision call
python3 -c "
import base64, requests
img = base64.b64encode(open('/tmp/test.jpg','rb').read()).decode()
r = requests.post('http://localhost:11434/api/generate', json={
    'model': 'moondream',
    'prompt': 'What is in this image?',
    'images': [img]
})
print(r.json()['response'])
"
3Invoke (sovereign)
# Via mom_perceive MCP tool — returns structured + SIGIL
curl -s -X POST http://localhost:3101/mcp \
  -d '{
    "tool": "mom_perceive",
    "image_b64": "<base64>",
    "modality_hint": "objects",
    "return_format": "structured"
  }'
→ { objects: [...], confidence: 0.85, signed_sigil: "..." }
4Observe
What success looks like
{"objects": [...], "confidence": 0.7+} · ~150ms · no SIGIL on the direct call, but SIGIL envelope on mom_perceive
5Failures
"image too large"
moondream caps at 1024px on longest side. Solution: PIL-resize before send.
Hallucinated objects in low light
Confidence drops. Solution: combine with zamba-large for cross-corroboration.
02.B

zamba-large · Vision + Spatial

Open · ~7GB · spatial layout, OCR, chart understanding
Open
1When to use
  • Chart / table / diagram understanding (better than moondream)
  • OCR of multi-language documents
  • Spatial reasoning (where things are, not just what's there)
2Invoke
# Same shape as moondream, different model name
curl -s http://localhost:11434/api/generate \
  -d '{"model": "zamba-large", "prompt": "Where is the legend?", "images": ["<b64>"]}'
02.C

qwen-vl · Vision-Language (chart/diagram)

Open · understands charts, tables, infographics
Open
2Invoke
# For chart parsing → structured data
curl -s http://localhost:11434/api/generate \
  -d '{
    "model": "qwen-vl",
    "prompt": "Extract the data table from this chart as JSON",
    "images": ["<b64>"]
  }'

03 / Operate the SSM family

03.A

Mamba-2 (16-dim) · World state memory

Replaces 32K context window · O(1) per token · the long-memory backbone
Open
1What it does

Mamba-2 isn't called by user routes — it's called by the OOWM engine itself to maintain world state. You can't POST /api/generate it directly. You interact through the OOWM.

2Read state
# Inside sovereign_temple on the Mac
from sovereign_temple.sov3_oowm import OOWM
oowm = OOWM(brain="sovereign-intuition")

# Read the world state as a 16-dim vector
state = oowm.read_state()
print(state.shape)  → torch.Size([16])
print(state.norm())  → tensor(1.2341)   # bounded, never explodes
3Update state
# Each new observation nudges state
oowm.update_state("user_asked_about_article_50")
oowm.update_state("user_passed_gdpr_consent")
oowm.update_state("user_requested_pro_tier")

# State is signed + appended to log (Ed25519)
assert oowm.last_receipt.sig is not None
4Observe
What success looks like
State vector stays bounded (norm < 10). Each update_state emits one SIGIL receipt to ~/.sovereign/oowm_state.jsonl
5Failures you'll see
State explodes (norm > 100)
Means update function is not properly normalised. Catch in CI: write a test that 1M random updates never push norm past 50.
"handle_oowm_status returns True"
This is HARDCODED. Do not trust. Test the actual state vector by reading it back.

04 / Operate the reasoning LLM

04.A

deepseek-r1:7b · Chain-of-thought

MIT · 4.7GB · 40 tok/s · 16K context · the "think out loud" model
MIT
1Route

DeepSeek-R1 is the default for compliance, sov3, ethics, reasoning — anywhere step-by-step logic matters.

# Route verification
curl -s -X POST http://localhost:3101/mcp \
  -d '{"tool":"sov3_oowm_routing","category":"compliance"}'
→ {"brain":"hybrid_sovereign","model":"deepseek-r1:7b","mindset":"wise"}
2Invoke
# Long-running reasoning call (3-15s thinking + final answer)
curl -s http://localhost:11434/api/generate \
  -d '{
    "model": "deepseek-r1:7b",
    "prompt": "Does this AI system violate Art 14? Steps: 1) read description 2) enumerate 4 human-oversight requirements 3) check each 4) emit verdict",
    "stream": false,
    "options": {"num_predict": 8192}
  }'
→ { thinking: "...step trace...", response: "VERDICT: REMEDIATE..." }
3Observe
What success looks like
Returns BOTH thinking (the trace) AND response (the final answer). Total latency 3-15s. The trace is the audit trail — never strip it.
Thinking budgetAllow 3-15s wall time
Output ceilingSet num_predict 8192 or higher
AuditabilityTrace string becomes the "reasoning trail" in BFT votes
4Failures
Returns ONLY response, no thinking
num_predict was set too low — model had no room for thinking. Bump to 8192+.
Loop of "let me reconsider..."
Model got stuck in reasoning recursion. Truncate the trace at <think> at 50K chars.

05 / Operate TTS

05.A

Kokoro-82M · Sovereign voice

Apache 2.0 · 82M params · CPU real-time · 9 voices
Apache 2.0
1Voices
British malebm_george, bm_lewis
British femalebf_emma, bf_isabella
American maleam_adam, am_michael
American femaleaf_bella, af_sarah
Otherif_* (Italian), zf_* (CN female)
2Invoke
# Sovereign voice synthesis → wav
python3 -c "
from kokoro import synthesize
synthesize(
    text='This system complies with EU AI Act Article 50.',
    voice='bm_george',
    out_path='/tmp/compliance.wav'
)
print('OK')
"
3Via the voice dock
# os.meok.ai voice button hits this endpoint
curl -s -X POST http://localhost:3101/mcp \
  -d '{
    "tool": "sov3_speak",
    "text": "Compliance check complete.",
    "voice": "bf_emma"
  }'
→ { audio_url: "/sovereign/voice/abc123.wav", sigil: "..." }
4Observe
What success looks like
WAV file in /tmp (~80KB per 5s of speech). Latency ~30ms per second of audio. CPU only.
5Failures
MIC HEARS TTS — infinite loop (28 Jun 2026 bug)
Voice loop state. 3-layer fix in place: (1) don't listen while TTS plays (state flag), (2) drop echoes of what we just said (text compare), (3) action handlers RETURN after ACT-SPEAK-WAIT.
Wrong voice tone
voice param wrong — use exact voice ID (bf_emma not emma).

06 / Operate embedding + retrieval

06.A

BGE-M3 + BGE-reranker · Sovereign RAG

MIT · 1024-dim · 100+ languages · powers all 6 Hives
MIT
1Embed
# Single text → 1024-dim vector
python3 -c "
from sovereign_temple.retrieval import SovereignEmbeddings
emb = SovereignEmbeddings(model='bge-m3')
vec = emb.encode('EU AI Act Article 50 requires watermark provenance')
print(vec.shape)  # → (1024,)
"
2Index + retrieve (one of the 6 Hives)
# Example: index the Governance Hive (30 sources, EU data corpus)
python3 -c "
from sovereign_temple.retrieval import SovereignRAG
rag = SovereignRAG(embedding_model='bge-m3')
rag.index('/data/hive-data/governance/')

# Query with re-ranking
hits = rag.query(
    'transparency obligations for AI-generated content',
    top_k=10,
    rerank_top_k=5
)
for hit in hits:
    print(f'{hit.score:.3f} {hit.path}')
"

→ 0.842 /data/hive-data/governance/eu_ai_act_art_50.md
   0.815 /data/hive-data/governance/eu_ai_act_art_12.md
   ...
3Observe
What success looks like
Top-1 score > 0.7 for a clear query. Re-ranking improves top-3 precision by 15-20%.
4Failures
All scores < 0.3
Likely cause: index not built or wrong path. Run rag.index(...) first.
Index takes 10+ minutes
Indexing 49GB takes time. Run as cron 0 2 * * 0 weekly.

07 / Operate our trained NNs

07.A

The 7 governance classifiers

CSOAI own · narrow specialists · 3 strong, 2 weak (retraining), 2 tiny
CSOAI own
1Strong models (use these)
creativity_assessment_nnr² 0.91 · 350 samples
care_pattern_analyzermae 0.037 · 600 samples
relationship_evolution_nnmae 0.071 · 500 samples
2Weak models (don't use yet)
threat_detection_nnacc 0.45 · 33 samples · needs retraining
dependency_detection_nnacc 0.22 · 50 samples · needs retraining
3Tiny-sample models (treat outputs as signals, not verdicts)
care_validation_nnmae 0.19 · 19 samples
partnership_detection_mlmae 0.22 · 19 samples
4Invoke (any model)
# MEOK MCP exposes them all
curl -s -X POST http://localhost:3101/mcp \
  -d '{
    "tool": "sov3_run_governance_signals",
    "input": {"text": "...", "context": "..."},
    "models": ["care_pattern_analyzer", "creativity_assessment_nn"]
  }'
→ { care_pattern: 0.83, creativity: 0.71, signed_sigil: "..." }
5Failures
threat_detection_nn returns acc 0.45
That's the honest baseline. Don't put it on the dashboard. Retrain on real labelled data first.

08 / Operate the cloud ensemble (BFT voters)

08.A

OpenAI / Claude / GLM-5.2 / Groq · Vote + fallback

API · never primary route · never train data
API
1The rule

Cloud models participate as BFT voters (adds diverse perspective to council votes) and as fallback when local sovereign model is saturated. No user data is ever sent for training. Verify each integration with a data-handling attestation first.

2Invoke (hybrid with 2 voters)
# Same as compliance call, but with voters array
curl -s -X POST http://localhost:3101/mcp \
  -d '{
    "tool": "sov3_apply_routing",
    "category": "compliance",
    "query": "Score this AI system against Article 50",
    "voters": ["deepseek-r1:7b", "claude-sonnet-4"],
    "quorum": 2
  }'
→ BFT result with both votes, Ed25519-signed
3Fall-back mode
# If local model is saturated, the voter takes primary
curl -s -X POST http://localhost:3101/mcp \
  -d '{
    "tool": "sov3_apply_routing",
    "category": "speed",
    "voters": ["qwen3:0.6b", "groq-llama"],
    "timeout_ms": 2000
  }'
4Failures
Spend grew past budget
BFT voters are pay-per-token. Set budget_cap_usd_per_session per integration.
Cloud API was used to train on user data
NEVER default to this. Custom integrations must use OpenAI/Anthropic zero-retention endpoints. Verify with their attestation.

09 / Routing table — the full 13 categories

When a task arrives, it gets dispatched to one of these (brain, model, mindset) triples. Print it as your desk reference.

compliancehybrid_sovereign · deepseek-r1:7b · wise
defencehybrid_sovereign · qwen3:30b-a3b · bold [EAT-frozen]
sov3hybrid_sovereign · deepseek-r1:7b · logical
worldmom_large_offline · moondream · curious
physicalmom_large_offline · moondream · creative
sovereignmoe_large_online · qwen3:30b-a3b · careful
sovtownmom_large_offline · moondream · diplomatic
deploymoe_large_online · qwen3:30b-a3b · decisive
ethicshybrid_sovereign · deepseek-r1:7b · wise
companionmom_large_offline · moondream · diplomatic
reasoninghybrid_sovereign · deepseek-r1:7b · logical
speedmom_large_offline · qwen3:0.6b · focused
defaulthybrid_sovereign · qwen3:30b-a3b · wise

10 / Honesty register (operator checklist)

FLAG 01 · CRITICAL
handle_oowm_status returns HARDCODED True. Never trust it. Read state directly.
FLAG 02 · WARNING
qwen3:30b-a3b may not be loaded on resource-constrained Macs. Verify via ollama list.
FLAG 03 · WARNING
4 of 7 trained NNs are weak/tiny. Don't ship them to dashboards until retrained.
FLAG 04 · WARNING
"Bitcoin anchor", "consciousness 0.775" are labels. Out of operator copy.
FLAG 05 · CRITICAL
SOVEREIGN-DEFENSE brain frozen by EAT directive 2026-07-02.