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

5.7 KiB

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