Offizielles Handbuch & API-Referenz

ollama-fleet-manager v1.0 [Pre-Release] · Dynamische Allokation & OOM-Schutz für Ollama

🚧
Pre-Release Status (Work in Progress): Diese Software befindet sich in aktiver Entwicklung und ist noch nicht final fertiggestellt. Alle Versionen und Builds sind Pre-Releases.
Pre-Release Notice: This software is under active development and not finalized yet. All releases and builds are Pre-Releases (Work in Progress).

Überblick

ollama-fleet-manager ist ein hochperformanter Daemon in purem Go, der lokale Ollama-Instanzen überwacht, Systemmetriken (CPU, RAM, GPU-VRAM) kontinuierlich sammelt und für eingehende Task-Anfragen das optimal dimensionierte KI-Modell bereitstellt.

Militärischer Sicherheitsstandard (Zero-Dummy-Security)

Der Daemon bindet sich ausschließlich an 127.0.0.1, verlangt ein 32-Byte CSPRNG Token und filtert automatisch Cross-Origin und DNS-Rebinding Angriffe ab.

Systemarchitektur

Die Codebasis ist in isolierte Go-Pakete unterteilt:

├── hardware/   # Telemetrie-Sensoren (/proc/meminfo, /proc/stat, nvidia-smi)
├── models/     # Modell-Registry & Hardware-Mindestanforderungen
├── engine/     # Rule Engine zur OOM-Prävention & Modellauswahl
├── controller/ # Ollama HTTP-Client (Ping, List, Unload, Pull)
├── storage/    # AES-256-GCM Vault mit PBKDF2 (100.000 Runden)
└── api/        # REST-Server mit Anti-CSRF und Anti-DNS-Rebinding

Zero-Dummy-Security

Im Gegensatz zu vielen ungesicherten KI-Wrappern implementiert dieser Manager kompromisslosen Produktionsschutz:

  • Anti-DNS-Rebinding: Der Host-Header muss zwingend 127.0.0.1 oder localhost entsprechen. Anfragen über fremde Domainnamen werden sofort mit HTTP 403 Forbidden abgewiesen.
  • Anti-CSRF: Externe Webseiten, die versuchen, über den Browser des Nutzers lokale Modelle zu starten oder zu entladen, werden via Origin-Header-Filterung blockiert.
  • CSPRNG Token: Jeder geschützte API-Aufruf erfordert das X-API-Token.

API-Authentifizierung

Füge den Header X-API-Token zu jedem Request hinzu:

curl -H "X-API-Token: <dein-token>" http://127.0.0.1:8080/api/v1/metrics

POST /api/v1/models/select

Ermittelt das ideale Modell für den geforderten Einsatzzweck:

POST /api/v1/models/select HTTP/1.1
Host: 127.0.0.1:8080
X-API-Token: a9f738...
Content-Type: application/json

{
  "category": "coding",
  "purpose": "High precision syntax refactoring"
}

Antwortbeispiel:

{
  "selected_model": {
    "id": "qwen2.5-coder:7b",
    "display_name": "Qwen 2.5 Coder (7B)",
    "category": "coding",
    "min_ram_mb": 8192,
    "min_vram_mb": 6144
  },
  "execution_mode": "GPU",
  "reason": "Selected for high-performance GPU execution (14336 MB VRAM available)",
  "requires_evict": false,
  "confidence_score": 0.98
}

POST /api/v1/models/evict

Entlädt Modelle aus dem Arbeitsspeicher, um Platz für speicherintensive Aufgaben zu schaffen:

POST /api/v1/models/evict HTTP/1.1
Host: 127.0.0.1:8080
X-API-Token: a9f738...
Content-Type: application/json

{
  "model_id": "llama3.1:8b"
}

Systemd Service Setup (Linux)

Erstelle die Unit-Datei unter /etc/systemd/system/ollama-fleet-manager.service:

[Unit]
Description=Ollama Fleet Manager
After=network.target ollama.service

[Service]
Type=simple
User=benzj
ExecStart=/usr/local/bin/ollama-fleet-manager --port=8080
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target