Attractor
Open-source coding agent from StrongDM that contains zero lines of code. The entire system is three markdown specification files. Any modern coding agent (Claude Code, Codex, Cursor) can implement it by reading the spec. The only publicly documented Level 5 factory agent with proven production usage.
Attractor is an open-source coding agent from StrongDM. It occupies an unusual position in the AI tools landscape: it is a coding agent implemented as three markdown specification files. No code. 678 stars. 100 forks. 14 commits. Three files.
What It Actually Is
The Attractor GitHub repository contains zero lines of code. It is three markdown files totaling approximately 6,000–7,000 lines — the complete NLSpec (Natural Language Specification) for the agent. To use Attractor, you supply this prompt to any modern coding agent:
“Implement Attractor as described by https://github.com/strongdm/attractor”
The agent reads the spec and implements the system. The specification is the product.
This reflects StrongDM’s core thesis: specifications are the artifact that matters. Code is ephemeral.
Community implementations have already appeared in TypeScript (brynary/attractor), Go, Rust, Python, Ruby, Scala, F#, and C.
Architecture: DOT-Based Graph Pipeline
Attractor orchestrates AI workflows as directed graphs defined in Graphviz DOT syntax. Each node is a development phase governed by a core LLM prompt. Edges are expressed in natural language and evaluated by the LLM to determine traversal.
Node Types
| Shape | Handler | Purpose |
|---|---|---|
mdiamond | start | Entry point |
msquare | exit | Terminal |
box | codergen | LLM coding work |
hexagon | wait.human | Human approval gate |
diamond | conditional | Branching |
component | parallel | Concurrent execution |
tripleoctagon | parallel.fan_in | Convergence |
parallelogram | tool | External commands/APIs |
house | stack.manager_loop | Supervisor patterns |
Key Properties
- Deterministic — Same inputs produce the same execution path
- Observable — Every node transition is logged
- Resumable — Fault-tolerant checkpoint and resume from any node
- Composable — Graphs can reference and nest other graphs
Goal Gates
Nodes marked goal_gate=true must reach SUCCESS before the pipeline can exit. If the terminal is reached with unsatisfied goal gates, execution jumps back to a retry_target node and continues — the convergence mechanism for the feedback loop.
Model Stylesheet
A CSS-like layer that maps nodes to LLM configurations via selectors (ID, shape, class). Allows dynamic model switching — use Claude Opus for complex reasoning nodes, Haiku for cheap routing decisions — without touching the graph definition.
The Three Spec Files
attractor-spec.md— Core system design and DOT DSL schemacoding-agent-loop-spec.md— Agent execution patternsunified-llm-spec.md— LLM integration interface
The Lesson
StrongDM doesn’t claim Attractor is smarter than other agents. Their advantage is the system: specification discipline, external test methodology, simulation environment. Attractor could be replaced by another agent; the methodology is the differentiator.
What Attractor demonstrates is a different thesis: the spec is the software. If you can write a precise enough specification, the implementation becomes substitutable across models, languages, and time.
License
Apache-2.0