MACHINE 1 · HUB · roxabituwer · 24/7
Ubuntu 24.04 · RTX 3080 · supervisord + systemd (lyra.service, linger) · Podman Quadlet
Telegram Users
DM · group · forum topic
Discord Users
channel · thread · voice
Admin · CLI
typer · lyra hub/adapter
Telegram Bot API
long-poll + webhook
aiogram v3
Discord Gateway
WebSocket + REST
discord.py v2 [voice]
Anthropic API
Claude (hub) · Haiku (monitor)
CLI subprocess + SDK driver
GitHub (deps)
roxabi-vault · voicecli
release-please · gh actions
lyra_telegram proc
aiogram v3 · FastAPI webhook
inbound · outbound · normalize
StreamingSession (edit-in-place)
lyra_discord proc
discord.py v2 · gateway WS
inbound · outbound · threads · voice
_owned_threads (cross-bot silence)
Adapter Registry
(Platform, bot_id) → Adapter
N bots per platform
RoutingKey · scope_id
NatsOutboundListener
per-adapter consumer
render_event_codec
schema_version guard
NATS · Message Bus
lyra.inbound.<platform>.<bot_id> · lyra.outbound.<platform>.<bot_id> · voice.tts / voice.stt · embedded nats-server (Podman Quadlet)
lyra_hub · process
MessagePipeline
validate → rate-limit
→ binding → pool
CommandRouter
builtin · session · plugin
/vault-add /search /explain
Pool · Dispatcher
debounce · cancel · TTL
retry 3× · route verify
Agent
stateless · persona
AgentStore · AgentSeeder
MemoryManager
L0 compact · L3 recall
freshness · extract
LLM · CliPool
LlmProvider protocol
smart-routing · CB
Auth · Guard · trust
voice daemons · uv workspace
voicecli_tts / _stt
Qwen · faster-whisper v3
NATS clients · circuit-breaker
roxabi-nats · roxabi-contracts
transport SDK · Pydantic schemas
uv workspace subpackages
AgentStore
~/.lyra/config.db
SQLite · TOML seeds
TurnStore · L1
~/.lyra/turns.db
fire-and-forget · aiosqlite
roxabi-vault · L3
FTS5 + sqlite-vec
fastembed ONNX · hybrid
Machine 2 · RTX 5070Ti · Phase 2
Ollama / llama.cpp
Qwen 2.5 14B · Gemma 3 27B
NATS LLM worker
NatsDriver · #51
Runtime · Three-Process Mode
- lyra_hub — MessagePipeline · Pool · Agent · Memory · LLM
- lyra_telegram — aiogram v3 (long-poll + FastAPI)
- lyra_discord — discord.py v2 (gateway + voice)
- voicecli_tts / _stt — separate NATS daemons
- supervisord + systemd user unit (
lyra.service) - monitoring as oneshot systemd timer every 5 min
Data · Storage Layers
- L0 working memory — compacts at 80% of 200k tokens
- L1 TurnStore —
~/.lyra/turns.dbraw log - L3 roxabi-vault — FTS5 + sqlite-vec hybrid
- AgentStore —
~/.lyra/config.db+ bot bindings - fastembed ONNX · nomic-embed-text (non-blocking)
- aiosqlite mandatory — no sync SQLite on loop
Transport · NATS + Integrations
- Topics:
lyra.{inbound,outbound}.<plat>.<bot> - Embedded
nats-serverwhenNATS_URLunset - roxabi-nats — adapter_base · CB · readiness
- roxabi-contracts —
schema_version ≤ expected - External: Anthropic · Telegram · Discord · GitHub
- Phase 2 — Machine 2 LLM worker via NATS (#51)