About Steward

Inspiration

The idea came from a problem I actually had: I kept losing track of which CLI tool did what, and I'd forget the exact commands every time. FFmpeg, yt-dlp, whisper — I use these constantly, but the knowledge lived in my head and my shell history, not anywhere reusable.

Then a few things made me realize this wasn't just my problem. One day I showed a friend that you can convert a video straight from the CLI, and he was floored. I'd built a bunch of little automations for my dad, and when his friends saw them they were shocked too — that these things were even possible. And it was nothing fancy. Just FFmpeg and yt-dlp doing what they already do. But that ordinary CLI power got the kind of reaction usually reserved for magic.

That's Steward's whole thesis: your computer already knows how to do these things. The internet just charges you rent for them. So I built an agent that turns any file task into a one-click tool that runs locally, proves it worked, and never has to think about it again.

What I learned

Parallel agents need parallel workspaces. The biggest technical lesson was git worktrees. I ended up with seven workspaces and ran five parallel agents for the UI. You can't just point multiple agents at the same folder and expect isolation — they'll trip over each other in the same working tree. Separate worktrees, one branch each, was the thing that made real parallelism work.

Security is in the details. I learned a lot about how to actually lock a local execution tool down — token generation for the local server, confining where outputs can be written, only allowing specific flags per tool. Small decisions that decide whether a malicious input can escape.

Image generation is a real design tool. I didn't expect to get this creative with it. Generating imagery, then extracting transparent objects from it and compositing those into the interface, turned out to be a whole workflow. I even generated a full poster, then built a page out of it and exported the real assets I wanted, and threw away the parts I didn't.

How I built it

The look came from a book. I was reading Impressionism by Karin Sagner and got completely carried away with the old colonial, oil-painting feel of it — the warmth, the brushwork, the color. That became Steward's entire visual language: a warm-analog interface, deep blue and cream, hand-painted tool illustrations, one ember accent.

I worked across a few tools. ChatGPT handled all the image generation. And Codex with GPT-5.6-Sol was the builder. For writing code I mostly used GPT-5.6-Sol (Medium) because it was quicker to work with, and my main partner for the heavy lifting was GPT-5.6-Sol on Extra High reasoning in the main chat.

Codex ran as multiple chats. The main one was the spine; the parallel ones did UI work across those separate worktrees, and everything merged back together into what you see. Codex built the UI from one long, detailed prompt — I described it thoroughly up front so I didn't have to keep going back and fixing it.

The engine itself is the important part: the model only ever produces a plan — it never touches the shell. A local executor runs that plan, verification checks the result with real evidence (expected vs actual, never a bare "success"), and the proven plan is saved as a recipe that reruns forever with zero model calls. The core rule is that the recipe is the plan — the code adds nothing the model didn't declare.

The tests were written by Codex, but I directed them — so I count them as mine. Same with the security measures: I made the calls, closed the holes, and made the system fail closed.

Challenges

The API kept disconnecting. The single biggest challenge was Codex's transport dropping mid-plan — it would try a WebSocket connection, fail, retry five times, then fall back to HTTPS. A clean connection plans in ~15 seconds; one that hit the reconnect loop took one to three minutes. I chased every lever (reasoning effort, disabling WebSockets, an empty working directory) and confirmed it was server-side flakiness, not the task. I worked around it, but it cost real time.

I ran out of usage. I burned through my ChatGPT Plus limits constantly — daily message caps, and advanced voice almost every single day. I ended up having to buy more to keep going.

It started as a fun project and got complicated. This began as something small and playful, and it grew into something with a frozen plan schema, a repair loop, a security audit, and a full custom UI. At one point I asked Codex to build the batch flagship and it stopped — it refused to fake batch processing behind a hidden loop because that would break the recipe-is-the-plan rule. An agent declining to cut a corner I told it to cut was, honestly, the moment the whole idea proved itself.

What shipped

Steward is a working local macOS agent in the Work & Productivity track, built with GPT-5.6-Sol (gpt-5.6-sol) via Codex CLI. It ships recipes for video compression, format conversion, audio loudness, document conversion, OCR, and subtitles; a live WebSocket UI streaming plan → execute → verify → save; a real "Reveal in Finder" flow; saved-command reruns proven to make zero model calls; and a security posture with two independently-found critical issues closed.

A note on the demo video: a few cuts were made only to keep it under the size and time limit. The full uncut walkthrough is on YouTube — link below.

Built With

Share this project:

Updates