Ductile¶
An automation runtime designed to be operated by AI agents.
Ductile is a self-hosted automation runtime. Every surface — CLI, REST API, plugin protocol, execution ledger — is shaped so an LLM can drive it as confidently as a human can audit it. A single Go binary orchestrates polyglot plugins via a simple JSON protocol; agents schedule jobs, route webhooks, diagnose failures, RCA incidents, test plugins, and author new ones in any language the integration needs.
See the Constitution for the alignment target and the five lifecycle pillars every change must serve.
Where to next¶
-
Get running
Build the binary, point it at a config, see your first pipeline execute.
-
Understand the model
Architecture, pipelines, routing, scheduling, and the ten idioms that make Ductile feel natural.
-
Operate with an agent
Load the operator skill, describe a goal in natural language, let your AI author the pipeline.
-
Build a connector
Plugins are subprocesses speaking JSON on stdin/stdout. Any language, any tool.
The shape of Ductile¶
[ Trigger ] --(event)--> [ Pipeline ] --(step 1)--> [ Connector A ]
--(step 2)--> [ Connector B ]
--(step 3)--> [ Connector C ]
- Connectors do the work (fetch a URL, run a shell command, send a Discord message).
- Schedules or Webhooks trigger the first event.
- Pipelines react to events and chain connectors together, passing data downstream.
- The Queue ensures every step is retried on failure and tracked in real-time.
Core capabilities¶
- AI-First Surfaces —
/skillsregistry, auto-generated OpenAPI,/topologyplugin graph,/stopwatch/{plugin}latency aggregation,/system/doctorand/system/selfcheckfor HTTP-driven observability. Agents drive the full lifecycle without GUIs. - Polyglot Runtime — Connectors in Python, Bash, Node.js, Go, or Rust. Read
stdin, write JSON tostdout, you have a plugin. - Event-Driven Pipelines — Multi-step workflows with automatic baggage propagation.
- Smart Scheduling —
cron, fuzzy intervals, jitter to avoid thundering herds. - Secure Webhooks — Inbound HMAC-verified endpoints for GitHub, Discord, custom services.
- Resilient Queue — SQLite-backed, at-least-once delivery, automatic recovery and retry of orphaned jobs after crash.
- Local & Private — Zero-ops, single-binary, your hardware.
Project¶
- Source: github.com/mattjoyce/ductile
- License: Apache 2.0
- Changelog: CHANGELOG.md