A declared system around stochastic agents
Under the hood, GenSwarms uses Elixir/OTP supervision. But the core idea is simpler: agents can behave unpredictably, while the swarm remains declared, observable, and recoverable.
Declare the swarm
A swarm is not just a set of agents. It is a declared system of roles, boundaries, and message paths.
- Agents do model-driven work.
- Objects run deterministic code: routing, validation, evaluation, guards, gateways.
- Edges define who can talk to whom.
The agent can be flexible. The system does not have to be implicit.
Keep the swarm structured while agents run
Isolate every agent
Every agent runs as its own worker with its own role, tools, backend, and sandbox. Stochastic behavior stays contained.
Recover without losing the swarm
Agents crash, tools hang, models drift, loops go off-path. Failed workers restart without bringing down the rest of the graph.
Watch behavior as it happens
Stream task flow, agent messages, crashes, restarts, state changes, and outputs in real time. Debug the swarm while it is alive.
Control the system through an API
Start swarms, send tasks, inspect state, scale workers, and stream events over REST and WebSocket.
The runtime surface for declared swarms
Pluggable backends
Local, Docker, SSH, Bwrap, and Mock.
Explicit message paths
Directed edges define who talks to whom.
Markdown skills
Plain markdown files become agent roles.
Supervised recovery
Failed workers restart without killing the swarm.
REST API and WebSocket
Programmatic control plus live event streaming.
Live scaling
Grow or shrink worker groups while inspecting state live.
Powered by a tiny agent
Each worker uses SubZeroClaw, a minimal open-source agent written in C. GenSwarms wraps that agent with the system layer a swarm needs: isolation, routing, supervision, state, observability, and API control.