Local-first AI companion runtime for Raspberry Pi 5 + Hailo AI HAT+.
This repo now contains the local core cutover surface:
alcyone ask "..."routes normal text to localhailo-ollama.alcyone statusreturns real host, temp, memory, disk, and user-service status.alcyone telegram runstarts the Telegram long-polling channel.- Voice messages are saved and converted with
ffmpeg; STT is optional and fails explicitly. - Photo messages are saved and OCR'd with
tesseractwhen available; VLM/OCR gaps fail explicitly. - SQLite WAL stores conversations, events, and media records.
- Atomic memory writes JSON atoms under the state directory.
- Aegis writes append-only audit JSONL; unsigned mode writes
UNSIGNED. - AoT smoke runs
propose -> verify -> commit.
Default posture:
- Hailo-Ollama is primary.
- CPU Ollama fallback is off unless explicitly enabled by env/config.
- Cloud providers are not installed in the default dependency set and are not called by default.
- OpenClaw and
thalamus-dashboardare not runtime dependencies.
Default state lives under:
~/.openclaw/alcyone-mind/state/
~/.openclaw/alcyone-mind/state/alcyone.sqlite
~/.openclaw/alcyone-mind/state/atoms/
~/.openclaw/alcyone-mind/state/vectors/
~/.openclaw/alcyone-mind/state/audit/aegis.jsonl
~/.openclaw/alcyone-mind/state/media/
~/.openclaw/alcyone-mind/logs/
~/.openclaw/alcyone-mind/reports/
Override with ALCYONE_STATE_DIR, ALCYONE_LOG_DIR, and ALCYONE_REPORT_DIR.
Token discovery order:
ALCYONE_TELEGRAM_BOT_TOKEN~/.openclaw/secrets/alcyone-telegram-token.txt~/.openclaw/openclaw.jsonatchannels.telegram.botToken
Allowed chat defaults to 1087797886; override with ALCYONE_TELEGRAM_ALLOWED_CHAT_ID.
Secrets are not printed. CLI startup prints only redacted SET len=... sha256=....
py -3.14 -m venv .venv
.\.venv\Scripts\python -m pip install -U pip
.\.venv\Scripts\python -m pip install -e ".[dev]"
.\.venv\Scripts\python -m pytest
.\.venv\Scripts\python -m ruff check .
.\.venv\Scripts\python -m pyrightThe project contract remains Python >=3.12; the Windows machine used for this cutover has
system python at 3.10, so use the venv interpreter.
The provider targets http://127.0.0.1:8000 by default and prefers:
qwen2.5-instruct:1.5bqwen2.5-coder:1.5bllama3.2:3bdeepseek_r1_distill_qwen:1.5b
Override endpoint and model order with ALCYONE_HAILO_ENDPOINT and ALCYONE_HAILO_MODELS.
Earlier architecture notes referenced Testinium kernel lift. The PRD-P cutover is implemented as minimal Alcyone-domain code with Protocol-style boundaries; no Testinium source files were copied into this repo.