Zurück zu den Updates
New releaseAug 20, 2026

aquaman v0.14.1

🔱 Der einzige unabhängige Credential-Proxy für KI-Agenten: Bring-Your-Own-Vault-Isolation & Least-Privilege-Anfragenrichtlinien. Ihre Schlüssel bleiben dort, wo Sie sie bereits aufbewahren, niemals im Speicher des Agenten. Kompatibel mit 1Password, keychain, keepassxc und vielen anderen.

Teilen

🔱 Aquaman

CI codecov npm version npm downloads Security: process isolation TypeScript License: MIT

🔱 Der einzige unabhängige Credential-Proxy für KI-Agenten: Bring-your-own-Vault-Isolation & Least-Privilege-Request-Policies. Ihre Schlüssel bleiben dort, wo Sie sie bereits aufbewahren, niemals im Speicher des Agenten. Kompatibel mit 1Password, Keychain, KeePassXC und vielen anderen.

Sie richten Claude Code, OpenClaw oder Hermes ein, und jetzt starren Sie auf .env-Dateien mit Ihren wertvollen API-Schlüsseln im Klartext. Sie haben die Artikel gelesen. Sie wissen, was passiert, wenn ein Agent prompt-injiziert wird. Wir verstehen das.

Aquaman behebt dies mit drei Verteidigungsschichten:

  1. Prozessisolation: API-Schlüssel leben in einem separaten Proxy-Prozess. Der Agent sieht sie nie. Selbst RCE im Agenten kann nicht auf die Anmeldeinformationen zugreifen. Sie befinden sich in einem anderen Adressraum.
  2. Request Policies: Dienste-spezifische Regeln kontrollieren, welche Endpunkte ein Agent aufrufen kann. Blockieren Sie Admin-APIs, verhindern Sie Löschungen, erlauben Sie Entwürfe, aber verbieten Sie das Senden. Abgelehnte Anfragen erhalten niemals echte Anmeldeinformationen.
  3. Manipulationssichere Prüfung: Jede Nutzung von Anmeldeinformationen wird mit SHA-256-Hash-Ketten protokolliert. Sie können nachweisen, worauf zugegriffen wurde, und nachträgliche Manipulationen erkennen.

Wählen Sie Ihren Pfad

Aquaman wird als vier koordinierte Pakete ausgeliefert, die einen Tresor + einen Daemon gemeinsam nutzen. Installieren Sie nur, was Sie brauchen:

PaketWas es tutWann installieren
aquaman-proxyKern: Tresor, Daemon, Audit, Richtlinie, CLI. Das Teil, das jeder braucht.Immer.
aquaman-pluginOpenClaw Gateway-Adapter. Startet den Proxy beim Gateway-Start; fängt Channel-Traffic ab; 25 integrierte Dienste mit 5 Auth-Modi.Wenn Sie ein OpenClaw Gateway betreiben. Auch verfügbar unter https://clawhub.ai/plugins/aquaman-plugin
aquaman-coderKI-Coding-Agent-Adapter. Projektspezifische aquaman://service/key-Referenzen, die pro Bash-Tool-Aufruf aufgelöst werden.Wenn Sie Claude Code (heute) verwenden – Codex / OpenCode / Cursor geplant.
aquaman-hermesHermes-Agent-Host-Plugin (Python, auf PyPI). Weist Hermes an einen opt-in, token-gesicherten Loopback-Listener über dessen native ANTHROPIC_BASE_URL/OPENAI_BASE_URL; fügt einen /aquaman-status-Befehl, ein Tool und einen Health-Probe in der Sitzung hinzu. Isolation ist proxy-seitig; das Plugin hält keine Anmeldeinformationen.Wenn Sie den Hermes-Agent-Host betreiben. pip install aquaman-hermes

Eine einzelne aquaman-CLI bedient alle vier: Top-Level-Befehle für Tresor und Audit, aquaman openclaw ... für die OpenClaw-Integration, aquaman coder ... für die Coding-Agent-Integration (delegiert unter der Haube an aquaman-coder) sowie aquaman hermes ... für das Hermes-Python-Paket.

Schnellstart

aquaman help, aquaman doctor sind Ihre Freunde.

1. Nur Tresor (nur der Proxy + Ihre Geheimnisse)

npm install -g aquaman-proxy
aquaman setup                                # Backend-Assistent + Schlüssel speichern
aquaman daemon &                             # Proxy starten
aquaman credentials list                     # Überprüfen

Der Proxy lauscht auf ~/.aquaman/proxy.sock (UDS, chmod 0o600). Weisen Sie ein Tool auf http://aquaman.local/<service>/<path> und der Proxy fügt Auth-Header für diesen Dienst aus Ihrem gewählten Tresor-Backend ein.

2. OpenClaw Gateway

openclaw plugins install aquaman-plugin           # 1. Plugin + Proxy installieren
openclaw aquaman setup                            # 2. Backend + Schlüssel + Plugin-Verdrahtung
openclaw                                          # 3. Fertig – Proxy startet automatisch

Fehlerbehebung: openclaw aquaman doctor.

npm direkt verwenden? npm install -g aquaman-proxy && aquaman openclaw setup macht dasselbe – installiert die Proxy-CLI, speichert Ihre Schlüssel, installiert das Plugin in ~/.openclaw/extensions/aquaman-plugin/ und verdrahtet die Anmeldeinformationen (SecretRef-Referenzen auf OpenClaw ≥ 2026.6.5, der auth-profiles.json-Platzhalter auf älteren Versionen).

Der HTTP-Interceptor des Plugins leitet nur Traffic für Dienste in seiner services-Konfiguration um (Anthropic + OpenAI standardmäßig). Fügen Sie weitere unter der Plugin-Konfiguration in openclaw.json hinzu – unterstützte Kanäle sind Slack, Discord, Telegram, MS Teams, Matrix, LINE, Twitch, Twilio, BlueBubbles, Mattermost, Nostr, Tlon, Feishu, Google Chat, ElevenLabs, xAI, Cloudflare AI Gateway, Mistral, Hugging Face und mehr (insgesamt 25).

3. KI-Coding-Agenten (heute Claude Code)

npm install -g aquaman-proxy aquaman-coder        # 1. Daemon + Adapter installieren
aquaman setup                                      # 2. Tresor-Assistent
aquaman daemon &                                   # 3. Proxy starten

aquaman coder project add my-app --path ~/code/my-app \
  --env ANTHROPIC_API_KEY=aquaman://anthropic/api_key \
  --env GITHUB_TOKEN=aquaman://github/token         # 4. Projekt deklarieren
aquaman coder setup claude-code                    # 5. Claude Code-Hooks verdrahten
aquaman doctor                                     # 6. Überprüfen – sollte sowohl Tresor als auch Coder grün zeigen

Sehen Sie selbst (der 30-Sekunden-Aha-Moment): Starten Sie Claude Code neu, öffnen Sie eine neue Sitzung in ~/code/my-app, und bitten Sie den Agenten, Folgendes auszuführen:

printenv | grep ANTHROPIC_API_KEY

Sie sehen dies im Transkript:

ANTHROPIC_API_KEY=[REDACTED:injected-value]

⏺ ANTHROPIC_API_KEY ist gesetzt und verfügbar (via aquaman vault injiziert). 

Der Kind-Prozess sah den echten Schlüssel (Ihre Tests, Builds, MCP-Server, Import-Skripte – alles, was ihn wirklich braucht, funktioniert). Der Agent – das Ding, das entscheidet, welcher Code auf Ihrer Maschine ausgeführt wird – sieht den Wert nie, und damit auch nicht der Gesprächsverlauf, auch nicht die Logs des Modellanbieters, noch irgendjemand, der später einen Screenshot Ihres Terminals macht.

Verwenden Sie es auch von Ihrem eigenen Terminal aus. Derselbe Wrapper funktioniert ohne den Agenten. Wechseln Sie einfach in ein abgedecktes Projekt und stellen Sie Ihrem Befehl Folgendes voran:

cd ~/code/
aquaman-coder exec -- python app/scripts/import.py

Gleiche Umgebungsinjektion, gleiche Schwärzung auf stdout/stderr. Nutzen Sie es in Makefile-Zielen, Shell-Aliasen oder CI-Runnern – überall dort, wo Sie sonst zu einer .env-Datei greifen würden.

Wenn Claude Code ein Bash-Tool in ~/code/my-app ausführt, schreibt der aquaman-Hook den Befehl über updatedInput.command um und wickelt ihn unter aquaman-coder exec. Dieser Wrapper:

  • Löst jede aquaman://service/key-Referenz über den Broker auf (POST /broker/resolve über UDS). Anmeldeinformationen werden für einen Befehl materialisiert, nicht für die Lebensdauer des Agenten.
  • Leitet stdout/stderr durch eine Schwärzungsfunktion, die für jeden aufgelösten Wert ein wertbasiertes Muster voranstellt: welcher String auch immer injiziert wurde, wird unabhängig von seiner Form geschwärzt (Atlassian-Tokens, Notion-Geheimnisse, interne API-Schlüssel – keiner muss einem bekannten Provider-Format entsprechen). Generische formbasierte Muster (sk-ant-, ghp_, sk_live_, AKIA…, JWTs, PEM-Blöcke, ATATT3xF…) laufen danach noch als Verteidigung in der Tiefe für Geheimnisse, die der Kind-Prozess preisgibt und die wir NICHT injiziert haben.
  • Räumt auf, wenn der Befehl beendet ist.

4. Hermes (Agent-Host)

Hermes ist ein fremder (Python-)Host ohne Transport-Hook zum Injizieren, daher erfolgt die Isolation proxy-seitig: Der Proxy stellt einen opt-in, token-gesicherten Loopback-Listener bereit, und Hermes wird über seine eigenen Umgebungsvariablen darauf ausgerichtet.

npm install -g aquaman-proxy                       # 1. Daemon installieren
aquaman setup                                      # 2. Tresor-Assistent
aquaman credentials add anthropic api_key sk-ant-... # 3. Providerschlüssel speichern

aquaman hermes setup                               # 4. Loopback aktivieren + ~/.hermes/.env schreiben
aquaman daemon &                                   # 5. Proxy starten (UDS + Loopback)
aquaman hermes doctor                              # 6. Überprüfen – Listener + env + Tresor + Hermes

aquaman hermes setup aktiviert den Loopback-Listener, generiert ein installationsspezifisches Token und schreibt einen von aquaman verwalteten Block in ~/.hermes/.env (unter Berücksichtigung von HERMES_HOME): die nativen ANTHROPIC_BASE_URL/OPENAI_BASE_URL plus einen Platzhalter-api_key, der dem Token entspricht. Hermes sendet das Token als seinen Provider-Schlüssel; der Proxy entfernt es, injiziert Ihre echten Tresor-Anmeldeinformationen und leitet weiter. Nur LLM-Provider (Anthropic, OpenAI) heute.

Optionaler In-Session-Zucker – das Python-Plugin fügt einen /aquaman-status-Befehl, ein aquaman_status-Werkzeug und einen Health-Probe beim Sitzungsstart in Hermes hinzu (hält keine Anmeldeinformationen):

pip install aquaman-hermes            # oder: uv tool install aquaman-hermes
aquaman-hermes install                # legt das Plugin in ~/.hermes/plugins/aquaman/ ab
hermes plugins enable aquaman

So funktioniert es

Agent / OpenClaw / Coding Agent             Aquaman Proxy
┌──────────────────────┐                    ┌──────────────────────┐
│                      │                    │                      │
│  ANTHROPIC_BASE_URL  │═══ UDS / HTTP ════>│  Keychain / 1Pass /  │
│  = aquaman.local     │                    │  Vault / Encrypted   │
│                      │<══════════════════ │                      │
│  fetch() interceptor │═══ broker:resolve  │  + Policy enforced   │
│   (channel APIs)     │                    │  + Auth injected:    │
│                      │                    │    header / url-path │
│  No credentials.     │  ~/.aquaman/       │    basic / oauth     │
│  No open ports.      │  proxy.sock        │                      │
│  Nothing to steal.   │  (chmod 0o600)     │                      │
└──────────────────────┘                    └──┬─────────┬─────────┘
                                               │         │
                                               │         ▼
                                               │  ~/.aquaman/audit/
                                               │  (hash-chained)
                                               ▼
                                     api.anthropic.com
                                     api.telegram.org
                                     slack.com/api …
  1. Speichern: Anmeldeinformationen leben im Tresor-Backend, das Sie bereits betreiben – kein eigener Tresor (Keychain, 1Password, HashiCorp Vault, Bitwarden, KeePassXC, systemd-creds, encrypted-file).
  2. Richtlinie: Der Proxy prüft Methoden- + Pfad-Regeln, bevor er Anmeldeinformationen anfasst. Abgelehnte Anfragen erhalten einen 403, niemals echte Auth-Header.
  3. Einspritzen: Der Proxy sucht die Anmeldeinformationen und fügt den Auth-Header hinzu, bevor er weiterleitet. 25 integrierte Dienste, 4 injizierende Auth-Modi (Header, URL-Pfad, HTTP Basic, OAuth); ein 5., none, ist nur im Ruhezustand (der Proxy lehnt Traffic ab).
  4. Broker (Coder-Pfad): POST /broker/resolve materialisiert eine Anmeldeinformation pro Tool-Aufruf, begrenzt auf die Umgebung eines einzelnen Befehls, und läuft dann ab.
  5. Prüfung: Jede Nutzung von Anmeldeinformationen wird mit SHA-256-Hash-Ketten protokolliert.

Der Agent sieht nur einen Sentinel-Hostnamen (aquaman.local) oder einen Platzhalter-Marker (aquaman-proxy-managed). Er sieht nie einen echten Schlüssel, und es ist kein TCP-Port für andere Prozesse geöffnet, um ihn zu untersuchen.

Sicherheitsmodell

SchichtWas sie tutWas sie stoppt
ProzessisolationAnmeldeinformationen in einem separaten Prozess, verbunden über Unix Domain Socket (chmod 0o600)Kompromittierter Agent kann Schlüssel nicht lesen – anderer Adressraum, kein TCP-Port zum Sondieren
Dienst-AllowlistingproxiedServices kontrolliert, welche APIs der Agent erreichen kannAgent kann keine Dienste ansprechen, die Sie nicht autorisiert haben
Request PoliciesMethoden- + Pfad-Regeln pro Dienst, vor der Credential-Injektion durchgesetztAgent kann Anthropic erreichen, aber nicht dessen Admin-API; kann E-Mails entwerfen, aber nicht senden
PrüfpfadSHA-256-Hash-verkettete Logs jeder Nutzung von AnmeldeinformationenForensik nach Vorfällen, Manipulationserkennung, Compliance-Nachweise
Pro-Tool-Aufruf-Broker (Coder)aquaman-coder exec materialisiert Anmeldeinformationen für jeweils einen BefehlAnmeldeinformationen verteilen sich nicht über die Shell-Umgebung des Agenten
Ausgabeschwärzung (Coder)aquaman-coder exec leitet stdout/stderr durch eine Schwärzungsfunktion, die jeden gerade injizierten Wert wörtlich bereinigt – plus generische Provider-Muster als FallbackSelbst beliebig geformte Anmeldeinformationen gelangen nie in das Agententranskript

Detailliertes Modell – integrationsspezifische Details (HTTP-Interceptor-Bereich, Auth-Profile, Scanner-Ergebnisse, ClawScan-Herausgeberhinweis) – finden Sie in packages/plugin/README.md und packages/coder/README.md.

Compliance-Position

Aquaman enthält ausführbare Konformitätstests unter test/compliance/, die zugeordnet sind:

  • MITRE ATLAS v5.4.0: Techniken AML.T0055, T0012, T0062, T0090, T0098 (test/compliance/atlas/)
  • NIST SP 800-53 Rev 5: IA-5, AC-3, AC-6, AU-2/9/10, SC-12/28, SI-10 (test/compliance/nist/)

Plus Ausrichtungsberichte für CISA/Five-Eyes „Careful Adoption of Agentic AI Services“ (April 2026), CSA MAESTRO und OWASP Top 10 für Agentic Applications. Die Tests laufen als Teil von npm test. Siehe docs/compliance/ für die Zuordnungen.

Request Policies

OAuth-Bereiche können nicht zwischen „E-Mail entwerfen“ und „E-Mail senden“ unterscheiden. Beides ist gmail.send. Request Policies schließen diese Lücke.

# ~/.aquaman/config.yaml
policy:
  anthropic:
    defaultAction: allow
    rules:
      - method: "*"
        path: "/v1/organizations/**"
        action: deny          # Admin-/Abrechnungs-API blockieren
  openai:
    defaultAction: allow
    rules:
      - method: "*"
        path: "/v1/organization/**"
        action: deny
      - method: DELETE
        path: "/v1/**"
        action: deny          # Keine Löschungen
  slack:
    defaultAction: allow
    rules:
      - method: "*"
        path: "/admin.*"
        action: deny
  gmail:
    defaultAction: allow
    rules:
      - method: POST
        path: "/v1/users/*/messages/send"
        action: deny          # Entwürfe ok, Senden blockiert
  • Keine Richtlinie = alles erlauben (abwärtskompatibel)
  • Erster Treffer gewinnt: Regeln werden von oben nach unten ausgewertet, nicht übereinstimmende Anfragen fallen auf defaultAction zurück
  • Abgelehnt vor Authentifizierung: blockierte Anfragen erhalten niemals echte Anmeldeinformationen
  • Pfad-Globs: * passt innerhalb eines Segments, ** passt auf null oder mehr Segmente
  • aquaman setup wendet sichere Standardeinstellungen für gespeicherte Dienste an (anthropic, openai, slack, gmail).
  • aquaman policy list / aquaman policy test <svc> <method> <path> für Inspektion / Trockenläufe.

Anmeldeinformations-Backends

Bringen Sie Ihren eigenen Tresor mit – Aquaman hat keinen eigenen Speicher. Wählen Sie das Backend, das Sie bereits betreiben; Geheimnisse bleiben dort, und der Proxy liest sie an Ort und Stelle.

BackendAm besten geeignet fürEinrichtung
keychainLokale Entwicklung unter macOS (Standard)Funktioniert sofort
encrypted-fileLinux, WSL2, CI/CDAES-256-GCM, passwortgeschützt
keepassxcBestehende KeePass-BenutzerSetzen Sie AQUAMAN_KEEPASS_PASSWORD oder Schlüsseldatei
1passwordTeam-Credential-Sharingbrew install 1password-cli && op signin – für unbeaufsichtigte Agenten verwenden Sie ein Servicekonto (OP_SERVICE_ACCOUNT_TOKEN)
vaultUnternehmens-Secrets-ManagementSetzen Sie VAULT_ADDR + VAULT_TOKEN
systemd-credsLinux mit systemd ≥ 256TPM2-gestützt, kein Root erforderlich
bitwardenBitwarden-Benutzerbw login && export BW_SESSION=$(bw unlock --raw)

aquaman setup erkennt automatisch eine sinnvolle Standardeinstellung (macOS → keychain; Linux → keychain falls libsecret, sonst systemd-creds falls systemd ≥ 256, sonst encrypted-file).

encrypted-file ist eine letzte Möglichkeit für headless-Linux/CI-Umgebungen ohne native Keyring. Für bessere Sicherheit unter Linux installieren Sie libsecret-1-dev (GNOME Keyring), verwenden Sie systemd-creds (TPM2-Bindung) oder 1Password/Vault.

Credential-Caching (v0.13.1+)

Backends mit Kosten pro Zugriff – 1password (biometrische Abfrage pro Lesevorgang im Desktop-App-Modus), bitwarden (~1-2 s CLI-Spawn), vault (HTTP-Roundtrip) – werden standardmäßig 15 Minuten lang im Arbeitsspeicher des Daemons zwischengespeichert, sodass eine aktive Agentensitzung den Tresor nur einmal pro Fenster statt einmal pro Anfrage entsperrt. Die anderen Backends sind bereits schnell oder cachen intern, daher ist das Caching für sie standardmäßig deaktiviert. Passen Sie es mit credentials.cacheTtlSeconds in ~/.aquaman/config.yaml an (oder AQUAMAN_CACHE_TTL); 0 deaktiviert es.

Der ehrliche Kompromiss: Eine biometrische Abfrage pro Zugriff ist eine Benutzeranwesenheitsprüfung, und der Cache entfernt die Anwesenheitsprüfung pro Zugriff für das TTL-Fenster. Für unbeaufsichtigte Agenten wird diese Abfrage nie beantwortet – der Tresor wird zugunsten einer Klartext-.env aufgegeben, was streng genommen schlechter ist. Der Cache verschiebt nicht die Isolationsgrenze: Werte leben nur im Proxy-Prozess (wo sie ohnehin bei jeder Anfrage durchlaufen), werden nie auf die Festplatte geschrieben und sofort ungültig, wenn Sie sie über aquaman credentials add rotieren. Schreibvorgänge gehen immer in Ihren Tresor. Konformität getestet in test/compliance/cache-residency.test.ts. Für null Abfragen mit 1Password verwenden Sie ein Servicekonto, das auf den aquaman-Tresor beschränkt ist – aquaman doctor wird Sie dorthin führen.

Lizenz

MIT – siehe LICENSE.

Kategorien