2026 OpenClaw in der Praxis: Ollama-Batch-Inferenz auf gemietetem Remote-Mac

31. März 2026 · ca. 9 Min. · MacCompute Tech-Team · Leitfaden

Dieses Runbook richtet sich an Teams, die auf einem gemieteten Remote-Mac wiederholbare Batch-Inferenz mit Ollama betreiben und OpenClaw parallel für Agenten und Automatisierung nutzen. Sie erhalten eine klare Topologie (Ports 11434 und 18789), Installationshinweise, ein API-Routing ohne unnötige Exposition, eine Bash-Warteschlange mit hartem Parallelitätsdeckel sowie Ressourcen- und Retry-Strategien, damit Nachtjobs nicht an sporadischer Überlast scheitern. Kontext und SKUs: Startseite, Blog-Übersicht, Preise und Hilfe-Center—alles ohne Anmeldung.

Ziel und empfohlene Topologie

Batch-Läufe brechen oft, wenn Parallelität den verfügbaren Unified Memory überzieht, Modelle ständig nachladen oder Clients beim ersten Timeout abbrechen. Auf einem Remote-Mac empfehlen wir eine strikte Trennung:

  • Ollama — nur Inferenz, Listener 127.0.0.1:11434.
  • OpenClaw Gateway — Control-Plane und Tools, typisch 127.0.0.1:18789 (siehe offizielle Docker- bzw. CLI-Dokumentation).
  • Kante — ein TLS-Hostname im VPN oder SSH -L vom Laptop, statt Rohports ins Internet.
  • Queue-Worker — begrenzt gleichzeitige Jobs und implementiert Backoff.

Typische Fehlermuster (und warum Schichten helfen)

  1. VRAM-Thrash — zu viele parallele /api/generate-Aufrufe; Symptom: Swap-Druck und Minutenlatenz. Gegenmittel: OLLAMA_NUM_PARALLEL und niedrigeres MAX_JOBS in der Queue.
  2. Unkontrollierte Exposition — Ollama oder Gateway öffentlich erreichbar; Risiko Missbrauch und Datenabfluss. Gegenmittel: Loopback, VPN, Proxy mit Auth oder ausschließlich SSH-Tunnel.
  3. Fehlende Entkopplung — Agent-Bursts von OpenClaw kollidieren mit Batch-Spitzen. Gegenmittel: Cron-Fenster versetzen, Limits auf allen drei Ebenen (Server, Proxy, Skript).

Entscheidungsmatrix: wo begrenzen?

Schicht Mechanismus Zweck
Ollama-Server OLLAMA_NUM_PARALLEL, optional OLLAMA_MAX_LOADED_MODELS Serverseitige Obergrenze gleichzeitiger Inferenzpfade; passt zu Metal und RAM.
Reverse-Proxy limit_req (nginx) oder Caddy Rate-Limit Client-Bursts am Edge glätten, bevor sie Ollama erreichen.
Batch-Skript MAX_JOBS, Job-Pool, curl --max-time Deterministische Obergrenze „in flight“; verhindert unkontrolliertes Forken.

Ollama auf dem Remote-Mac installieren

Modell ziehen und Loopback beibehalten, sofern Sie nicht bewusst OLLAMA_HOST setzen:

curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.2

Für reboot-feste Einstellungen: OLLAMA_NUM_PARALLEL in Profil oder launchd-Plist. Smoke-Test: curl -fsS http://127.0.0.1:11434/api/tags. OpenAI-kompatible Clients nutzen /v1/chat/completions auf demselben Port.

OpenClaw-Gateway: Kompaktpunkte für Co-Hosting

Zwei unterstützte Wege: globales CLI (Node 24 oder 22.16+) oder Docker mit ./scripts/docker/setup.sh im Klon von openclaw/openclaw. Typisch auf dem Mac: npm install -g openclaw@latest, openclaw onboard --install-daemon, openclaw gateway --port 18789 --verbose. Ollama nativ lassen für Metal; OpenClaw-Tools dürfen 127.0.0.1:11434 aufrufen. Health: curl -fsS http://127.0.0.1:18789/healthz. Vertiefung: OpenClaw Docker, Härtung & Remote-Mac.

API-Routing: ein Hostname, zwei Upstreams

Für VPN-Clients mit HTTPS auf beide Stacks: TLS einmal terminieren und per Pfad splitten (Caddy-Konzept):

inference.internal.example.com {
  route /v1/* {
    reverse_proxy 127.0.0.1:11434
  }
  route /openclaw/* {
    reverse_proxy 127.0.0.1:18789
  }
}

Ohne öffentlichen Hostnamen genügen ssh -L für 11434 und 18789—die Firewall bleibt zu.

Routing auf einen Blick

Traffic Ziel Begründung
Batch /api/generate oder OpenAI-Shim 127.0.0.1:11434 Geringste Latenz; hinter Loopback oder authentifiziertem Proxy.
Gateway-UI und WS-Control 127.0.0.1:18789 OpenClaw-/healthz; bei Debug per Tunnel.
Untrusted Internet standardmäßig keines VPN, SSH oder mTLS vor Veröffentlichung.

Warteschlangen-Skript: Parallelitätsdeckel und JSON-sichere Nutzlasten

Eine Zeile pro Prompt in prompts.txt. python3 baut valides JSON; ein einfacher Bash-Job-Pool (ohne GNU-xargs -P) hält MAX_JOBS ein:

#!/usr/bin/env bash
set -euo pipefail
OLLAMA_URL="${OLLAMA_URL:-http://127.0.0.1:11434}"
MODEL="${MODEL:-llama3.2}"
MAX_JOBS="${MAX_JOBS:-2}"
PROMPTS="${1:?path to prompts.txt}"
mkdir -p out failed

run_one() {
  local i="$1" line="$2"
  local body try=0 delay=1
  body="$(python3 -c 'import json,sys; print(json.dumps({"model":sys.argv[1],"prompt":sys.argv[2],"stream":False}))' "$MODEL" "$line")"
  while (( try < 4 )); do
    if curl -fsS --max-time 600 -H 'Content-Type: application/json' \
      -d "$body" "$OLLAMA_URL/api/generate" -o "out/resp-$i.json"; then
      return 0
    fi
    sleep "$delay"
    delay=$(( delay * 2 ))
    try=$(( try + 1 ))
  done
  printf '%s\n' "$line" >> "failed/prompts-$i.txt"
  return 1
}
export -f run_one
export OLLAMA_URL MODEL

i=0
while IFS= read -r line || [ -n "${line-}" ]; do
  i=$((i+1))
  while (( $(jobs -rp | wc -l | tr -d ' ') >= MAX_JOBS )); do
    sleep 0.2
  done
  ( run_one "$i" "$line" ) || true
done < "$PROMPTS"
wait

MAX_JOBS sollte OLLAMA_NUM_PARALLEL und verfügbaren RAM nicht übersteigen; auf 16 GB-Macs starten viele Teams bei 7B–8B mit 1 und justieren unter Beobachtung des Speicherdrucks.

Ressourcenlimits: Ollama, macOS und Batch-Treiber

  • OllamaOLLAMA_NUM_PARALLEL; bei häufigem Modellwechsel optional OLLAMA_MAX_LOADED_MODELS.
  • QueueMAX_JOBS ≤ serverseitige Parallelität abzüglich Reserve für Cron und Agenten.
  • macOS — optional launchd SoftResourceLimits / HardResourceLimits für RAM.
  • OpenClaw — Automatisierungen zeitlich versetzen, damit Agent-Spitzen nicht mit Ollama-Spitzen kollidieren.

Referenzwerte zum Zitieren: Standard-Listener Ollama 11434, OpenClaw-Gateway 18789, im Skript bis zu vier Retry-Versuche mit verdoppeltem Delay, HTTP-Timeout über curl --max-time 600 Sekunden pro Anfrage.

Degradation und Retries

Der Worker wiederholt fehlgeschlagene HTTP-Aufrufe mit Backoff. Erweitern Sie die Kette: Primärmodell → kleineres Fallback → gekürzter Prompt → Dead-Letter unter failed/. Die Versuchsobergrenze verhindert, dass eine defekte Zeile den gesamten Lauf blockiert.

Runbook in fünf Schritten (reproduzierbar)

  1. Baseline — Ollama installieren, Modell pullen, /api/tags prüfen; Parallelitätsvariablen dokumentieren.
  2. OpenClaw — Gateway starten, /healthz prüfen, sicherstellen, dass Tool-Aufrufe Ollama nur über Loopback erreichen.
  3. Zugriff — Entweder TLS-Proxy im internen Netz oder SSH-Tunnel vom Entwicklerrechner; keine öffentliche Freigabe von 11434.
  4. Queue — Skript deployen, MAX_JOBS konservativ setzen, Smoke-Run mit kleiner prompts.txt.
  5. Beobachtung — Speicherdruck, Fehlerrate in failed/ und Proxy-Logs auswerten; Limits iterativ anheben, nicht sprunghaft.

FAQ

Soll Ollama alle Interfaces binden? Nur bei klarer Bedrohungsmodellierung. Loopback plus SSH oder VPN ist der Default; vor authlosem Internet-Exposure warnen wir ausdrücklich.

Wo liegen die Parallelitätslimits? Bei Ollama (OLLAMA_NUM_PARALLEL), am Reverse-Proxy (Rate-Limits) und in der Queue (MAX_JOBS). Alle drei zusammen verhindern stille Überlast.

Wie hängen OpenClaw und Ollama zusammen? OpenClaw führt Gateway und Agenten; Ollama liefert die lokale LLM-HTTP-API. Prozesse und Ports bleiben getrennt.

Was bei Timeouts? curl --max-time, Backoff, kleineres Modell, Dead-Letter-Datei—keine Endlosschleifen.

Wie teste ich von außen? SSH-Portweiterleitung statt Firewall-Öffnung; beide Health-Checks per curl auf Loopback auf dem Mac.

Fazit

OpenClaw und Ollama lassen sich auf einem gemieteten Mac sauber co-hosten, wenn Inferenz auf Loopback bleibt, das Routing bewusst gewählt wird und Parallelität in mehreren Schichten begrenzt wird. Retries und Fallbacks machen Nachtbatches auditierbar. Kapazität nach Region ohne Login einsehen: Preise, Kaufen, Japan, Singapur, Hongkong, Südkorea, USA; Anleitungen im Hilfe-Center.

Schnell kaufen