Inspiration

Every Mac user has a story where they went looking for an oddly specific and niche macOS app to solve their current problem. Usually this requires scouring forums, Reddit and a whole other host of websites to find the one random app that does what you want. Sometimes you get lucky and happen to find one, but most of the time you end up disappointed, and use an app that only sort of does what you want. Ironsmith aims to fix that.

What it does

Ironsmith is all about making niche Mac apps and utilities for yourself. You describe the exact app you need and Ironsmith writes the code, builds it, and packages it within minutes. Instead of telling Google to find you an app, just tell Ironsmith what you need, and it custom makes it to your specifications.

A big part of the project is letting you use whatever LLM you want to make your app, that being frontier models like GPT 5.6, or tiny models like Gemma 4 E2B. There's multiple coding agents to pick from, two of them in-house agents specifically designed for making tiny Mac apps, and Codex itself for the complex ones. One of the in-house agents (Spark) is made specifically for small models with limited context, and lets you make simple apps entirely on device on Macs as limited as a Macbook Air with 8GB of memory.

How we built it

I've used Codex through this entire project to help me make it. Lots of trial and error getting the custom agents to work reliably, and a lot of back and forth feeding logs to Codex to help me tweak them. For build week specifically I focused on using 5.6 Sol to:

  • Add better app icon generation using GPT image 2.
  • Give the Codex agent the ability to use attachments for context when building an app.
  • Create a new apps list view.
  • Improve the Spark agent.

Challenges we ran into

Ironsmith allows users to sign in with their ChatGPT account to pull from their Codex usage. With the release of 5.6, I noticed 5.6 Luna calls to the responses endpoint were failing when I hadn't actually changed anything. I gave 5.6 Sol Ultra mode a try to figure out what was actually going on. It was able to look into the Codex binary itself and figure out that the new 5.6 models were using a new Responses lite request shape instead of the traditional responses shape. What would have taken hours upon hours of research was figured out in 20 minutes from 5.6 Ultra.

Another challenge happened when improving the Spark agent and getting Gemma 4 E2B to be better at repairing code. In my experience search and replace tools are too much for a small model like this. I originally had Aider style search and replace blocks, but in my research I found that Gemma kept messing up the syntax of it, and then when it didn't work switched to unified diffs. With small models you have to play to their strengths, so I switched up the repair system from aider style blocks to proper diffs, and it made a world of difference in getting the model to make correct repairs.

Accomplishments that we're proud of

I recently released a new version of Ironsmith with all of the updates mentioned here. Now Ironsmith has Codex as a coding agent, great app icon generation, responses lite support and many more features.

What we learned

5.6 Sol Ultra is a beast for figuring out very tough problems and I can't believe it figured out the responses lite bit. Definitely using that in the future for tackling seemingly impossible problems.

Play to small model strengths! Use unified diffs instead of aider for small models, it really helps with code repair!

What's next for Ironsmith

The next big update is all about letting you publish and share your apps with other folks. I'm working on a store to allow you to easily browse and download other people's creations.

Built With

Share this project:

Updates