Show HN: Ductwork – A Go platform for running AI agents on autopilot
5 points| dneil8675 | 1 day ago |github.com
Every agent framework I looked at was built around chat interfaces or one-shot workflows. I wanted something closer to cron for AI agents — define a task, give it a schedule, let it run forever. So I built Ductwork.
You define tasks as simple JSON files — a prompt, a schedule, optional memory and skills — and ductwork handles scheduling, execution, retries, and history. The agents have bash, file read/write, and that's it. No fancy abstractions.
The thing that makes it actually useful for unattended operation:
Persistent memory — agents write to a memory directory between runs. My Bitcoin news monitor remembers which articles it's already reported on. Next run, it only flags new ones.
Security boundaries — if you're letting agents run unsupervised, you need guardrails. Per-task tool whitelists, path restrictions, bash command filters. A monitoring task can't accidentally rm -rf something.
Run history and observability — every run is tracked with status, duration, token usage, and errors. REST API for everything so you can integrate with whatever alerting you already use.
It scales from a single process (ductwork start) to distributed — same binary with --mode=control runs a task queue, --mode=worker on other machines polls for work. No new dependencies, just HTTP.
Single Go binary, go install and you're running. ~3,500 lines, only deps are the Anthropic SDK and Cobra.
This is definitely not a finished product — it's early and there's a lot I want to add. But it's functional and I'd love for people to download it, play around with it, and let me know what they think. Feedback, ideas, issues — all welcome.
jlongo78|1 day ago
dneil8675|1 day ago
Checkpointing conversation state + sandbox filesystem mid-run so agents can resume on failure will be key for operating at scale. And a unified dashboard across all running agents is the goal once the core scheduling and execution layer is solid.
I appreciate the feedback!
john_minsk|20 hours ago
- How many tasks/schedules have you tested? - What if some schedule has to run another schedule on demand. Can I clearly see it in a management view? - If you and me are running this. Can my task contact your task and be stay alive while another user finishes his task?
dneil8675|10 hours ago
Management view isn't there yet — still focused on getting the core execution and scheduling solid before layering in observability.
For the agent communication - at the moment there is no connectivity between two spawned agents, unless one agent spawns the other. The system is task based with the task being the separation boundary, where agents can spawn agents if required by the task. For this what kind of use cases are you imagining ?
Also please feel free to pull it down and tinker with it! This is an MVP and more people playing and updating it will make it that much better!