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
- bash
- bun
- css
- ffmpeg
- ffprobe
- ghostscript
- gpt-5.6
- homebrew
- html
- imagemagick
- javascript
- libreoffice
- macos
- ocrmypdf
- openai-codex
- pandoc
- raycast
- svelte
- typescript
- vite
- websocket
- whisper.cpp
Log in or sign up for Devpost to join the conversation.