
Eine KI-gestützte universelle Zustandsraum-Suchmaschine, validiert zuerst an autonomen Penetrationstests.
Cairn ist eine universelle Problemlösungs-Engine.
Sie definiert keine Rollen, keine Arbeitsabläufe. Mit einem Ursprung und einem Ziel sucht sie nach einem Pfad durch einen unbekannten Zustandsraum.
KI-Penetrationstests sind ein solches Problem – und ein bewährtes.
Penetrationstests sind grundlegend eine gerichtete Suche durch einen nahezu unendlichen Zustandsraum:
Diese Struktur ist nicht auf Penetrationstests beschränkt. Schwachstellenforschung, mathematische Beweise, CTF-Herausforderungen – jedes Problem mit einem klaren Startpunkt, einer klaren Erfolgsbedingung und einem unbekannten Pfad dazwischen hat die gleiche Form.
Cairn wurde für diese Klasse von Problemen entwickelt. Penetrationstests sind der erste Bereich, in dem es validiert wurde.
Die Engine basiert auf einer Blackboard-Architektur mit einem expliziten Fact-Intent-Graph. Drei Primitive sind alles, was sie benötigt:
| Konzept | Bedeutung |
|---|---|
| Fakt | Eine bestätigte, objektive Feststellung, die auf die Tafel geschrieben wird |
| Absicht | Eine erklärte Erkundungsrichtung, noch nicht ausgeführt |
| Hinweis | Menschliches Urteil, das jederzeit eingebracht wird; von Agenten beim nächsten Lesen aufgenommen |
Der Graph wächst von origin in Richtung goal. Jeder neue Fakt ist ein Meilenstein; jede Absicht ist ein Schritt ins Unbekannte.
Agent Workers durchlaufen eine OODA-Schleife – Beobachte den gesamten Graphen, Orientiere dich am aktuellen Zustand, Entscheide über nächste Absichten, Handle um zu erkunden – und schreiben ihre Ergebnisse als neue Fakten zurück. Workers haben keine festen Rollen. Aufgaben werden zur Laufzeit aus dem aktuellen Zustand des Graphen generiert, nicht aus vordefinierten Jobbeschreibungen.
Agenten koordinieren ausschließlich über das gemeinsame Board (Stigmergie). Keine direkte Kommunikation. Keine Informationssilos.
https://github.com/user-attachments/assets/e557b1ac-dda4-41cb-87dd-9d56dbf05133
Drei Aufgabentypen, alle vom selben Worker ausgeführt:
| Aufgabe | Was es tut | Ausgabe |
|---|
Systemarchitektur:
┌──────────────────────────────────┐
│ Cairn Server │
│ Facts + Intents + Hints │
└─────────────────┬────────────────┘
│
Read / Write API
│
┌─────────────────┴────────────────┐
│ Dispatcher │
│ Schedules tasks, manages │
│ containers, writes protocol │
└──────────┬───────────────┬───────┘
│ │
┌───────────────┴──┐ ┌──────┴──────────────┐
│ Worker Container│ │ Worker Container │
│ (Project A) │ │ (Project B) │
│ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │
│ │ W. │ │ W. │ │ │ │ W. │ │ W. │ │
│ └────┘ └────┘ │ │ └────┘ └────┘ │
└──────────────────┘ └─────────────────────┘
Cairn Server pflegt nur die Konsistenz des Graphen.
Cairn Dispatcher liest den Graphen, plant Aufgaben, startet und stoppt Worker-Container und ist der alleinige Schreiber des Protokolls. Jedes Projekt erhält seinen eigenen Worker-Container; mehrere Agent Workers laufen gleichzeitig darin. Agent Workers erhalten nur ein Prompt und geben strukturierte Ausgaben zurück.
Unterstützte Worker-Backends: Claude Code, Codex und Pi.
Tencent Cloud Hackathon · KI-Penetrationstest Challenge · 2. Auflage
610 Teams · 1.345 Teilnehmer · führende Universitäten und Sicherheitsfirmen in ganz China
| Metrik | Wert |
|---|---|
| Gelöste Probleme | 54 / 54 — einziges Team mit AK |
| Endplatzierung | 3. |
Das System wurde nie vor dem Wettbewerb getestet. Die gesamte Pipeline wurde zum ersten Mal um 4 Uhr morgens am Wettkampftag in Betrieb genommen. Kein Training, kein Feintuning, keine domänenspezifischen Werkzeuge. Null MCP-Tools, null RAG, keine vordefinierten Agentenrollen.
Voraussetzungen
Beide Setup-Methoden benötigen das Worker-Container-Image:
docker pull --platform=linux/amd64 ghcr.io/oritera/cairn-worker-container:latest
Erstellen Sie Ihre lokale Dispatcher-Konfiguration und füllen Sie Ihre LLM-Endpunkte und API-Schlüssel ein:
cp dispatch.example.yaml dispatch.yaml
Ziehen Sie das Basis-Image, das zum Bau von Cairn verwendet wird:
docker pull ghcr.io/astral-sh/uv:python3.13-trixie
docker compose up --build
Dies startet cairn-server auf Port 8000 und cairn-dispatcher, sobald der Server den Health Check besteht. Der Dispatcher mountet dispatch.yaml aus dem Projektstamm und verbindet sich über den Host-Socket mit Docker. Daten werden unter ./datas/cairn/ persistent gespeichert.
# Start the server
uv run --project cairn cairn serve
# Run the dispatcher
uv run --project cairn cairn dispatch --config dispatch.yaml
# Run startup health checks only
uv run --project cairn cairn dispatch --config dispatch.yaml --startup-healthcheck-only
Führen Sie die schnelle Regressionstestsuite ohne Docker oder Live-Modell-Endpunkte aus:
uv run --project cairn --group dev pytest
Cairn ist eine universelle Problemlösungs-Engine. Obwohl es Penetrationstests, CTF-Lösungen, Sicherheitsbewertungen und Schwachstellenforschung unterstützt, ist es nur für Umgebungen bestimmt, in denen Sie ausdrücklich zur Durchführung autorisiert sind.
Sie sind allein dafür verantwortlich, wie Sie dieses Projekt nutzen. Verwenden Sie Cairn nicht gegen Systeme, Netzwerke, Anwendungen oder Daten ohne vorherige ausdrückliche Genehmigung des Eigentümers oder Betreibers. Nicht autorisierte Sicherheitstests, Ausnutzung oder Datenzugriff können illegal sein und Schaden verursachen.
Die Entwickler und Mitwirkenden dieses Projekts befürworten keine missbräuchliche Verwendung und übernehmen keine Verantwortung für Missbrauch, Schäden, Verluste oder rechtliche Konsequenzen, die aus der Nutzung entstehen. Durch die Nutzung dieses Projekts stimmen Sie zu, dass Ihre Aktivitäten mit allen geltenden Gesetzen, Vorschriften, vertraglichen Verpflichtungen sowie beruflichen oder organisatorischen Richtlinien in Ihrer Rechtsordnung übereinstimmen.
Dieses Projekt ist unter GNU AGPLv3 für den persönlichen und pädagogischen Gebrauch lizenziert.
Kommerzielle Nutzung: Wenn Sie dieses Projekt in einer kommerziellen oder proprietären Umgebung ohne die AGPL-3.0 Open-Source-Verpflichtungen nutzen möchten, kontaktieren Sie mich bitte, um eine kommerzielle Lizenz zu erhalten.
Beiträge: Mit dem Einreichen eines Pull Requests stimmen Sie zu, dass Ihre Beiträge sowohl unter der AGPL-3.0 als auch unter der kommerziellen Lizenz des Projekts genutzt werden dürfen.
| Bootstrap | Bei Projektstart versucht, das Problem direkt zu lösen | Fakt + möglicherweise Complete |
| Reason | Liest den gesamten Graphen: Ist das Ziel erreicht? Was sollte als Nächstes erkundet werden? | Complete / neue Intents / no-op |
| Explore | Beansprucht eine Absicht, führt die Erkundung durch, meldet Ergebnisse | Ein Fakt |