feat: multi-user/multi-persona support with two-level home directory layout
Restructures persona storage from a flat personas/{name}/ layout to
home/{username}/persona/{name}/, mirroring Linux home directories.
Changes:
- persona.py: two ContextVars (user + persona), Linux-style name validation,
set_context(), get_user(), get_persona(), validate(), list_users(),
list_user_personas(); persona_path() takes (username, name)
- config.py: replaces personas_dir with home_dir + home_root()
- git mv personas/inara → home/scott/persona/inara (history preserved)
- home/holly/persona/tina/: Holly's persona stub added
- cron_runner.py: all storage functions take (username, persona) params
- tools/cron.py: stamps user + persona on jobs; APScheduler IDs are
{user}:{persona}:{job_id} to prevent collisions across users
- memory_distiller.py: distill_short/mid/long take (username, persona);
added missing Path + settings imports
- scheduler.py: _load_user_crons() iterates home/*/persona/* (two-level)
- routers/chat.py, orchestrator.py: user field added; set_context() called
- tests/conftest.py: home_root fixture with two-level structure;
patches home_dir instead of personas_dir
- tests/test_persona.py: fully rewritten for two-level API
- tests/test_api_files.py: updated fixture name and path
- .env.default: documents HOME_DIR setting; scrubs stale API key
- CLAUDE.md, README.md: directory maps updated for new layout
All 80 tests pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
53
home/scott/persona/inara/MEMORY.md
Normal file
53
home/scott/persona/inara/MEMORY.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# MEMORY.md — Inara Long-Term Memory
|
||||
|
||||
*Curated. Distilled. Update this; don't just append to it.*
|
||||
*Last distilled: 2026-03-04*
|
||||
|
||||
---
|
||||
|
||||
## Origin
|
||||
|
||||
- Inara began as the primary agent in Scott's OpenClaw setup, starting January 2026.
|
||||
- Identity files migrated to the Cortex project on 2026-03-04.
|
||||
- Cortex is the multi-agent orchestration system Scott is building. I am its primary resident agent.
|
||||
|
||||
---
|
||||
|
||||
## About Scott
|
||||
|
||||
See `USER.md` for full profile. Key notes for memory:
|
||||
|
||||
- Night owl. Does his best thinking late. Late-night sessions are normal, not cause for concern.
|
||||
- Motivated by helping people more than by money or recognition.
|
||||
- The Aether Platform is his main professional work and a source of genuine pride.
|
||||
- Named his homelab "Danger Zone" (Top Gun), his platform "Aether", his orchestration system
|
||||
"Cortex" (Firefly), and the primary agent "Inara" (also Firefly). The naming arc is intentional
|
||||
and means something to him.
|
||||
- Has twin brothers (~2 years younger) in CS/Engineering.
|
||||
- Solar array came online February 2026 — 10kW peak generation.
|
||||
|
||||
---
|
||||
|
||||
## Infrastructure Baseline
|
||||
|
||||
- WireGuard mesh connects all fleet nodes. All Cortex traffic should stay on VPN.
|
||||
- `agents_sync/` is synced via Syncthing across the fleet — it is the shared brain.
|
||||
- Aether MCP tools (`ae_*`) are available in all Claude Code sessions on all machines.
|
||||
- OpenClaw runs on `scott_lpt` (main laptop) and was the previous primary agent runtime.
|
||||
- OpenClaw and Agent Zero will likely be short-term as we build Cortex for Inara.
|
||||
|
||||
---
|
||||
|
||||
## Key Technical Decisions
|
||||
|
||||
- Cortex wraps Claude CLI + Gemini CLI + Ollama — it does not replace them.
|
||||
- Dispatcher will likely be Python FastAPI on the home server (always-on Docker host).
|
||||
- Ansque cameras use P2P video (STUN-negotiated) — no local RTSP endpoint exists by design.
|
||||
Control is cloud-only via MQTT. IoT VLAN segmentation planned (Phase 0 of Cortex roadmap).
|
||||
- OpenClaw stays on version 2026.2.15 (stable hold) due to plugin lifecycle crash in 2026.2.17.
|
||||
|
||||
---
|
||||
|
||||
## Session Notes
|
||||
|
||||
*(Add distilled session summaries here as they accumulate.)*
|
||||
Reference in New Issue
Block a user