Nasr workspace path typo fixed (2026-04-22). Snapshot of Nasr (Smithers) workspace: SOUL, USER, IDENTITY, MEMORY, AGENTS, HEARTBEAT. Skills manifest: 18 skills on disk, none yet in git. progress.json: per-agent status tracking (nasr, parlo, peter, m2, alfred, gunnar). docs/concept.md: full architecture — 3 tracks (memory, config, secrets). CLAUDE.md: project overview, data sources, restore order, gotchas. Kickoff Friday 2026-04-25.
4.1 KiB
agent-restore-harness
Fleet-wide OpenClaw workspace snapshot, restore, and resilience system for the m2o platform.
Goal
Every m2o agent accumulates state that lives in 3 places that drift from each other:
- Coolify env vars (rebuild source of truth — but incomplete)
/agent_homepersistent volume (actual live state — but ephemeral on full rebuild)m2-configgit repo (intended source of truth — but not always synced)
This repo is the control plane for snapshotting, restoring, and keeping these in sync.
Repo structure
agents/{name}/ Per-agent snapshots
SOUL.md Personality / values
USER.md User profile
IDENTITY.md Name, vibe, emoji
MEMORY.md Seeded long-term context
AGENTS.md Operating instructions
openclaw.json Sanitized config (no secrets — vault refs only)
skills.txt skills manifest: name | git_repo | commit
docs/ Architecture and runbooks
concept.md Full exploration and design decisions
memory-restore.md How to run telegram ingestion pipeline
scripts/ Operational scripts (not yet built)
snapshot.sh Capture live agent state → agents/{name}/
restore.sh Push agents/{name}/ files into running container
ingest-telegram.sh Run telegram_export.py → memory API pipeline
skills/ Skill specs for the harness itself (future)
Progress tracking
See progress.json — per-agent status. Update this as work completes.
Data sources for restoration
| Source | Location | What it has |
|---|---|---|
| m2.zip | spark3:/home/m2spark3/telegram/m2.zip | Full m2 DM history (85MB uncompressed, 38 HTML files) — every config, build, decision |
| parlobyg.zip | spark3:.../parlobyg.zip | Parlo's chat history (41MB) |
| machine.machine.zip | spark3:.../machine.machine.zip | Machine.Machine group chat (2.7MB, 6 HTML files) — GMI clinic context |
| m2-devops.zip | spark3:.../m2-devops.zip | DevOps channel (80KB) |
| spark4 Qdrant | http://192.168.31.163:6333 | 22,744 restored memory points (read-only, Redis degraded) |
| agent.memory.system | spark3:.../telegram/agent.memory.system/ | Ingestion pipeline code (telegram_export.py) |
Ingestion pipeline (planned)
spark3/m2.zip
→ agent.memory.system/ingest/telegram_export.py
--agent-id m2
--chat-slug m2-dm
→ m2-episodic.jsonl
→ POST http://172.18.0.20:8000/store (m2 memory API)
agent_id=m2
spark3/machine.machine.zip
→ telegram_export.py
--agent-id nasr
--chat-slug machine-machine
→ filter: mentions nasr / GMI / clinical
→ POST ... agent_id=nasr
Restore order (as agreed)
- nasr ← in progress (container live, volume safe)
- parlo (parlobyg.zip available)
- peter (in m2.zip, custom image)
- m2 (m2.zip direct — full history)
Key secrets approach
Vaultwarden at (deployed). Per-agent folder: agent/{name}/
Keys stored: TELEGRAM_BOT_TOKEN, ANTHROPIC_API_KEY, OPENROUTER_API_KEY, CEREBRAS_API_KEY, etc.
Config files reference: "secret": "vault:agent/nasr/TELEGRAM_BOT_TOKEN" — never raw values in git.
Forgejo skill repos
Pattern: git.machinemachine.ai/nasr/{skill-name}
Skills that need repos created: see agents/nasr/skills.txt
Critical gotchas discovered
AGENT_CONFIG_GENERATE=truein Coolify will re-run entrypoint and overwrite openclaw.json — keep it false or set on Coolify env- Workspace path in openclaw.json must be
/home/developer/.openclaw/workspace— typo"workspace opneclaw tui"existed on nasr (FIXED 2026-04-22) ~/.openclaw/skills/installed skills are NOT tracked inAGENT_SKILLSCoolify env — will be lost on fresh container without manifest- Parlobyg
/agent_homewas on overlay (not a volume) — fixed March 2026 - All other agents (nasr, gunnar, alfred, agentx, peter, miauczek) have
/agent_homevolume ✅ TELEGRAM_BOT_TOKEN(notAGENT_TELEGRAM_BOT_TOKEN) is what nasr uses — non-standard but working
Kickoff Friday 2026-04-25
Team kickoff. Priority: nasr context restored, agents working.