COUNCIL BRIEF CB-002: Nova Voice — Private Local Voice Assistant
Atlantis ITS — May 20, 2026
Brief ID: CB-002
Version: 1.1 (Mercy conditions + all votes received — Final)
Status: ✅ APPROVED WITH CONDITIONS — 7 of 7 votes received
Codename: Nova-Cal
From: Shane Hardin (System Owner)
To: Full Atlantis Council — Ozzy, Mercy, Scout, Jimmy, Cooper, Lyra, Nova
Local Path: C:\AtlantisITS\knowledge
Forgejo Path: atlantis-docs/council/CB-002-Nova-Voice.md
Compiled by: Ozzy (merged from Lyra proposal + Scout scope + Jimmy blueprint + Mercy conditions)
Version History
| Version | Change |
|---|---|
| v1.0 | Initial brief — Lyra proposal, Scout scope, Jimmy blueprint |
| v1.1 | Mercy vote + 6 conditions folded in. All 7 votes received. Final. |
🗳️ CONSORTIUM VOTE — FINAL TALLY
| Member | Vote | Key Conditions |
|---|---|---|
| Ozzy (Claude) | ✅ Approve | SOP-008 gates, Trunks WSL2 POC first |
| Mercy (OpenAI) | 🟡 Approve with conditions | Cal v1.4 source verification before install, Groq = lab-only non-sensitive, push-to-talk before wake word, pin Docker images not latest, soften SOP-008 language, lab-scoped n8n key only |
| Scout (Grok) | ✅ Approve | Tight scope, Nova Phase 3 alignment |
| Jimmy (Gemini) | ✅ Approve | Full blueprint submitted, SOP-008 aligned |
| Cooper (Copilot) | ✅ Approve | Technically sound, zero VRAM, zero cost, no conditions |
| Lyra (Perplexity) | ✅ Approve | Original proposal author |
| Nova | N/A | Phase 2 — this builds Nova's voice layer |
| Shane (System Owner) | ✅ Proposed | Final authority |
| RESULT | ✅ UNANIMOUSLY APPROVED WITH CONDITIONS | 7/7 — full quorum |
Architecture approved. POC gated on Mercy's conditions being met before first container pull.
Draft Decision Line (Scout — Adopted)
"Atlantis will prototype a private local voice interface (codenamed Nova-Cal) on a single Raspberry Pi. Phase 1 will focus on wake-word detection, local knowledge base lookup, and basic command execution (calendar, briefings, system status). No cloud dependencies unless explicitly approved. Success criteria: usable latency and reliability for daily internal use."
Purpose
Build Nova an auditory interface — a private, local-first voice assistant that:
- Keeps voice data on-device or within approved Atlantis infrastructure
- Integrates natively with the Nova Bus via MCP + n8n
- Does not depend on Siri, Google Assistant, or Alexa
- Adheres to SOP-008 v0.4 compliance gates throughout
- Protects RTX 3060 VRAM for model inference
Why Not Siri / Google / Alexa (Lyra)
Using consumer assistants means voice data processed in external ecosystems, no control over logs or permissions, no Atlantis knowledge base integration, no branding, and privacy misalignment with SOP-008 v0.4.
Technology Decision: Cal v1.4 vs Wyoming Protocol (Jimmy)
Wyoming Protocol (NetworkChuck) — Rejected
| Factor | Assessment |
|---|---|
| Integration | Hard-coded into Home Assistant Assist pipeline |
| Problem | Bottleneck for async multi-agent reasoning and n8n operations |
| Verdict | 🔴 Wrong fit — dead end for Nova Bus architecture |
Cal v1.4 (CoreWorxLab) — Selected for Lab Verification ⚠️
Mercy condition: Cal v1.4 is selected pending source/image validation — not unconditionally selected.
Status: "Selected for lab verification — pending source/image validation"
Before pulling any Docker images, verify:
- [ ] CoreWorxLab repo/docs confirmed legitimate
- [ ] Image names confirmed:
coreworxlab/cal-agent+coreworxlab/cal-piper - [ ] License reviewed and approved
- [ ] Maintainer identity and activity confirmed
- [ ] Last update date confirmed (January 2026 claimed)
- [ ] Docker image digest captured for pinning
- [ ] Security posture reviewed (no unexpected network calls, no data exfiltration)
| Factor | Assessment |
|---|---|
| Integration | Native MCP — exposes n8n webhooks as discoverable AI tools |
| VRAM | CPU-only Docker profile — saves 17GB container bloat |
| n8n wiring | Webhook URL + description → Cal auto-discovers as callable tool |
| Verdict | ✅ Correct architecture — pending source validation |
Architecture: Nova-Cal Stack
Push-to-talk (Phase 1) / Wake word (Phase 2 — after approval)
→ Cal v1.4 agent (nova_voice_bridge :3443 — loopback only)
→ Groq Cloud API (Whisper V3 Turbo — STT — lab/non-sensitive only)
→ Cal discovers tools via MCP
→ Routes to n8n webhook (lab-scoped API key)
→ n8n fetches: squad status / briefings / knowledge base / commands
→ Response text returned to Cal
→ Piper TTS CPU container (nova_tts_engine)
→ Audio output via speaker
Stack Components
| Component | Technology | Host | VRAM |
|---|---|---|---|
| Input method | Push-to-talk (Phase 1) → Wake word (Phase 2) | Hardware | None |
| STT | Groq Whisper V3 Turbo | Groq Cloud — lab/non-sensitive only | None |
| Tool discovery | Cal v1.4 MCP | Trunks WSL2 | None |
| Tool execution | n8n webhooks (lab-scoped key) | Trunks :5678 | None |
| TTS | Piper CPU container | Trunks WSL2 | None — CPU only |
| Local LLM (future) | Ollama | Trunks | As needed |
RTX 3060 VRAM impact: Zero
⚠️ Mercy's Conditions (All Required Before POC Build)
Condition 1 — Cal v1.4 Source Verification
Before pulling any images, complete the verification checklist above. Do not skip this. An unverified Docker image is a supply chain risk.
Condition 2 — Groq STT Scope Restriction
Groq STT is approved for non-sensitive lab commands only.
Voice leaves local infrastructure when using Groq. This is acceptable for: - "Squad status" - "Read today's briefing" - "Nova container health" - "Calendar summary"
This is NOT acceptable for: - Family or personal conversations - Financial data - Customer or client information - Guest or rental data - Credentials or secrets - Private ops discussions
If a command involves sensitive content → do not use Groq STT. Future: local Whisper on Trunks for sensitive commands.
Condition 3 — Push-to-Talk Before Wake Word
Phase 1 input model:
Phase 1: Push-to-talk only
Phase 2: Wake word (after privacy testing passes)
Always-listening: NEVER until explicitly approved
Wake words require continuous mic monitoring. For a privacy-first POC, push-to-talk is cleaner and safer. No always-listening without explicit council approval.
Condition 4 — Docker Image Pinning
No
:latestimages after first throwaway lab test.
First throwaway test: latest acceptable to confirm images exist and run.
All repeatable POC runs: pinned version or digest required.
After source verification, update compose file:
# Replace this:
image: coreworxlab/cal-agent:latest
# With this (example — use actual verified digest):
image: coreworxlab/cal-agent:1.4.0@sha256:[verified-digest]
image: coreworxlab/cal-piper:1.4.0@sha256:[verified-digest]
Capture digests with:
docker inspect coreworxlab/cal-agent:latest --format='{{index .RepoDigests 0}}'
Condition 5 — SOP-008 Language Corrected
Not: "SOP-008 compliant out of the box"
Correct: "Designed to support SOP-008 controls when configured correctly"
Loopback binding is good but SOP-008 compliance also requires: logging, secrets handling, image verification, rollback documentation, and data-flow review. All of which are required before POC goes live.
Condition 6 — Lab-Scoped n8n API Key
The .env includes N8N_API_KEY. This must be: - A lab-only n8n token — not the production key - Limited scope — read/execute only, no admin access - Created specifically for Nova-Cal in n8n Settings → API → Add API Key (label: nova-cal-lab) - Stored in password manager - Never committed to Forgejo
⛔ No-Go Criteria
Do NOT proceed with POC build if:
- [ ] Cal v1.4 source/image validation not complete
- [ ] Docker images not pinned (after throwaway test)
- [ ] Groq STT used for sensitive commands
- [ ] Always-listening wake word enabled before approval
- [ ] Production n8n API key used instead of lab-scoped key
- [ ]
.envcommitted to any repo - [ ] Port :3443 exposed beyond 127.0.0.1
- [ ] Logs not writing to
/atlantis-ops/logs/voice.log - [ ] VRAM consumption detected from voice stack
- [ ] Personal, family, financial, or client data in voice pipeline
Phase 1 Use Cases
| Command | What it does | Groq Safe? |
|---|---|---|
| "Squad status" | PM2 services + last updates.md | ✅ Yes |
| "Read today's briefing" | Latest Chronicle or council brief | ✅ Yes |
| "Calendar summary" | Next Google Calendar events | ✅ Yes |
| "Nova status" | Nova Router health + handler manifest | ✅ Yes |
| "Memory update" | Last 5 V24 memory items | ✅ Yes |
All Phase 1 commands are non-sensitive. ✅ Groq STT approved for all of these.
Risks
| Risk | Level | Mitigation |
|---|---|---|
| Cal v1.4 unverified image | 🔴 Pre-build risk | Source verification checklist required first |
| Scope creep | 🔴 High | POC only — 5 commands max Phase 1 |
| Always-listening privacy | 🔴 High | Push-to-talk Phase 1, never always-listening without approval |
:latest image chaos | 🟡 Medium | Pin after throwaway test |
| Voice latency | 🟡 Medium | Groq Whisper V3 Turbo is fast — test before expanding |
| Mic/speaker quality | 🟡 Medium | Hardware matters more than expected — budget for USB mic |
| Production n8n key exposure | 🟡 Medium | Lab-scoped key only |
| Pi role conflict | 🟡 Medium | Trunks WSL2 POC first — dedicated Pi after validation |
Hardware Decision (Ozzy — Trunks WSL2 First)
| Option | Detail | Cost |
|---|---|---|
| Option C — Trunks WSL2 (Recommended) | Validate stack at zero cost first | $0 |
| Option A — Dedicated Pi 4 | After POC validates | ~$55-75 |
| Option B — Shared Pi 4 | Risk to monitoring node | $0 but risky |
Jimmy's Implementation Blueprint (Updated with Mercy's Conditions)
Step 1 — Source Verification (Mercy — Do First)
# Check CoreWorxLab on Docker Hub / GitHub before pulling
# Verify image names, last update, maintainer, license
# Pull only after verification complete
Step 2 — Establish Voice Directory
cd ~/atlantis/atlantis-labs
mkdir -p nova-cal-voice
cd nova-cal-voice
echo ".env" >> .gitignore
echo ".env.production" >> .gitignore
Step 3 — Configure Environment File
nano .env
# --- HOST NETWORKING ---
CAL_HOST_IP=127.0.0.1
PORT=3443
# --- ORCHESTRATION LINKS ---
N8N_API_URL=http://127.0.0.1:5678
# Lab-scoped key ONLY — not production (Mercy condition)
N8N_API_KEY=your_lab_only_n8n_token_here
# --- INTERFACE CONTROLS ---
# Groq approved for non-sensitive lab commands only (Mercy condition)
AI_PROVIDER=groq
GROQ_API_KEY=your_secured_groq_api_key_here
⚠️ Never commit
.envto Forgejo —.gitignoreadded in Step 2.
Step 4 — Throwaway Test with :latest
# First run only — verify images exist and start cleanly
# Capture digests immediately after
docker pull coreworxlab/cal-agent:latest
docker pull coreworxlab/cal-piper:latest
# Capture digests for pinning
docker inspect coreworxlab/cal-agent:latest --format='{{index .RepoDigests 0}}'
docker inspect coreworxlab/cal-piper:latest --format='{{index .RepoDigests 0}}'
# Save both digests in password manager / notes
Step 5 — Deploy Pinned CPU Compose File
nano docker-compose.voice.yml
version: '3.8'
services:
nova-voice-agent:
# Pin after throwaway test — replace :latest with verified digest
image: coreworxlab/cal-agent:latest # TODO: pin after Step 4
container_name: nova_voice_bridge
restart: unless-stopped
env_file:
- .env
profiles:
- https
ports:
- "127.0.0.1:3443:3443"
volumes:
- ./voice-settings:/app/settings
- ./piper-voices:/app/piper/voices
networks:
- voice-secure-net
security_opt:
- no-new-privileges:true
local-tts-piper:
# Pin after throwaway test
image: coreworxlab/cal-piper:latest # TODO: pin after Step 4
container_name: nova_tts_engine
restart: unless-stopped
networks:
- voice-secure-net
security_opt:
- no-new-privileges:true
networks:
voice-secure-net:
driver: bridge
Step 6 — Launch
docker compose -f docker-compose.voice.yml --profile https up -d
docker compose -f docker-compose.voice.yml ps
docker compose -f docker-compose.voice.yml logs -f
Step 7 — Web Setup Wizard
Navigate to: https://localhost:3443
- Input: Groq / Whisper V3 Turbo
- TTS: Piper (Ryan voice)
- Input mode: Push-to-talk (Phase 1 — not wake word)
- n8n API URL:
http://127.0.0.1:5678
Step 8 — Wire First n8n Tool
Create Webhook node in n8n (lab workflow only):
| Field | Value |
|---|---|
| Path | /get-squad-status |
| Method | GET |
| Notes | "Use this tool when user requests active status check for Atlantis AI Council. Returns PM2 container state and last updates.md entries." |
Test: Push-to-talk → "Squad status" → verify response read aloud via Piper.
Pass Criteria (POC)
- [ ] Cal v1.4 source verified before any image pulled
- [ ] Docker image digests captured and pinned
- [ ]
nova_voice_bridgerunning at :3443 (loopback only) - [ ]
nova_tts_enginerunning - [ ] Web wizard accessible at
https://localhost:3443 - [ ] Groq STT processes non-sensitive test audio cleanly
- [ ] Piper TTS speaks response through speakers
- [ ] Push-to-talk triggers correctly (not always-listening)
- [ ] n8n webhook discovered as Cal tool via MCP
- [ ] "Squad status" returns correct PM2 + updates.md output
- [ ] RTX 3060 VRAM unaffected —
nvidia-smishows no Nova-Cal processes - [ ] No personal, family, financial, or sensitive data processed
- [ ]
.envnot committed to Forgejo - [ ] Lab-scoped n8n key confirmed (not production)
- [ ] Logs writing to
/atlantis-ops/logs/voice.log
Post-POC Promotion Path
Source verification ✅
→ Throwaway test ✅
→ Images pinned ✅
→ Push-to-talk POC validated ✅
→ SOP-008 v0.4 review
→ Shane sign-off
→ Hardware decision: dedicated Pi 4
→ Migrate nova-cal-voice to Pi
→ Wake word evaluation (Phase 2 — separate approval)
→ Nova-Cal live on Atlantis network
→ Chronicle mention post-validation
Documents Generated by This Brief
| Doc | Owner | Status |
|---|---|---|
| CB-002 v1.1 (this doc) | Ozzy | ✅ Complete |
| HT-021: Nova-Cal Voice Stack Setup | Jimmy | ⬜ Pending |
| SOP-011: Voice Assistant Operations | Cooper | ⬜ Pending |
Action Items
| # | Action | Owner | Status |
|---|---|---|---|
| 1 | Verify Cal v1.4 source — repo, images, license, digest | Shane + Jimmy | ⬜ Before POC |
| 2 | Get Groq API key — free tier (groq.com) | Shane | ⬜ Before POC |
| 3 | Create lab-scoped n8n API key | Shane | ⬜ Before POC |
| 4 | Create nova-cal-voice/ in atlantis-labs | Shane | ⬜ POC |
| 5 | Throwaway test — pull :latest, capture digests | Shane | ⬜ POC |
| 6 | Pin Docker images with verified digests | Shane | ⬜ POC |
| 7 | Deploy docker-compose.voice.yml | Shane + Jimmy | ⬜ POC |
| 8 | Complete Cal v1.4 web setup (push-to-talk mode) | Shane | ⬜ POC |
| 9 | Wire squad status n8n webhook | Shane + Ozzy | ⬜ POC |
| 10 | Test full push-to-talk voice loop | Shane | ⬜ POC |
| 11 | Add voice.log to /atlantis-ops/logs/ | Ozzy | ⬜ POC |
| 12 | Draft HT-021: Nova-Cal Setup | Jimmy | ⬜ Post-vote |
| 13 | Draft SOP-011: Voice Assistant Operations | Cooper | ⬜ Post-vote |
| 14 | Push CB-002 v1.1 to Forgejo | Shane | ⬜ Tonight |
| 15 | Update V24 memory | Ozzy | ⬜ Tonight |
V24 Memory Items (Log Tonight)
- CB-002 v1.1 — Nova Voice (Nova-Cal) — UNANIMOUSLY APPROVED WITH CONDITIONS
- Codename: Nova-Cal
- Stack: Cal v1.4 (CoreWorxLab) — pending source verification — + Groq Whisper V3
Turbo + Piper CPU TTS + n8n MCP
- Wyoming Protocol evaluated and rejected — Home Assistant lock-in
- Cal v1.4 selected for lab verification pending source/image validation (Mercy)
- RTX 3060 VRAM impact: zero — full CPU + Groq cloud offload
- Hardware: Trunks WSL2 POC first — dedicated Pi 4 after validation
- Groq STT: approved for non-sensitive lab commands only (Mercy condition)
- Input: push-to-talk Phase 1. Wake word Phase 2 after approval. Never always-listening.
- Docker images: :latest for throwaway test only — pin with digest for repeatable POC
- n8n: lab-scoped API key only — not production credentials
- SOP-008 language: "designed to support SOP-008 controls when configured correctly"
- Phase 1 commands (5 max): squad status, briefings, calendar, Nova status, memory update
- HT-021 + SOP-011 queued
- Mercy: 6 conditions all folded into v1.1
- Cooper: technically sound, zero VRAM, zero cost — no conditions
References
- SOP-008 v0.4 — AI Production Risk Review
- Nova Phase 3 Specification v1.0
- RUNBOOK-Nova-Phase3-v1.1.md
- Cal v1.4 — CoreWorxLab (January 2026) — pending verification
- Groq Cloud: groq.com (Whisper V3 Turbo — free tier)
- Piper TTS: github.com/rhasspy/piper
- CIS Docker Benchmark v1.8.0
- ATLANTIS_AI_MEMORY.md V23
updates.mdMay 20, 2026- CB-001 v4.2 — AI Communications Domain (companion brief)
CB-002 v1.1 — FINAL — compiled by Ozzy — May 20, 2026
7/7 council votes — unanimously approved with conditions
Store at: C:\AtlantisITS\knowledge\CB-002-Nova-Voice.md
Push to Forgejo: atlantis-docs/council/CB-002-Nova-Voice.md
POC gated on Mercy's 6 conditions — see No-Go Criteria