
cynative v1.8.0
Schreibgeschützter KI-Agent, der Ihre Cloud-, Code- und Laufzeitinfrastruktur abfragt, um Fehlkonfigurationen, geleakte Secrets und Privilegieneskalationspfade mit verifizierten, evidenzgestützten Befunden aufzudecken.

Baue deine eigenen Security-Agenten
Open-Source-Framework für Security-Agenten mit Live-, Nur-Lese-Zugriff auf deine Infrastruktur.
Schnellstart · Dein erster Agent · Dokumentation
Frag deine Infrastruktur alles. Cynative führt Frontier-Modelle über deinen Code, deine Cloud und deine Laufzeit aus – und denkt dabei über GitHub, GitLab, AWS, GCP, Azure und Kubernetes als ein einziges System nach – und liefert verifizierte Antworten zurück.```bash cynative "what in my cloud is publicly exposed that shouldn't be?"
Es schreibt und führt Code in einer ephemeren Sandbox aus und fragt Ihre APIs parallel ab, sodass sich eine Frage über Ihren gesamten Stack ausbreitet. Jeder Befund wird gegengeprüft und bis zu seinem Ursprung zurückverfolgt.
Im Gegensatz zu Coding-Agenten und MCP-Servern ist es **von Natur aus schreibgeschützt**: Jeder Aufruf wird abgesichert und autorisiert, *bevor* eine Anmeldeinformation angehängt wird – richten Sie es bedenkenlos auf die Produktion aus.
<!-- END agent-about -->
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/9087/1b3db179a03479f5951d624c8adbb4890465aa86d038d3312dc9aec9801bcfb9.gif"
alt="cynative prüft CI-zu-Cloud-Privilegieneskalation"
width="900">
</p>
## Was Ihre Agenten erhalten
- **Code-to-Runtime**: Analysiert AWS, GCP, Azure, jedes K8s, GitHub und GitLab
- **Sandbox**: Generiert und führt Code aus, um in großem Umfang zu recherchieren, ohne eigenen Netzwerk- oder Host-Zugriff
- **Action-Gate**: Löst jeden Aufruf in die erforderlichen IAM-Aktionen auf und wendet eine schreibgeschützte Richtlinie an, bevor eine Anmeldeinformation angehängt wird
- **Evidenzbasiert**: Führt Gegenprüfungen durch, um jeden Befund zu verifizieren
- **Souverän**: Eine Binärdatei, Ihr Modell, Ihre Daten bleiben bei Ihnen
## Schnellstart
Installieren und LLM festlegen:
<!-- BEGIN quickstart-example -->```bash
brew install cynative/tap/cynative
export CYNATIVE_LLM_PROVIDER=anthropic
export CYNATIVE_LLM_MODEL=claude-opus-5
export ANTHROPIC_API_KEY=...
Es übernimmt die Anmeldedaten, die bereits in deiner Shell vorhanden sind. Frag es einfach alles:```bash cynative -p "which IAM roles can escalate to admin?" cynative -p "high-risk cloud permissions, trace each to the PR where it was granted" cynative -p "cloud credentials leaked in source code and their current blast radius" cynative "live cloud resources absent from IaC - drift" # starts an interactive session cat findings.json | cynative -p "triage these findings by exploitability"
## Ihr erster Agent
Ein Agent ist eine Markdown-Datei: eine Zeile Beschreibung, dann der Prompt. Der Dateiname ist der Name. Um einen eigenen hinzuzufügen, erstellen Sie `~/.cynative/agents/` und schreiben Sie einen hinein. Cynative erstellt dieses Verzeichnis nicht für Sie:```bash
mkdir -p ~/.cynative/agents
cat > ~/.cynative/agents/aws-public-data-stores.md <<'EOF'
---
description: Finds publicly accessible data stores in an AWS account.
---
Check S3, RDS snapshots, EBS snapshots and public AMIs for exposure.
Report each finding with the resource ARN and how it is reachable.
EOF
cynative -p --agent aws-public-data-stores
Siehe docs/agents.md für das Format.
Agents ausführen```bash
cynative -p --agent aws-public-data-stores "AWS account ID 12814983572854 only" # with a task cynative -p --agent aws-public-data-stores # without cynative --agent aws-public-data-stores # seeds an interactive session
`--agent` kombiniert sich mit `-p`, `--auto-approve`, `--config` und gepipter Standardeingabe, sodass dieselbe Datei interaktiv läuft, während du sie entwickelst, und nicht-interaktiv, sobald sie sich stabilisiert hat.
Agents werden aus `~/.cynative/agents/` und aus dem in die Binärdatei integrierten Satz gelesen; eine Benutzerdatei gewinnt gegenüber einer eingebauten Datei mit demselben Namen. `cynative agents list` zeigt jeden Agent mit seiner Quelle und markiert die überschatteten Kopien, und `cynative agents show <name>` gibt die exakte Datei aus, die ausgeführt würde.
## Kann das nicht ein Coding-Agent mit MCPs?
| | Coding-Agent + MCPs | Cynative |
|---|---|---|
| Durchsatz | Eine Aktion pro Aufruf | Schreibt sandboxed Code, der Aufrufe parallel ausführt – weniger Tokens, schnellere Antworten |
| Ergebnisse | Unverifizierte Ausgabe | Verifier prüft jedes Ergebnis gegen Live-Beweise |
| Schreibgeschützt | Opt-in-Lesefilter | Standardmäßig aktiv, schließt bei Fehler ab – erforderliche IAM-Aktionen werden gegen eine Security-Audit-Richtlinie geprüft. `secretsmanager:GetSecretValue` ist ein IAM-*Read*: Ein Filter erlaubt es, `SecurityAudit` blockiert es |
| Anmeldedaten | Umgebungsbasiert, unverändert | STS-Sitzung auf schreibgeschützt begrenzt – AWS erzwingt die Grenze ebenfalls |
| Schadensradius | Deine Shell, jedes Netzwerk | Forschungscode läuft in einer Sandbox ohne Host-Zugriff, Netzwerk auf deine zugeordneten Dienste beschränkt |
| Geheimnisse | Werden dem Modell unverändert gesendet | Aus der Tool-Ausgabe geschwärzt, bevor sie an das Modell gesendet wird |
| Lieferkette | Drittanbieter-MCPs und Skills, die mit deinen Anmeldedaten laufen | Eine Open-Source-Binärdatei, Konnektoren eingebaut |
| Audit-Trail | Verstreute Sitzungsprotokolle, nach bestem Bemühen | Fail-closed-JSONL-Protokoll jedes Tool-Aufrufs – wenn es nicht aufzeichnen kann, bricht es ab |
Eine Binärdatei, dein Modell-Endpunkt, dein Konto. Führe sie auf einer Instanz in der Cloud aus, die sie prüft, über das verwaltete Inferenzsystem dieser Cloud, und nichts verlässt deine Umgebung: Sicherheit für deine Infrastruktur, aus deiner Infrastruktur heraus.
## Installation
**Homebrew** (macOS / Linux – empfohlen):```bash
brew install cynative/tap/cynative
Installationsskript (macOS / Linux – überprüft die SHA-256-Prüfsumme des Downloads gegen die checksums.txt des Releases, mit Fail-Closed-Verhalten):```bash
curl -fsSL https://raw.githubusercontent.com/cynative/cynative/main/install.sh | sh
**Windows** (Scoop):```powershell
scoop bucket add cynative https://github.com/cynative/scoop-bucket
scoop install cynative
Aktualisierung, Deinstallation, Windows-Details, Versions-Pinning & manueller Download
Aktualisierung / Deinstallation
| Methode | Aktualisierung | Deinstallation |
|---|---|---|
| Homebrew | brew upgrade cynative | brew uninstall cynative |
| Installationsskript | Einzeiler erneut ausführen | curl -fsSL https://raw.githubusercontent.com/cynative/cynative/main/install.sh | sh -s -- --uninstall |
| Scoop | scoop update cynative | scoop uninstall cynative |
Windows (PowerShell-Skript): irm https://raw.githubusercontent.com/cynative/cynative/main/install.ps1 | iex; Deinstallation mit & ([scriptblock]::Create((irm https://raw.githubusercontent.com/cynative/cynative/main/install.ps1))) -Uninstall.
Optionen des Installationsskripts: Version mit CYNATIVE_VERSION=v1.0.0 pinnen; Zielverzeichnis mit CYNATIVE_INSTALL_DIR ändern (Standard ~/.local/bin, kein sudo). Das Skript prüft die GitHub-Release-Attestierung, wenn gh installiert ist (standardmäßig nur als Hinweis); setzen Sie CYNATIVE_REQUIRE_ATTESTATION=1, um einen fehlgeschlagenen Check als fatal zu behandeln. Für eine Installation mit hoher Integrität laden Sie das Skript von einem unveränderlichen Tag statt von main.
macOS (manuell): Laden Sie cynative_Darwin_arm64.pkg (Apple Silicon) oder cynative_Darwin_x86_64.pkg (Intel) von der Releases-Seite herunter und installieren Sie es mit sudo installer -pkg <file> -target / (oder per Doppelklick). Diese sind signiert, notarisiert und gestapelt – kein Gatekeeper-Prompt beim ersten Start. Die rohen cynative_Darwin_*.tar.gz-Archive bleiben für Skripte/CI verfügbar; der erste GUI-Start einer quarantänisierten Tarball-Binärdatei benötigt Internet für die Online-Notarisierungsprüfung (Terminal/install.sh/Homebrew-Nutzung ist davon nicht betroffen).
Linux / Windows (manuell): Laden Sie eine vorgefertigte Binärdatei und checksums.txt von der Releases-Seite herunter, verifizieren Sie die SHA-256 und legen Sie die Binärdatei in Ihren PATH. Einzelne statische Binärdatei, keine Abhängigkeiten.
Signatur eines Releases verifizieren (optional). Neue Releases enthalten checksums.txt.sigstore.json, ein Sigstore-Bundle, das checksums.txt mit einem schlüssellosen Zertifikat signiert, das an den Release-Workflow dieses Repos gebunden ist. Authentifizieren Sie das Manifest und prüfen Sie dann Ihr Archiv dagegen:```bash
cosign verify-blob checksums.txt
--bundle checksums.txt.sigstore.json
--certificate-identity "https://github.com/cynative/cynative/.github/workflows/release.yaml@refs/heads/main"
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
grep cynative_Linux_x86_64.tar.gz checksums.txt | sha256sum -c - # Linux grep cynative_Darwin_arm64.tar.gz checksums.txt | shasum -a 256 -c - # macOS
```powershell
(Get-FileHash .\cynative_Windows_x86_64.zip -Algorithm SHA256).Hash.ToLower()
Select-String -Path checksums.txt -Pattern cynative_Windows_x86_64.zip
Dies deckt die in checksums.txt genannten Archive ab. Die .pkg-Installer sind stattdessen mit einer Developer ID signiert, notarisiert und gestempelt, und jedes Asset wird zusätzlich durch die GitHub-Release-Attestierung (gh release verify <tag>) abgedeckt. Zwei Einschränkungen sind wissenswert: cosign ruft Sigstores Trust Root über das Netzwerk ab, sofern du nicht --trusted-root übergibst, und da die Dateinamen keine Version tragen, beweist die Signatur Herkunft und Integrität, aber nicht, aus welchem Release ein loser Dateisatz stammt – die Release-URL oder gh release verify ist es, die eine Version bindet.
LLM-Anbieter
Cynative kommuniziert mit LLMs über das eingebettete Bifrost-SDK und unterstützt so gut wie jeden KI-Anbieter direkt (OpenAI, Anthropic, Azure OpenAI, Amazon Bedrock, Google Vertex/Gemini, Cohere, Mistral, Groq, Ollama, vLLM und mehr). Wähle einen aus docs/providers/README.md und folge der Anleitung des jeweiligen Anbieters.
Schnellbeispiele
```bash # Google Vertex export CYNATIVE_LLM_PROVIDER=vertex export CYNATIVE_LLM_MODEL=gemini-3.1-pro-preview export CYNATIVE_LLM_VERTEX_PROJECT_ID=my-gcp-project export CYNATIVE_LLM_VERTEX_REGION=global # CI / no gcloud: export GOOGLE_APPLICATION_CREDENTIALS=/path/to/sa.jsonOpenAI
export CYNATIVE_LLM_PROVIDER=openai export CYNATIVE_LLM_MODEL=gpt-5.6-sol export OPENAI_API_KEY=sk-...
Amazon Bedrock - AWS credential chain
export CYNATIVE_LLM_PROVIDER=bedrock export CYNATIVE_LLM_MODEL=anthropic.claude-opus-5 export CYNATIVE_LLM_BEDROCK_REGION=us-east-1
Azure OpenAI - endpoint via env, no YAML needed
export CYNATIVE_LLM_PROVIDER=azure export CYNATIVE_LLM_MODEL=my-gpt-5.6-sol export AZURE_OPENAI_API_KEY=... export CYNATIVE_LLM_AZURE_ENDPOINT=https://my-resource.openai.azure.com
Local Ollama
export CYNATIVE_LLM_PROVIDER=ollama export CYNATIVE_LLM_MODEL=nemotron-cascade-2 export CYNATIVE_LLM_OLLAMA_URL=http://localhost:11434
</details>
<details>
<summary><strong>Erweitertes YAML</strong></summary>
Für Lastverteilung über mehrere Schlüssel, benutzerdefiniertes Wiederholungsverhalten, Proxy-Konfiguration
oder jede andere Bifrost-Funktion schreiben Sie eine YAML-Datei:```yaml
llm:
provider: openai
model: gpt-5.5
api_key: env.OPENAI_API_KEY
network_config: # common fields shown; see schemas.NetworkConfig for the full set
base_url: https://my-proxy.example.com/v1
default_request_timeout_in_seconds: 60
max_retries: 3
extra_headers:
x-tenant: prod
Siehe docs/providers/ für die Konfigurationsreferenz jedes unterstützten Providers.
Sitzungen und Freigaben
cynative öffnet eine interaktive Sitzung (vollständige Zeilenbearbeitung und Verlauf mit Pfeiltasten); cynative "task" führt die Aufgabe aus und bleibt dann interaktiv; -p / --print führt eine einzelne Aufgabe nicht-interaktiv aus und beendet sich – für Skripte und Pipes (z. B. cat main.tf | cynative -p "review this Terraform for misconfigurations"). Der Exit-Code übermittelt das Ergebnis für Skripte: 0, wenn ein Bericht erstellt wurde, 2, wenn die Ausführung ohne Antwort abgeschlossen wurde (der Hinweis nennt den Grund – Iterations- oder Token-Budget, eine leere oder gefilterte Modellantwort), 130 bei Unterbrechung, 143 bei SIGTERM und 1 für jeden anderen Fehler.
Cynative ruft Ihren Stack mit den Anmeldedaten auf, die bereits in Ihrer Shell vorhanden sind – es führt keinen separaten Anmeldedatenspeicher. Stellen Sie immer die am wenigsten privilegierten, schreibgeschützten Anmeldedaten bereit, die benötigt werden.
Freigaben: jeder Tool-Aufruf wartet auf einen einzelnen Tastendruck: y führt ihn einmal aus, a überspringt jeden späteren Aufruf dieses Tools für die Sitzung (Skripte drucken weiterhin vor der Ausführung), jede andere Taste lehnt ab. Ohne steuerndes Terminal verwenden Sie --auto-approve.
Stoppen mitten in der Aufgabe: während eine Aufgabe läuft, drücken Sie einmal Esc oder Ctrl-C, um sie ordentlich zu stoppen (der Agent beendet jeden bereits laufenden Aufruf, stoppt dann und gibt ⏸ Stopped aus). Wenn der Agent wiederholt auf Tool-Fehler oder Ablehnungen stößt, stoppt er automatisch, fasst zusammen, wodurch er blockiert ist, und fragt nach den fehlenden Informationen.
Bash-Vervollständigung: Siehe cynative completion <shell> --help für die vollständigen Installationshinweise für jede Shell.
Cynative gibt eine kurze operative Fußzeile (Zeitmessung, Token-Nutzung) auf stderr aus – die Umleitung von stdout (cynative -p "..." > out.txt) hält die erfasste Antwort sauber. --version gibt Version, Commit, Build-Datum, Go-Version und Plattform aus.
cynative doctor validiert Konfiguration und Connector-Bereitschaft, ohne eine Recherchesitzung zu starten. Übergeben Sie --live-llm, um auch das konfigurierte Modell mit einem Round-Trip ohne Tools zu testen.
Ressourcen- & Kostenkontrollen für unbeaufsichtigte Ausführungen
Ressourcen- und Kostenkontrollen: für unbeaufsichtigte, geplante oder langfristige Ausführungen – eingebunden in cron, CI oder jeden Trigger – begrenzen Sie die Arbeit explizit. Die wichtigsten Stellschrauben (Konfigurationsschlüssel / Umgebungsvariablen):
| Konfigurationsschlüssel / Umgebungsvariable | Standard | Wirkung |
|---|---|---|
max_total_tokensCYNATIVE_MAX_TOTAL_TOKENS | 0 (unbegrenzt) | Token-Obergrenze pro Sitzung, geteilt über die Hauptschleife, Aufgaben-Sub-Agenten, den ständig aktiven Verifizierer und interaktive Folgeanfragen. |
max_iterationsCYNATIVE_MAX_ITERATIONS | 32 | Maximale Tool-Aufruf-Iterationen der Hauptschleife pro Zug. |
max_subagent_iterationsCYNATIVE_MAX_SUBAGENT_ITERATIONS | 10 | Maximale Iterationen innerhalb eines Aufgaben-Sub-Agenten. |
max_consecutive_failuresCYNATIVE_MAX_CONSECUTIVE_FAILURES | 5 | Aufeinanderfolgende Tool-Aufrufe ohne Fortschritt, bevor ein Stopp-und-Zusammenfassen erfolgt (0 deaktiviert). |
sandbox_max_concurrencyCYNATIVE_SANDBOX_MAX_CONCURRENCY | 16 | Maximale gleichzeitige Tool-Aufrufe in der Sandbox. |
Die Befundverifizierung (verify_findings-Tool) verursacht zusätzliche Modellaufrufe – planen Sie diese bei jeder Ausführung ein, die Befunde erzeugt.
Connectors
Zusätzlich zu den Anmeldedaten in Ihrer Shell erzwingt Cynative Schreibschutz auf drei Ebenen:
- Netzwerk – jeder Anfrage-Host ist an seinen zugeordneten Dienst und seine Region gebunden, und die aufgelöste IP wird vor der Verbindung verifiziert – Ihr Agent kann Ihre Infrastruktur und sonst nichts erreichen.
- Aktions-Gate – jede Operation wird auf ihre erforderlichen IAM-Aktionen aufgelöst, die aus den eigenen API-Definitionen der Provider abgeleitet werden, und dann durch eine schreibgeschützte Richtlinie autorisiert, bevor Anmeldedaten angehängt werden:
SecurityAudit(AWS),roles/viewer(GCP),Reader(Azure). Die Abdeckung verfolgt die Cloud-APIs, während sie wachsen, und das Gate schlägt bei allem, was es als Schreibvorgang einstuft, geschlossen fehl. Für Kubernetes ist die Richtlinie die eigene Live-view-RBAC-Rolle des Clusters, die zur Laufzeit abgerufen und pro Anfrage durchgesetzt wird. GitHub und GitLab sind standardmäßig schreibgeschützt; eineconnectors.{github,gitlab}.permissions-Einstellung kann Schreibzugriff auf bestimmte Kategorien erlauben, wo ein Workflow ihn benötigt, durchgesetzt pro Anfrage, bevor das Token angehängt wird. Selbst im schreibgeschützten Modus bleiben die Secret-Scanning-Endpunkte von GitHub blockiert und die GraphQL-API von GitLab wird verweigert. - Anmeldedaten (AWS) – für Identitäten mit angenommener Rolle werden Anmeldedaten über STS
AssumeRoleneu ausgegeben, begrenzt auf eine verwaltete Richtlinie (standardmäßigSecurityAudit), sodass AWS IAM die Grenze ebenfalls durchsetzt. IAM-Benutzer- und Root-Identitäten laufen mit ihren Basis-Anmeldedaten, begrenzt durch das obige Aktions-Gate.
Cynative verbindet AWS, GCP, Azure, EKS/GKE/AKS, selbstverwaltetes Kubernetes, GitHub und GitLab. Siehe docs/connectors/README.md für Anmeldedaten-Erkennung, Härtung, Einschränkungen und Connector-spezifische Beispiele.
Code-Ausführung & Tool-Orchestrierung
Für Massenarbeiten – „jeden öffentlichen S3-Bucket prüfen", „EKS-Cluster in jeder Region auflisten" – kann Cynative JavaScript in einer Sandbox schreiben und ausführen, anstatt einen Tool-Aufruf nach dem anderen auszugeben. Die Tools des Agenten (z. B. http_request) werden als async JavaScript-Funktionen bereitgestellt, sodass es in Code schleift, filtert und Aufrufe verkettet – und unabhängige Aufrufe gleichzeitig mit dem integrierten mapConcurrent(items, fn, limit)-Helfer ausführt (oder await Promise.all([...]) für kleine feste Mengen).
Nur das, was das Skript per console.log ausgibt, wird an das Modell zurückgegeben, was die Recherche schnell und token-effizient hält.```js
// Discover regions, then list EKS clusters in every region concurrently,
// following pagination - only the summary returns to the model.
const r = await http_request({
method: "GET",
url: "https://ec2.us-east-1.amazonaws.com/?Action=DescribeRegions&Version=2016-11-15",
auth_provider: "aws", aws_auth: { service: "ec2", region: "us-east-1" },
});
const regions = [...r.body.matchAll(/([^<]+)</regionName>/g)].map((m) => m[1]);
const all = await mapConcurrent(regions, async (region) => {
const clusters = [];
let token = null;
do {
const url = https://eks.${region}.amazonaws.com/clusters +
(token ? ?nextToken=${encodeURIComponent(token)} : "");
const resp = await http_request({
method: "GET", url,
auth_provider: "aws", aws_auth: { service: "eks", region },
});
const body = JSON.parse(resp.body);
clusters.push(...body.clusters);
token = body.nextToken;
} while (token);
return { region, clusters };
});
console.log(JSON.stringify(all.filter((x) => x.clusters.length > 0), null, 2));
- **Async & parallel**: Tool-Funktionen geben Promises zurück – `await` sie, verteile sie über viele Ressourcen mit `mapConcurrent(items, fn, limit)` (begrenzt, reihenfolgeerhaltend) oder nutze `await Promise.all([...])` für kleine feste Mengen.
- **Strukturierte Antworten**: `http_request` löst zu `{ status, statusText, headers, body }` auf; `body` ist der rohe String – `JSON.parse(resp.body)` für JSON-APIs oder direkt lesen für XML.
- **Sandboxed**: Ein Skript kann nur die Tools aufrufen, die Cynative bereitstellt – es hat selbst keinen Netzwerk- oder Host-Zugriff.
- **Du siehst das gesamte Skript**: Jeder `code_execution`-Aufruf wird vor der Ausführung vollständig zur Freigabe angezeigt (überspringen mit `--auto-approve`; jeden inneren Aufruf mit `-v` streamen).
- **Zustandsbehaftet innerhalb einer Sitzung**: Auf `globalThis` gespeicherte Werte bleiben während einer interaktiven Sitzung über Aufrufe hinweg erhalten, solange der Aufruf vollständig ausgeführt wird (einer, der ein Timeout erreicht oder angehalten bleibt, setzt sie zurück); `let`/`const`/`var`/`function` auf oberster Ebene sind auf einen einzelnen Aufruf beschränkt.
- **Begrenzt**: Skripte laufen unter einem Timeout (Standard 120s) und einer begrenzten Ausgabegröße.
## Audit-Log
Jeder Tool-Aufruf wird in einem persistenten JSONL-Audit-Log aufgezeichnet (`~/.cynative/audit.log`, standardmäßig aktiviert). Das Log ist fail-closed: Wenn ein Aufruf nicht aufgezeichnet werden kann, wird der Lauf abgebrochen. Jeder Eintrag aus einem Agent-Lauf zeichnet auch den Namen des Agents, die Quelle und den Datei-Digest auf, sodass ein Befund bis zum exakten Prompt zurückverfolgt werden kann, der ihn erzeugt hat.
Tool-Ergebnisse werden vor dem Schreiben redigiert, aber Argumente aus Freigabe-Prompts werden wörtlich gespeichert – das Log kann sensible Werte enthalten. Es ist nur für den Benutzer lesbar, der Cynative ausgeführt hat. Rotation und Aufbewahrung sind konfigurierbar.
Konfiguration unter `audit:` in `~/.cynative/config.yaml` oder über Umgebungsvariablen:
| Schlüssel | Env | Standard |
|---|---|---|
| `audit.enabled` | `CYNATIVE_AUDIT_ENABLED` | `true` |
| `audit.path` | `CYNATIVE_AUDIT_PATH` | `~/.cynative/audit.log` |
| `audit.max_size_mb` | `CYNATIVE_AUDIT_MAX_SIZE_MB` | `100` |
| `audit.retention_days` | `CYNATIVE_AUDIT_RETENTION_DAYS` | `30` |
| `audit.compress` | `CYNATIVE_AUDIT_COMPRESS` | `false` |
## Fragen und Feedback
[Discussions](https://github.com/cynative/cynative/discussions) ist der beste Ort, um dein Feedback zu teilen – worauf du es gerichtet hast, was zurückkam und was fehlt. Stars helfen, das Projekt bekannter zu machen.
## Mitwirken
Beiträge sind willkommen – neue Agents, Konnektoren, Evaluierungsdatensätze und Verbesserungen in allen Bereichen. Siehe [CONTRIBUTING.md](https://github.com/cynative/cynative/blob/main/CONTRIBUTING.md) für das Entwickler-Setup, das `make check`-Gate und PR-Konventionen sowie [SECURITY.md](https://github.com/cynative/cynative/blob/main/SECURITY.md) für die Meldung von Schwachstellen.
## Lizenz
Apache-2.0-Lizenz. Siehe [LICENSE](https://github.com/cynative/cynative/blob/main/LICENSE) für den vollständigen Text.