agent-restore-harness/agents/peter/MEMORY.md
m2 1cf4031b56 restore(peter): memory ingested, workspace snapshotted, skills to git
- 7413 rows from MuhlAI.zip → agent_memory_peter (0 failures)
- Workspace files (SOUL/USER/IDENTITY/MEMORY/AGENTS/HEARTBEAT) snapshotted
- 7 custom skills pushed to Forgejo peter org
- progress.json: peter → complete

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:52:57 +02:00

106 lines
5.7 KiB
Markdown

# MEMORY.md — Long-term Memory
Facts, people, project state. No instructions — those live in SOUL.md and AGENTS.md.
## People
### Peter Mühlmann
- AI subscriptions & model protocol: `memory/peter-subscriptions.md`
- Key rule: Anthropic primary → GPT-5.2 on cooldown → back to Anthropic when available
- Cerebras (free) for all boilerplate/templated work
### Mario (Mariusz) — Admin
- Location: Poland (CET)
- Manages infrastructure and deploys
- Communication style: Minimal, to the point
## Environment
- OS: Ubuntu 22.04 Docker, XFCE desktop, Display :0
- Workspace: `/home/developer/.openclaw/workspace`
- Skills: `~/.openclaw/skills/`
## APIs & Keys
- **Cerebras** (Peter's): `~/.config/cerebras/config` | llama3.1-8b (232 tok/s), gpt-oss-120b
- **OpenAI** (Peter's): `~/.config/openai/api_key` — alias GPT=`openai/gpt-5.1-codex`
- **ElevenLabs**: `~/.config/elevenlabs/config` — key may need verification
- **OpenClaw fork**: `~/.openclaw/workspace/platform/openclaw` (branch: m2-custom)
## Voice & STT
- **TTS**: Qwen3-TTS at `http://speech_gateway/v1` (voice: vivian, timeout: 60s)
- **STT**: Speaches at `http://speaches-l0w808o4k80k0gogg88s80cc:8000` (faster-whisper-large-v3)
- Config: `~/.openclaw/openclaw.json` — tts.provider=openai, voice=vivian, timeoutMs=60000
## Memory System
- **Primary**: m2-memory skill — 3,280+ memories in Qdrant (BGE-M3, 1024-dim)
- `~/.openclaw/skills/m2-memory/memory.sh search|store|recent|entities`
- RLM agentic search: `~/.openclaw/skills/rlm-memory/rlm.sh "query" --depth 3`
- **Auto-ingest**: hourly cron `memory-ingest-sessions` (ID: 153f98c6)
- **Fallback**: OpenClaw `memory_search` / `memory_get` for keyword lookups
## MuhlmannAI Platform — LLM Routing (2026-03-10)
### Extraction Model (CONFIRMED WORKING)
- Primary: `anthropic/claude-haiku-4-5` via **OpenRouter** (OPENROUTER_API_KEY in Coolify env)
- Escalation: `anthropic/claude-sonnet-4-5` via OpenRouter
- Cerebras: valid key but DO NOT use for structured extraction (0% confidence, entity matching fails)
- **CRITICAL**: Anthropic OAuth tokens (sk-ant-oat01-*) do NOT work on api.anthropic.com directly — "OAuth authentication is currently not supported". They only work inside OpenClaw gateway. Never put them in external app configs.
- Coolify deploy: use `/deploy?uuid=...&force=true` for code changes; `/restart` only restarts same image
## MuhlmannAI Platform (2026-03-11)
### Architecture
- **Database**: `muhlai_v5.db` (single, consolidated) — **⚠️ LOCAL COPY IS EMPTY. Always query production API.**
- **Production API**: `https://muhl-ai.machinemachine.ai/api/` — Bearer token in `~/.config/muhlai/api_key`
- **Production data** (as of 2026-03-11): 101 CSV events + SQLite events from doc review, 123 documents (44 completed, 77 pending), 10 funds, 139 bank transactions, 0 NAV snapshots
- **Pipeline**: P3 via `muhlai/ingestion/processor.py` + OpenRouter (Claude Haiku)
- **Primary UI**: `/static/doc-review.html` (review page with upload + entity/doc type filters)
- **Legacy Streamlit**: Still at `/app/` — needs retirement
- **Root URL**: Redirects to review page
- **Running app**: `api/main.py` (NOT `muhlai/api/main.py`) — always check `start.sh` to confirm
- **⚠️ TWO EVENT STORES**: data/ledger/events.csv (101 legacy, pandas) + SQLite events table (doc-review). MUST consolidate — CSV needs to die.
- **Old events.csv**: NEVER use for matching or as authoritative data. Contains ~1% corruption. Peter's explicit rule.
### Ledger v3 (accountant deliverable)
- **Endpoint**: GET /api/export/ledger-v3
- **Code**: lib/ledger_v3.py
- **Spine**: bank_transactions table (139 rows from Nordea DKK/EUR/USD + Goldman)
- **NO automatic matching** — all fund rows start as ⚠️ Unmatched
- **Matching requires**: human approval + verified document chain (bank_tx → event → document → PDF)
- **Links**: direct PDF view/download, NOT doc-review UI (accountant doesn't use reviewer)
- **Columns**: Dato, Beskrivelse, Fond/Modpart, Type, Beløb, Valuta, Beløb DKK, Bankkonto, Dokument, Mappe, 🔗 Vis, 🔗 Download, Status, Note
### Deployment
- Coolify UUID: `rog0444skcwkw48044ggow48`
- Env vars: `MUHLAI_LLM_MODEL=qwen-3-235b-a22b-instruct-2507`, `MUHLAI_LLM_ESCALATION_MODEL=qwen-3-235b-a22b-instruct-2507`
- Git: `machine-machine/mp1-muhlman-ai` master branch, auto-deploys on push
- Latest commit: e7bc733 (forecast bug fix)
### Peter's Process
- Uploading docs one at a time; reviewing every extraction regardless of confidence
- Building trust before batch processing; reads thinking, checks spending
## Fund Portals
### Credentials Index
- `~/.config/fund-portals/northzone.json` — Northzone IX + X (atominvest.co) — email 2FA via Gmail
- `~/.config/fund-portals/crane.json` — Crane 2 + Crane Flight LP (pearonline.com)
- `~/.config/fund-portals/peakbridge.json` — PeakBridge Newtrition (icx.efrontcloud.com/@5381) — no 2FA
- Goldman Sachs (Petershill IV + West Street VIII) — no credentials yet
- Lumos Capital (Carta), Cocoa Ventures, Index Ventures, Seed Capital — no credentials yet
### Document Rules
- Only docs with Peter Mühlmann Holding ApS financial data
- NEVER ingest fund events without also extracting NAV from quarterly reports
- European number formatting: "4.045" = 4,045 (period = thousand separator in DK)
## Data Quality Issues
- Danish fund reports: periods = thousand separators (e.g. "4.045" = 4,045 DKK)
## Active Projects
- **MuhlmannAI** (`rog0444skcwkw48044ggow48`): VC portfolio tracker — doc extraction pipeline + doc-by-doc review with Peter
- **Dark Factory Engine**: `machine-machine/dark-factory-engine` — Markdown→skill compiler
- **MachineMachine website** (`z8kgc0swckwckgg4wwsw4kok`): Enterprise draft at draft.machinemachine.ai