Roots Release Notes
Changelog and release history for the Roots orchestration framework.
#0.1.1 — 2026-06-25
A fix release so iterator and subprocess nodes can read values that are
nested under an agent’s output_key. When an agent node stores its result
under output_key, the whole output dict lives one level down; iterator and
subprocess nodes previously read run state by exact top-level key only, so a
nested list hard-failed and nested mapped values were dropped from child runs.
#Added
- Dotted-path state keys — iterator
items_key/input_mappingand subprocessinput_mappingaccept dotted paths (e.g.epic_plan.stories,epic_plan.project_dir) that walk nested run state. A key with no dots is an ordinary top-level lookup, so existing processes are unaffected.
#Fixed
- Iterator
items_keyno longer fails when the list is nested under anoutput_key, and iterator/subprocessinput_mappingno longer silently drops values nested under anoutput_keyfrom child runs.
#Changed
- Iterator
input_mappingnow raises on an unresolved key instead of silently skipping it, matching the subprocess path’s fail-loud behavior — a mis-wired mapping key surfaces immediately.
#0.1.0 — 2026-06-14
The first public release of Roots — an AI-native process orchestration framework.
Define multi-step, multi-agent workflows as YAML directed graphs and run them on a
crash-safe orchestrator. Published to PyPI as rootsflow (import name roots).
#Added
- YAML process graphs — 10 node types (
agent,agent_pool,decision,checkpoint,fork,join,emit,end,iterator,subprocess) and 4 decision modes (deterministic,ai_bounded,ai_checkpoint,ai_autonomous), validated with Pydantic v2. - Crash-safe orchestrator — a tick-based engine persists run state after every node. Fork/join and parallel agent pools checkpoint each branch to storage and resume only incomplete work after a restart.
- Process composition —
subprocessnodes call other processes as child runs;iteratornodes fan a subprocess out over a list, both with depth limits and cycle detection. - Pluggable storage — SQLite by default, PostgreSQL for production, behind a single
StorageBackendprotocol. - Agent registry — local Python callables, remote HTTP agents, and MCP tools, with SSRF-validated outbound calls.
- Events & subscriptions — webhooks, bounded-buffer emission, and
on/once/wait_forcallback subscriptions. - Root packaging — bundle a process and its agents into a portable
.rootarchive (roots pack/roots install). - HTTP API & CLI — a full FastAPI surface and a
rootscommand-line tool (serve,run,validate,pack,install,status). - Optional API authentication — set
ROOTS_API_KEYto require anX-API-Keyheader on all data routes; the server binds127.0.0.1by default. - Typed end-to-end — ships a
py.typedmarker and is strict-pyrightclean.
#Notes
- Roots is beta (
0.x). The HTTP API is unauthenticated by default; do not expose it to untrusted networks withoutROOTS_API_KEYor a proxy. See the security note.