Iron AOL

Agents you declare in markdown, not code.

A runtime that compiles a folder of markdown into a supervised ROS 2 process, and writes everything it did to a ledger nobody can rewrite.

Markdownagents as files
ROS 2lifecycle supervision
Append-onlyaudit ledger
A request arrives, an expert spawns, the report comes back journaled.
§ 01

What it does

01

Agents declared as markdown folders — SKILL.md, capabilities.md, flows/, tests/

02

ROS 2 Jazzy lifecycle nodes for deterministic process supervision

03

Durable journaled jobs that resume instead of restarting after a crash

04

Append-only memory ledger giving a tamper-evident action history

05

NATS messaging with a portable-skill / local-capability split

Stack
  • Python 3.12
  • ROS 2 Jazzy
  • NATS
  • MCP
  • Multi-agent
§ 02

On camera

An agent is a folder of markdown: its role, rules and capabilities.
The long version

Agent frameworks usually ask you to subclass something and wire components together in code, which means the behaviour of a system lives scattered across a codebase. Iron inverts that: an agent is a folder of markdown — what it knows, which tools it may touch, what memory it may read and write — and the runtime compiles that folder into a running process.

Those processes are ROS 2 lifecycle nodes, so an agent has real, inspectable states — unconfigured, inactive, active, finalized — and a supervisor can start, pause, and reap them deterministically instead of hoping a loop exits. Jobs are journaled and durable: a crash mid-task resumes where it stopped rather than starting over.

Every action an agent takes lands in an append-only memory ledger that cannot be rewritten after the fact, which is what makes the system auditable in a way a chat transcript never is. Messaging runs over NATS, and skills stay portable across deployments while capability grants stay local to one.