AI-Assisted Development for Apple Platforms

Photo from Omiš, Croatia, at ChainSafe Infrastructure program offsite, 2024.

I've been using various LLMs since late 2019, starting with GPT-2 running locally on my laptop. This ramped up when GPT-3 and ChatGPT hit, used for assisted coding on my Python and JS tools. Coding agents really got amazing in 2025 and 2026.

The holy grail for me: Mac apps. Despite using Macs for 34 years (at 8 years old on a Mac Classic), I'm not a Mac or iOS developer.

This post documents the apps I've built for Apple platforms (mostly MacOS※) since early 2026. Some of them have links to GitHub, but only if I consider them "done enough": stable, feature complete, and useful to others.

You can view my AI Policy on the About page detailing my usage of AI when writing (TLDR: not used for writing).

※ - I still refuse to call it macOS

Contents

Frontends for CLI Tools

ytBatda

Naming: batda (받다) == to receive (Korean), so ytBatda is receiving YouTube videos.

Problem it solves

Info

GitHub: ytBatda


KiruCut

Naming: kiru (切る) == to cut (Japanese).

Problem it solves

Info

GitHub: kirucut


JXL Studio

Naming: it's a studio... for working with JPEG XL compression?

Problem it solves

Info


Safari Extensions

barometric

Naming: baro (바로) == directly/right away (Korean), so "converting to metric directly".

Problem it solves

Info


baro-iso8601

Naming: Using baro- from barometric (Korean for directly), and ISO8601 (my preferred date format).

Problem it solves

Info


Utilities and Full Apps

IceList

Naming: it's Ice.app but with a List view.

Problem it solves

Info - IceList is my fork of Ice.app that displays a list of hidden menu bar extras. - I can also search the name rather than trying to find it in the list. Search field is hot as soon as the menu is opened.


Display Disabler

Naming: it disables a display.

Problem it solves

Info

GitHub: display-disabler


BoraMin

Naming: bo-ra! (보라!) == Look! (Korean), Min = minimal. A minimal video player you look at.

Problem(s) it solves

①
- I've been waiting since 2022 for a new Apple TV. My 2021 (ATV 4K 2nd gen) works great, but struggles with 4K files (from YouTube, they only come in VP9 or AV1 video codecs, which don't have hardware acceleration on my AppleTV※).
- The 2026 AppleTV was just released with hardware VP9 and AV1 support, but priced at 300USD (I paid 120USD for mine in 2022).
- Technically, my AppleTV does have hardware-accelerated decoding but only the YouTube app was entitled to use it (without the entitlement an app cannot access it). But a few months ago it was discovered that Apple has not needed apps to have that entitlement (like this one)!

②
- I use Infuse to access media files hosted on my Mac Mini. - It is fairly minimal, but still has many issues:
- List view doesn't show full filenames without needing it to scrolling horizontally (slow)
- It does save playback position, but not if its close to the end of the video (issue), and no way to disable this
- If there's a folder with just one file, it flattens it (so the file shows up in the parent directory) and there's no way to disable this (issue)
- It does sync via iCloud, but syncing is unreliable. - By default, has a bunch of features (like matching files and folders to TV and movies) that I do not want

So I created my own minimal player.

Info

tvOS

iOS

MacOS


I've had a couple of failures as well that I might detail later. Failures not caused by Codex or the coding agent being unable to do something, but caused by a lack of vision or flawed concept on my part.

For all of the tools above, there was a clear problem and a relatively clear path to solve it.