Skip to content
Yassir Halaoui
Lire en français

Competence

Native macOS apps in Swift, with on-device AI

Kempt is my native Mac app: Swift, SwiftUI and AppKit, reading documents with Apple's on-device model. I built and launched it in four days.

In short

Yassir Halaoui builds native macOS apps in Swift with SwiftUI and AppKit, using Apple's on-device Foundation Models, Vision, PDFKit, Speech and App Intents. His app Kempt, about 20,000 lines of Swift with 122 tests, was built and launched in four days, with Stripe licensing and automatic updates.

Where I've used it

  1. Kempt

    Names, files and searches documents with Apple's on-device model, reads PDFs, scans and photos with Vision and PDFKit, and answers spoken questions in English, French and Spanish.

  2. Kempt

    Ships as a notarized Developer ID build with Sparkle automatic updates, and Ed25519 licence keys issued by a Stripe webhook running as a Vercel function.

  3. Kempt

    A sandboxed Mac App Store edition with StoreKit in-app purchases, built from the same sources and submitted to App Review on 17 October 2026.

Everything in this area

Language and UI
  • Swift
  • SwiftUI
  • AppKit
  • Swift Testing
Apple frameworks
  • Foundation Models
  • Vision
  • PDFKit
  • Speech
  • App Intents
  • StoreKit
Distribution
  • Developer ID
  • Notarization
  • Sparkle
  • Mac App Store

In depth

Private by construction

Kempt makes exactly one network request: a daily update check that sends its version number. Reading, naming and answering all happen on the Mac. That single constraint shaped the architecture more than any framework choice did.

A small model, used carefully

Apple's on-device model is fast and private, and it isn't something you trust with a rent amount. So facts decide where a file goes, the model only writes its name, and an answer without a citable source doesn't get given. Files Kempt is unsure about wait for a person.

Shipping a Mac app is half the work

Code signing, notarization, an update feed, licence keys and a payment webhook all have to work on the first public build. On Kempt they did, because they were built in the first days rather than the last.

Questions

Can you build a native macOS app?

Yes. Kempt is a native macOS app in Swift, SwiftUI and AppKit, distributed both directly and through the Mac App Store.

What can Apple's on-device Foundation Models do?

Classification, naming, short extraction and grounded answers, privately and with no per-call cost. They're small, so they work best when the facts come from the document itself and the model only does the language part.

How do you distribute a Mac app outside the App Store?

Sign it with a Developer ID, notarize it with Apple, ship updates through Sparkle with signed appcasts, and handle licensing yourself. Kempt issues Ed25519 licence keys from a Stripe webhook.

Field notes

Shipped work

  • Case study · Mac app

    Kempt

Related competences