Projects

Open source work, experiments, and tools — organised by what motivated them, not just what they do. Full history at github.com/mattjoyce.

Recent

AgenticLoop 2026-02 Go

Autonomous agent orchestration service — runs a staged Frame/Plan/Act/Reflect loop with tool use, persistent workspace memory, and async execution

After building ductile, I wanted to experiment with agent workflow design by building a small agent I could trigger via API to pursue a goal. The Frame/Plan/Act/Reflect loop is deliberately explicit — I wanted to understand how agents decompose work before trusting them to automate anything real. AgenticLoop can query ductile for available plugins and compose them to solve tasks.

ductile 2026-02 Go

LLM boundary layer for safe, governed automation: scoped capabilities, policy routing, reliable job execution, and auditable plugin operations

Senechal taught me what I actually wanted: a personal service layer that an LLM could operate, not just call. Ductile is the redesign — Go instead of Python (simpler to deploy), with a plugin architecture so capabilities can be added without touching the core. The key design principle was treating the LLM as a first-class operator: commands like 'skills' return a plain-text narrative written for an LLM to read, so the agent can discover what's available and how to use it without any out-of-band documentation. --skills is the new --help. Built using Claude, Codex, and Gemini.

ductile-discord 2026-02 Python

Discord bot companion for ductile

Started as a set of Discord slash commands to trigger ductile plugins directly. Building it revealed what I actually wanted: not a command interface, but a conversational one — message a bot, have it figure out which plugin to use. That's not a ductile problem, that's an agent problem. This will likely evolve into a Discord front-end for AgenticLoop.

kanban-skill 2026-02 Shell

AI skill to manage a markdown file based kanban workload

I needed a way to coordinate three LLMs while building ductile — shared task state they could all read and update without a database or a server. I'd had the idea for a text-based kanban for a while, so I used the opportunity to try it. What surprised me was how fluid it became in practice: any time a new idea or concern surfaced I could just say 'make a card for that', flick to another agent, ask it to critique a proposal, and have it append its comment to the card. The unanticipated flaw: you have to be disciplined about which git branch you're on when cards are created. A dedicated kanban branch is probably the right fix.

claude-plugins 2026-02

Matt Joyce's Claude Code plugin marketplace

A convenience repo for installing kanban-skill into Claude Code, with room to grow. The intent is to collect reusable skills as I build them — a personal marketplace that makes it easy to wire up new capabilities without reinventing the setup each time.

Also