Cairn is a general-purpose problem-solving engine. It defines no roles, no workflows. Given an origin and a goal, it searches for a path through an unknown state space. AI Penetration Testing is one such problem — and a proven one.
Penetration testing is fundamentally a directed through a near-infinite state space :
Origin : known (target IP, target system)
Goal : defined (get a shell, capture the flag)
This structure is not unique to penetration testing. Vulnerability research, mathematical proof, CTF challenges — any problem with a clear starting point, a clear success condition, and an unknown path in between shares the same shape.
Cairn is built for this class of problems. Penetration testing is the first domain it has been validated on.
The engine is built on a Blackboard Architecture with an explicit fact-intent graph. Three primitives are all it needs:
The graph grows from origin toward goal . Every new Fact is a stepping stone; every Intent is a step into the unknown.
Agent Workers run an OODA loop — Observe the full graph, Orient to the current state, Decide on intents, Act to explore — and write their findings back as new Facts. Workers have no fixed roles. Tasks are generated at runtime from the graph's current state, not from predefined job descriptions.
Agents coordinate exclusively through the shared board (Stigmergy). No direct communication. No information silos.
Three task types, all executed by the same Worker:
Cairn Server maintains graph consistency only.
Cairn Dispatcher reads the graph, schedules tasks, spins up and tears down worker containers, and is the sole writer to the protocol. Each project gets its own Worker Container; multiple Agent Workers run concurrently inside it. Agent Workers only receive a prompt and return structured output.
Workers can also run directly on the dispatcher host instead of in per-project containers — local mode , no Docker required. See Local mode below.
Supported worker backends: Claude Code , Codex , and Pi .
Tencent Cloud Hackathon · AI Penetration Testing Challenge · 2nd Edition
610 teams · 1,345 participants · top universities and security firms across China
The system had never been tested before the competition. The full pipeline came online for the first time at 4 AM on race day. No training, no tuning, no domain-specific tooling. Zero MCP tools, zero RAG, zero predefined agent roles.
The system had never been tested before the competition. The full pipeline came online for the first time at 4 AM on race day. No training, no tuning, no domain-specific tooling. Zero MCP tools, zero RAG, zero predefined agent roles.
The Strongest AI Penetration Testing Agent: Postmortem of the Only Team to Achieve AK at the TCH Tencent Cloud Hackathon Intelligent Penetration Testing Challenge (2nd Edition)
The Pathless Path: Cairn AI from Penetration Testing to General Problem Solving
Docker (container execution only — not needed for local mode)
Both setup methods require the worker container image:
Create your local dispatcher configuration and fill in your LLM endpoints and API keys:
Docker Compose (recommended)
Pull the base image used to build Cairn:
This starts cairn-server on port 8000 and cairn-dispatcher once the server passes its health check. The dispatcher mounts dispatch.yaml from the project root and connects to Docker via the host socket. Data is persisted to ./datas/cairn/ .
Local mode (no Docker)
Instead of one container per project, workers can run directly on the dispatcher host, reusing the machine's already-configured claude / codex / pi CLIs — no Docker, and no API keys in the config.
Local mode is selected by runtime.execution: local (see dispatch.local.example.yaml ). On startup the dispatcher checks each configured worker CLI is installed and runnable, and reminds you they must already be logged in. Each project gets an isolated working directory under local.workspace_root (default: the dispatcher's current directory). Run the dispatcher directly on the host — not inside Docker — since the agents run with your user's permissions and no sandbox.
Run the fast regression suite without Docker or live model endpoints:
Cairn is a general-purpose problem-solving engine. Although it supports penetration testing, CTF solving, security assessment, and vulnerability research workflows, it is intended to be used only in environments where you have explicit authorization to operate.
You are solely responsible for how you use this project. Do not use Cairn against systems, networks, applications, or data without clear prior permission from the owner or operator. Unauthorized security testing, exploitation, or data access may be illegal and may cause harm.
The developers and contributors of this project do not endorse or accept responsibility for any misuse, abuse, damage, loss, or legal consequences arising from its use. By using this project, you agree to ensure that your activities comply with all applicable laws, regulations, contractual obligations, and professional or organizational policies in your jurisdiction.
This project is licensed under GNU AGPLv3 for personal and educational use.
Commercial Use : If you wish to use this project in a commercial or proprietary environment without the AGPL-3.0 open-source obligations, please me to obtain a commercial license.
Contributions : By submitting a Pull Request, you agree that your contributions may be used under both the AGPL-3.0 and the project's commercial license.
The full story
This article is one source in a clustered incident — the cluster page carries the summary, timeline and every other outlet covering it.
