
The problem
Working with AI agents all day scattered my setup across folders of skills, notes full of prompts, a terminal per agent and a separate cleaner app. Every new chat started with collecting the same context again.
What I built
A Swift 6 app in SwiftUI and AppKit. It links local skill folders, combines prompts and project files into one ordered message, starts Codex and Claude sessions under separate profiles, and shows local services, ports and system metrics. It ships in seven languages. The sales site is Next.js with Polar checkout, and it issues Ed25519-signed licenses that the app verifies offline, so there is no license database to run.
Outcome
Live at arvlin.com as a Developer ID signed, notarized build with its own update feed. License signing is deterministic, so the success page and the email always carry the same key.
Stack
- Swift
- SwiftUI
- AppKit
- Next.js
- Polar