Zum Inhalt

Lokale Claude-Code-fuer-Infrastruktur Plattform

AUDIT CONTEXT / HISTORICAL: Diese Roadmap beschreibt einen frueheren Entwicklungsstand. OpenCode wird inzwischen als AI Operations Console betrachtet, nicht primaer als Coding-Agent. Aktuelle Zielarchitektur siehe AI Operating System v1, Hermes Central Brain und OpenCode als AI Operations Console.

Stand: 2026-05-25

Ziel

Die bestehende Lanstyle AI-/Automation-Plattform soll evolutionaer zu einer lokalen, nachvollziehbaren und sicheren Agent-Runtime fuer Infrastrukturarbeit weiterentwickelt werden. OpenCode bleibt das bevorzugte Arbeits-Frontend. Bestehende Dienste werden erweitert, nicht ersetzt.

Leitbild:

  • OpenCode als primaeres Agent-Frontend
  • Ollama/DGX Spark als lokaler Modell-Host
  • Gitea/MkDocs als versionierte Wissens- und Dokumentationsquelle
  • NetBox als produktive IPAM/DCIM-Quelle
  • Vaultwarden als Secret-Quelle
  • n8n als Orchestrierungsschicht fuer wiederkehrende Workflows
  • MCP-first fuer Toolzugriffe
  • klare Approval-Flows fuer riskante Aktionen

Aktuelle Architektur

Vorhanden und weiterzuverwenden:

Bereich Status Rolle
OpenCode vorhanden primaeres Agent-Frontend fuer Infrastrukturarbeit
Open WebUI vorhanden Chat-/Knowledge-/Team-UI, nicht primaere Agent-Runtime
Ollama vorhanden lokaler Modell-Provider auf GB10/DGX Spark
Modelle vorhanden gpt-oss:120b, qwen3-coder-next:latest, weitere Coding-Modelle
Gitea vorhanden zentrale Repositories fuer Doku, Prompts, Runbooks, Skripte
MkDocs Material vorhanden menschlich lesbares Docs-as-Code-Frontend
NetBox produktiv Source of Truth fuer IPAM/DCIM
Vaultwarden vorhanden Secrets, Tokens, Passwoerter
SearXNG vorhanden interne Websuche fuer Open WebUI, spaeter optional OpenCode
n8n vorhanden Workflow-Orchestrierung, noch nicht final produktiv konfiguriert
Open Terminal vorhanden isolierte Tool-Ausfuehrung fuer Open WebUI
NPM vorhanden Reverse Proxy mit Access Lists

Bewertung

Die Grundarchitektur ist richtig ausgerichtet: Es gibt bereits getrennte Rollen fuer Modell-Hosting, Frontend, Secrets, Doku, IPAM und Orchestrierung. Der naechste Reifegrad entsteht nicht durch weitere Chat-UIs, sondern durch eine bessere Agent-Runtime-Schicht:

  • stabilere Tool-Schemas
  • zentrale MCP-Registry
  • reproduzierbare Toolserver
  • persistente Task-/Run-Historie
  • Review-/Approval-Flows
  • Logging und Tracing
  • klare Modell-Routing-Regeln
  • Knowledge-Pipeline aus Gitea, NetBox und MkDocs

OpenCode sollte deshalb nicht durch OpenHands oder Open WebUI ersetzt werden. OpenHands kann spaeter als isolierte Laufzeit fuer laengere Repo-/Code-Jobs evaluiert werden, aber nicht als neues Primaer-Frontend.

Hauptprobleme

1. Tool-Schema-Mismatch in OpenCode

Beobachtet wurden Modellaufrufe auf nicht vorhandene Tools wie list, run oder todo_write. OpenCode nutzt andere Toolnamen wie glob, grep, read, write, bash und todowrite.

Bewertung:

  • Das ist kein Infrastrukturproblem.
  • Es ist ein Alignment-Problem zwischen Modell, Systemprompt und Tool-Schema.
  • Workarounds ueber Alias-Tools wurden bereits getestet und wieder entfernt, weil sie lokale Plugin-Abhaengigkeiten kaputt gemacht haben.

Empfehlung:

  • Toolnamen in globalen OpenCode-Regeln weiter hart vorgeben.
  • Fuer Tool-intensive Jobs bevorzugt ein Modell nutzen, das OpenCode-Tools sauberer befolgt.
  • GPT-OSS 120B fuer Planung, Review, Architektur und lange Kontexte nutzen.
  • Qwen3-Coder-Next als Agent-/Tool-Modell nur behalten, wenn Toolaufrufe stabil sind.

2. Kein zentraler MCP-Hub

Aktuell sind MCPs punktuell angebunden, unter anderem Context7 und grep.app. Es fehlt eine interne Registry/Schicht, die MCPs versioniert, dokumentiert, healthcheckt und Berechtigungen zentral beschreibt.

Empfehlung:

  • MCPHub als zentrale Registry/Proxy-Schicht evaluieren.
  • FastMCP fuer eigene interne MCPs nutzen.
  • MCPs pro Risiko klassifizieren:
  • Read-only
  • Write-with-approval
  • Dangerous/manual-only

3. Secrets sind noch nicht Agent-native

Vaultwarden ist vorhanden, aber Agenten greifen nicht durchgaengig ueber eine definierte Secret-Abstraktion darauf zu.

Empfehlung:

  • Einen internen secrets-mcp oder secrets-helper bauen.
  • Standard: Secret nur per Name/Referenz abrufen, nie ausgeben.
  • Audit-Log fuer Secret-Zugriffe.
  • Kein Secret in Prompts, Git, Markdown oder Tool-Logs.

4. NetBox ist Source of Truth, aber noch nicht Agent-Workflow

NetBox ist produktiv und richtig positioniert. Es fehlt ein kontrollierter Agent-Zugriff fuer Lesen, Planen und optional Schreiben.

Empfehlung:

  • Dedizierten NetBox-Service-Token mit minimalen Rechten anlegen.
  • Zuerst read-only NetBox MCP.
  • Schreibende NetBox-Aktionen nur ueber Change-Plan und Approval.
  • NetBox-Exports regelmaessig nach Gitea/MkDocs spiegeln, ohne NetBox zu ersetzen.

5. n8n ist installiert, aber nicht produktiv orchestrierend

n8n ist sinnvoll, aber aktuell noch nicht die zentrale Automationsschicht.

Empfehlung:

  • n8n nur fuer klar begrenzte Workflows nutzen:
  • Gitea Push -> MkDocs Deploy pruefen
  • NetBox Webhook -> Wiki-Update-Task erstellen
  • Monitoring Alert -> OpenCode/Issue/Runbook verlinken
  • regelmaessige Inventar-Snapshots
  • Kein unkontrolliertes Ausfuehren von SSH-/PowerShell-Changes aus n8n.

6. Observability fehlt als Querschnitt

Aktuell gibt es Doku und Logs der einzelnen Dienste, aber keine zentrale Run-/Agenten-Telemetrie.

Empfehlung:

  • Minimal starten:
  • strukturierte Logs fuer MCPs
  • Request-ID pro Agent-Run
  • Git-Commit/Branch/Task-ID in Logs
  • zentraler Log-Zielort
  • Danach OpenTelemetry/Loki/Grafana evaluieren.

Zielarchitektur

flowchart LR
  User["Maximilian / Team"] --> OpenCode["OpenCode Desktop"]
  User --> OpenWebUI["Open WebUI"]

  OpenCode --> LLMRouter["LiteLLM / Modellrouter"]
  OpenWebUI --> LLMRouter
  LLMRouter --> Ollama["Ollama auf DGX Spark / GB10"]

  OpenCode --> MCPHub["MCPHub / MCP Registry"]
  MCPHub --> SSHMCP["SSH MCP"]
  MCPHub --> PSH["PowerShell MCP"]
  MCPHub --> NetBoxMCP["NetBox MCP"]
  MCPHub --> ProxmoxMCP["Proxmox MCP"]
  MCPHub --> GitMCP["Git/Gitea MCP"]
  MCPHub --> HTTPMCP["HTTP/OpenAPI MCP"]
  MCPHub --> DockerMCP["Docker MCP"]
  MCPHub --> BrowserMCP["Browser MCP"]
  MCPHub --> SecretsMCP["Vaultwarden Secret Helper"]

  GitMCP --> Gitea["Gitea"]
  NetBoxMCP --> NetBox["NetBox"]
  SecretsMCP --> Vault["Vaultwarden"]
  HTTPMCP --> APIs["NPM / M365 / UniFi / Dienste"]

  Gitea --> MkDocs["MkDocs Wiki"]
  n8n["n8n"] --> Gitea
  n8n --> NetBox
  n8n --> MkDocs

  Logs["Logging / Tracing"] --- MCPHub
  Logs --- LLMRouter
  Logs --- n8n

Modellrouting

Empfohlene Rollen:

Aufgabe Modell Begruendung
Architektur, Planung, Reviews, lange Analyse gpt-oss:120b Qualitaet vor Geschwindigkeit, gute Synthese
Tool-/Agentenarbeit, Codeaenderungen, Shell-nahe Aufgaben qwen3-coder-next:latest starkes Coding-/Agentenmodell, grosser Kontext
stabile Tool-lastige Fallback-Sessions qwen2.5-coder:32b bewahrter Fallback bei Tool-Schema-Problemen
schnelle Checks, kleine Edits qwen2.5-coder:7b schnell und guenstig lokal
Spezial-Reasoning deepseek-r1:70b optional nur falls Ressourcen und Antwortqualitaet den Betrieb rechtfertigen

LiteLLM ist sinnvoll, wenn:

  • OpenCode, Open WebUI und weitere Agenten einheitlich routen sollen
  • Modellnamen normalisiert werden sollen
  • Budgets, Logging und Fallbacks zentral konfiguriert werden sollen
  • spaeter externe Modelle kontrolliert angebunden werden sollen

LiteLLM sollte nicht eingefuehrt werden, wenn es nur ein weiterer Proxy ohne klare Routing-Regeln waere.

Context Management und Memory

Bestehende Quellen:

  • Gitea-Repositories
  • MkDocs Markdown
  • NetBox
  • OpenCode Memory
  • OpenCode Skills
  • Open WebUI Knowledge
  • lokale Projektordner

Naechster Reifegrad:

  1. Gitea/MkDocs bleibt kanonische Textquelle.
  2. NetBox bleibt kanonische Infrastrukturquelle.
  3. Qdrant wird als Vektorindex fuer bereinigte Markdown-/Runbook-/Config-Daten genutzt.
  4. PostgreSQL speichert Agent-Runs, Tasks, Entscheidungen und Approvals.
  5. Neo4j/GraphRAG erst spaeter, wenn Abhaengigkeiten zwischen Kunden, Diensten, VLANs, Hosts und Changes wirklich graphbasiert abgefragt werden muessen.

LLMLingua2 kann spaeter fuer Kontextkompression getestet werden, aber erst nachdem die Quellen sauber strukturiert sind. Sonst komprimiert man nur unklare Daten.

Approval-Modell

Toolklassen:

Klasse Beispiele Verhalten
Read-only git status, NetBox read, Proxmox list, DNS lookup automatisch erlaubt
Local edit Markdown, Skripte im Projektordner erlaubt mit Backup und Diff
Controlled write Gitea push, NetBox write, n8n workflow update Plan + Diff + Approval
Risky infra Proxmox VM/LXC Aenderung, UniFi Firewall, SSH system changes explizite Freigabe pro Change
Dangerous rm -rf, Firewall Default Policy, Secret-Export, Key-Kopie standardmaessig blockieren

Jeder produktive Change braucht:

  • Ziel
  • Ist-Zustand
  • geplante Aenderung
  • betroffene Systeme
  • Backup
  • Rollback
  • Testplan
  • Commit/Run-ID

Priorisierte Roadmap

Phase 1: Stabilisierung

Ziel: Bestehendes Setup robust machen.

  1. OpenCode-Regeln fuer Toolnamen und Arbeitsweise weiter schaerfen.
  2. Modellrouting dokumentieren und OpenCode/Open WebUI konsistent setzen.
  3. n8n initial fertigstellen:
  4. Owner
  5. NPM Proxy
  6. SMTP Relay
  7. Workflow-Export nach Git
  8. NetBox read-only Token fuer Automationen anlegen.
  9. Gitea/MkDocs Deploy und Backup pruefen.
  10. IPv6-/DNS-Thema im LAN dauerhaft korrigieren.

Phase 2: MCP-Basis

Ziel: MCP-first statt einzelner Sonderintegrationen.

  1. MCPHub evaluieren.
  2. FastMCP-Template fuer interne MCPs erstellen.
  3. Read-only MCPs bauen/anbinden:
  4. NetBox
  5. Proxmox
  6. Gitea
  7. HTTP/OpenAPI
  8. Filesystem
  9. Logging pro MCP-Aufruf einfuehren.
  10. Tool-Rechte zentral dokumentieren.

Phase 3: Knowledge und Memory

Ziel: reproduzierbarer Kontext statt Chat-Gedaechtnis.

  1. Qdrant als dedizierten Knowledge-Index aufbauen.
  2. Ingestion aus Gitea/MkDocs definieren.
  3. Secret- und Binary-Filter hart einbauen.
  4. Kundenkontexte strikt trennen.
  5. OpenCode-Projekte mit Knowledge-Manifest ausstatten.
  6. Open WebUI Knowledge aus bereinigten Markdown-Quellen synchronisieren.

Phase 4: Agent Runtime

Ziel: laengere Aufgaben ueberleben Sessions und Fehler.

  1. PostgreSQL fuer Agent-Tasks/Runs/Approvals nutzen.
  2. Task-Statusmodell definieren:
  3. queued
  4. running
  5. needs_approval
  6. failed_retryable
  7. failed_final
  8. completed
  9. Retry-/Recovery-Regeln definieren.
  10. n8n fuer Benachrichtigungen und Scheduling nutzen.
  11. OpenHands isoliert testen fuer repo-lange Jobs, nicht als Ersatz fuer OpenCode.

Phase 5: Sichere Write-Automation

Ziel: produktive Infrastruktur-Aenderungen mit Kontrolle.

  1. SSH MCP mit Allowlist und Session-Logging.
  2. PowerShell MCP fuer M365/Intune/AD mit eingeschraenkten Rollen.
  3. Proxmox MCP erst read-only, dann kontrollierte Writes.
  4. NetBox Write-Flows fuer geplante IP/VLAN/Device-Aenderungen.
  5. Change-PR in Gitea als Pflicht vor produktiven Writes.

Technische Schulden

  • Tool-Schema-Probleme in OpenCode sind nur teilweise durch Regeln abgefangen.
  • NetBox ist produktiv, aber Agent-Zugriff fehlt noch strukturiert.
  • n8n ist installiert, aber nicht vollstaendig produktiv eingebunden.
  • Open WebUI nutzt fuer rohe Modelle BYPASS_MODEL_ACCESS_CONTROL=True; langfristig besser echte Model-Records/ACLs pflegen.
  • SearXNG ist fuer Open WebUI angebunden, aber noch nicht sauber als OpenCode-MCP.
  • Kein zentraler Observability-Stack fuer Agent-/MCP-Runs.
  • Kein einheitlicher Run-/Approval-Datenspeicher.
  • IPv6/DNS im LAN war stoeranfaellig und muss dauerhaft in UniFi/Netzplanung bereinigt werden.

Nicht empfohlen

  • OpenCode durch ein anderes Frontend ersetzen.
  • LangChain als zentrale Plattform einfuehren.
  • Open WebUI zum Haupt-Agenten fuer SSH/Infra-Changes machen.
  • NetBox-Daten in Markdown duplizieren statt referenzieren/exportieren.
  • Secrets direkt in OpenCode-Projektdateien oder Prompts speichern.
  • Autonome produktive SSH-/Firewall-/Proxmox-Aenderungen ohne Approval.

Naechste konkrete Schritte

  1. n8n finalisieren und nur intern/NPM-geschuetzt bereitstellen.
  2. NetBox read-only Service-Token erstellen und in Vaultwarden ablegen.
  3. Einen lanstyle-agent-runtime Gitea-Ordner/Repo anlegen fuer:
  4. MCP-Konfiguration
  5. Tool-Risikoklassen
  6. Modellrouting
  7. Approval-Regeln
  8. Runbook-Templates
  9. FastMCP-Prototyp fuer netbox-readonly oder proxmox-readonly bauen.
  10. Qdrant als dedizierten Knowledge-Index planen, aber erst nach sauberem Ingestion-Design installieren.
  11. OpenCode-Regeln gegen Tool-Mismatch weiter haerten.
  12. Observability minimal starten: strukturierte Logs, Run-ID, Task-ID, Git-Commit.