Migration-Issues

Laufender Tracker fuer Punkte die waehrend der Migration auftauchen aber nicht sofort in der aktiven Phase geloest werden muessen.

Offen — Phase 0

I-001: Disk-Druck blockiert grosse Ollama-Modelle

  • Symptom: Macbook hat 4.8 GiB frei von 460 GiB (99% voll). qwen2.5-coder:32b (20GB) nicht installierbar.
  • Workaround: Phase 0 nutzt existierende Modelle (deepseek-coder:latest 776MB, qwen2.5:1.5b 986MB). Reicht fuer Smoke-Test des Ollama-Providers.
  • Followup: Disk-Cleanup separat. Danach ollama pull qwen2.5-coder:14b (~8.5GB, passt in 16GB RAM).
  • Phase: Followup nach Phase 0

I-002: OpenRouter — gestrichen (2026-05-17)

  • Status: RESOLVED durch Pivot auf Bedrock-only
  • Hintergrund: Marvin will Sonnet weiterhin nutzen, nur Zugriffsweg aendert sich. Bedrock EU loest das. OpenRouter als Multi-Provider-Gateway war ueberdimensioniert.
  • Wieder relevant wenn: Echte Multi-Modell-Spur entsteht (GPT/Gemini parallel zu Sonnet) — dann hier reopen.

I-004: Klartext-Secrets in claude.json — Migration auf op-Wrapper

  • Symptom: ~/.claude.json enthaelt GITHUB_PERSONAL_ACCESS_TOKEN und ELEVENLABS_API_KEY im Klartext im env-Block der MCP-Configs. Bestand schon vor Migration, nicht durch sie verschlechtert.
  • Status in opencode.json: Beide MCPs nutzen {env:VAR}-Substitution. Solange die env-vars nicht gesetzt sind, starten die MCPs nicht. Workaround Phase 0: enabled: true lassen, MCPs schlagen beim Start fehl, andere 10 MCPs laufen normal.
  • Saubere Loesung: Wie hetzner auf op run -- <cmd>-Wrapper migrieren. 1Password-Items pro Key anlegen.
  • Workaround mittelfristig: env-vars in ~/.zshrc oder ~/.config/opencode/.env setzen. Weniger sauber als op aber besser als Klartext in Configs.
  • Phase: Followup nach Phase 0, vor Phase 1 wenn /email Workflows GitHub-/Elevenlabs-Tools brauchen.

I-005: Vault-MCP-Index zeigt mehr MCPs als opencode lokal hat (by design)

  • Stand nach 2026-05-17 Pivot: Marvin nutzt papierkram, ticketpay, sharepoint/m365 nicht mehr lokal — nur noch via mcp-vf-hosted (Mono-MCP fuer VF-Kunden). Aus opencode.json entfernt.
  • opencode.json hat jetzt 12 MCPs: gsuite, calcom, hetzner, aws-api/docs/iac/pricing, cloudflare, whatsapp, elevenlabs, github, banksapi (disabled).
  • Was im Vault-Index steht aber NICHT lokal in opencode ist (by design): papierkram, ticketpay, m365/sharepoint (alle ueber mcp-vf-hosted), runway + replicate (Status unklar — Followup).
  • Followup A: Vault intern/capabilities/mcps/_index.md aktualisieren — papierkram + ticketpay als „nur via mcp-vf-hosted, lokal entfernt seit 2026-05-17” markieren.
  • Followup B: Klaeren ob runway + replicate noch gebraucht werden. Wenn ja: zurueck in opencode.json. Wenn nein: aus Vault-Index streichen.

I-006: Custom-Agent Permission-Block greift nicht beim MCP-Tool-Gating

  • Symptom: ~/.config/opencode/agents/business.md hat permission: hetzner_*: deny. Trotzdem fuehrt der business-Agent hetzner_list_servers aus. Auch nach Rename von agent/agents/ (plural war Pflicht — laut Doku).
  • Was funktioniert: --agent business laedt das Custom-Agent-File (Header zeigt > business · ...). Frontmatter wird also gelesen.
  • Was nicht funktioniert: Glob-Pattern hetzner_*: deny matched die MCP-Tool-Calls nicht. Vermutlich falsches Tool-Name-Pattern — opencode praefixt MCP-Tools eventuell mit mcp__<server>__<tool> o.ae.
  • Workaround: Custom-Agents existieren als organisatorische Hilfe (model-Wahl, Frontmatter-Pflicht-Lektuere). Echtes Tool-Gating muss noch verifiziert werden.
  • Followup: opencode-Doku/Issues genauer pruefen oder via --print-logs DEBUG rausfinden welcher exakte Tool-Name-String fuer permission-Match noetig ist. Dann Pattern in beiden Agents korrigieren.
  • Phase: Followup nach Phase 0. Kein Blocker fuer Phase 1 — Marvin nutzt Agents als Convention, nicht als Hard-Gate. Behavior-Rules (Rule 22 etc.) wirken weiter ueber Prompt.

I-003: RAM-Limit 16GB schraenkt lokale Modelle ein

  • Symptom: 16GB RAM total — opencode + Ollama + System konkurrieren um RAM.
  • Constraint: Max realistisches Coder-Modell qwen2.5-coder:14b oder deepseek-coder-v2:16b. Kein 32b+.
  • Implikation: Lokales Modell ist „fuer Privacy-Faelle”, nicht „daily driver”. Fuer Daily Coding bleibt Anthropic.
  • Phase: Lebt-mit, kein Fix.