PLATE 02
AgenticWP
An open-source agent system that drafts, illustrates and optimises posts inside the WordPress editor
- ROLE
- Sole developer
- STACK
- PHP · React · REST · OpenAI language and vision models
- LINK
- agenticwp.org

BRIEF
A set of agents that live inside the WordPress block editor, where they draft posts, generate the images to go with them, and revise what is already published. It is for people who write on WordPress and would rather the drafting work happened in the editor than be pasted in from somewhere else. The plugin is free and every user brings their own model key.
Blocks, not markup
The generator emits real editor blocks rather than markdown or HTML converted after the fact.
The reason is editing, not generation. Because output is blocks, an agent can modify any existing post without breaking its formatting, and any custom styling a user has already applied to their blocks is inherited by the blocks the agent creates. Converted markup would have produced content that looked right on publish and was inert the moment anyone tried to edit it. It also would have discarded the user's own styling every time an agent touched a post.
One orchestrator, several specialists
An orchestrator assigns work to a set of agents, each carrying its own tools and its own instructions.
The alternative was a single agent holding every tool behind one long instruction set. Splitting bought two things: tasks run in parallel, and each agent carries narrower, more focused instructions than a generalist can hold without drift.
The assistant must not be the bottleneck
Generation runs as orchestrated background jobs with retry, rather than sequentially inside the request.
Sequential execution worked and was too slow. The slowness changed what the thing was, from an assistant you work alongside into a tool you wait on. Moving the work to background jobs let the agent keep responding and keep taking new instructions while long tasks ran. The architecture followed from how the interaction needed to feel.
AgenticWP: from request to editable blocks
An illustrative dispatch, from an editor request to editable blocks. The orchestrator assigns specialist work to background jobs while the editor remains available. This sequence explains the architecture; it is not a live run or a timing trace.
Read the full sequence
Request
The writer asks for help in the editor. The request enters the orchestration layer.
Dispatch
The orchestrator assigns focused work to specialists carrying their own instructions and tools.
Work
Long tasks run as background jobs with retry support. The assistant can keep taking instructions while that work continues.
Edit
The result is native editor blocks. The writer can revise them, and existing block styling is retained.
A key you own, not one I rent
Users supply their own OpenAI key and pay OpenAI directly. No server of mine sits in the path.
The alternative was proxying inference and bundling the cost into the plugin. Owning the key is the only way the plugin stays genuinely free without me funding everyone's usage. It costs real things: no rate limiting, no usage visibility, and no central place to debug a failing call. Support is harder, because failures happen between the user and OpenAI where I can't see them.

CONSTRAINT
The plugin had to be free, and I was not going to fund everyone's inference.
Progress you can see
Achievements, experience thresholds, publishing streaks and a progress dashboard.
An unusual thing to build into a plugin, and it is there to solve a writing problem rather than a technical one: these mechanics keep people returning to drafts, improving what they have written, and holding a publishing schedule. The work the plugin automates is only useful if the habit around it survives.

CONSEQUENCE
That single constraint removed the server. With no middleman in the path, cost control, privacy and failure handling all stopped being infrastructure problems and became design problems: the user holds the key, the user sets the spending limit, the content goes straight to the model and nowhere else, and every failure has to be legible in the editor because there is no log of mine to read it from.
DELIBERATE BOUNDARIES
Block editor only
Classic Editor is not supported and will not be. Supporting it would mean emitting the converted markup that decision one exists to avoid.
You bring the key
Real friction at install, and the price of the plugin being free. There is no trial tier, no bundled usage, and no path that avoids the OpenAI account.
NEXT PROJECT
BuyBye
A purchase-decision assistant pairing live product research with self-reported financial context
