4.3 KiB
4.3 KiB
Hermes Dashboard — Decisions
2026-10-14
- Build as a thin local web layer on top of existing Hermes + vault. Do not replace Hermes desktop.
- Keep all durable memory in the existing Agent OS / Obsidian structure.
- Prefer Streamlit for first dashboard version (fastest to ship).
- Apollo voice stays on existing ChatGPT plan / local TTS stack (no extra voice API).
- Search OS agent will reuse parasite-seo skill, Safari 27 MCP, and VeriPath checks.
- Non-negotiable: high-signal only; secrets stay out of vault; no irreversible actions without confirmation.
2026-10-14 — Phase 2 decisions
- Dashboard built as single-file Streamlit app (
~/Projects/hermes-dashboard/app.py, 10.8 KB). - Six-card layout (2x3 grid): Chat, Apollo Voice, Oracle, Workflows, Memory, Status.
- Live cards (3): Oracle reads
athena-oracle/status.mdfor pipeline source health + recent files. Memory reads latest04_Daily/+ scans04_projects/*/status.mdfor open actions. Status extracts model stack fromHOME.md+ shows last git commit. - Placeholder cards (3): Chat (textarea, disabled), Apollo Voice (toggle + slider + voice selector, disabled), Workflows (4 buttons: Video, Audit, Search OS, Projects, disabled). Awaiting Phase 3–5.
- Launch:
streamlit run ~/Projects/hermes-dashboard/app.py(Hermes venv, port 8501). - Dark theme:
#1a1a2ecards,#ffac02amber headers,#2a2a4aborders.
2026-10-14 — Phase 3 decisions
- Built
apollo_voice.py(9.6 KB) as standalone voice loop using existing stack:faster-whisper(tiny) for local STT,edge-ttsfor TTS,sounddevicefor mic capture,ffplayfor playback. - Continuous VAD mode: records until 1.5s silence, transcribes, gets LLM response, speaks with barge-in detection.
- Barge-in: checks mic energy every 300ms during playback; kills ffplay and re-listens if speech detected.
- LLM endpoint configurable via
apollo_state.json(llm_endpointfield). Defaults to local LFM2.5 on port 1920. Falls back gracefully when unavailable. - Dashboard Apollo card: start/stop process control, voice selector (6 Edge TTS voices), live status indicator, last exchange expander.
- Documented in
02_agents/apollo/README.md(architecture, stack, limits, state schema). - Current limit: requires a running LLM endpoint for voice replies (echo mode without one). Wake-word not integrated (sherpa runs separately in Hermes).
2026-10-14 — Phase 4 decisions
- Adopted ClearFeed (
Tony_tech/ClearFeed) as the story layer — replaces Athena Oracle for news ingestion. ClearFeed does fetch → dedup → cluster → rank → optional LLM summarize. - Built
oracle_loop.py(11.6 KB) as content generation layer on top of ClearFeed output (stories.json). - Dual mode: template-based generation (always works, rule-based hooks/angles) + LLM mode (pass
--llm, requires local model). - Per story output:
05_Output/oracle/YYYY-MM-DD/<slug>-social.txt+<slug>-blog.md. - Dashboard Oracle card now reads
oracle_state.jsonand shows ranked stories with expandable hooks, coverage count, and links to generated drafts. - "Run Oracle Loop" button in dashboard (terminal-only for now — Streamlit can't spawn long-running subprocesses reliably).
- Workflow note added to
08_workflows/oracle-content-loop.md.
2026-10-14 — Phase 5 decisions
- Built
search_os.py(16.5 KB) as SEO analysis + content generation agent. - Analyzes sites for 11 SEO signals: title, meta, H1, keyword density, schema, GBP mentions, contact info, word count.
- Generates 4 platform-specific drafts following parasite-seo V3: GBP post, YouTube description, Reddit post (local persona), Quora answer (expert persona).
- Safari 27 MCP deferred — macOS-only, not available on Windows. Uses
requestsfor site analysis instead. - VeriPath patterns applied: site surface check, GBP presence check, cross-reference analysis.
- Dashboard Workflows card: Search OS button shows terminal invocation + recent reports from
05_Output/search-os/. - Example run against ultrabeautysalon.com for "best hair salon folsom": found 5 SEO issues (missing keyword in title/H1/meta, 0% density, no GBP mentions), 2 strengths (contact visible, good word count).
- Output format: single markdown report per keyword with analysis table + content drafts + action items.
- Non-negotiable: all [bracketed] fields in drafts must be filled from real data before publishing.