All products

Sheet 01 — native macOS app starter

Mac Kit: Your next Mac app, already drawn up.

A Swift and SwiftUI foundation for selling your own Mac app. Activation, Settings, components, offline licensing and the scripts that ship a DMG are built. You start on the part that’s yours.

A drawing of the first screen an app built with Mac Kit shows: its icon, its name and tagline, a License Key field and an Activate License button. One side is drawn as a blueprint with notes, the other as the finished macOS window.

It goes on the window, and into the command further down.

Buy Mac Kit

Product

Mac Kit

Built with

Swift 6 · SwiftUI

Price

$20once

Delivery

Private GitHub repo

Drawn by

YoIndie
Buy Mac Kit · $20

Sheet 02 — mac-kit init

One command makes it yours.

Your name, bundle ID and product ID go into every file that needs them. Nothing is overwritten and your git remote is left alone. This is what it prints.

~/pomodoro — zsh
$ npx github:YoIndie/mac-kit init --name "Pomodoro" --bundle-id com.yourcompany.pomodoro --product-id pomodoro
Mac Kit 0.1.0 project created in ~/pomodoro
  App name:      Pomodoro
  Xcode project: Pomodoro.xcodeproj
  Bundle ID:     com.yourcompany.pomodoro
  Product ID:    pomodoro  (licensing)
  94 file(s) created. .mac-kit.json records the version and identity.

Next steps:
  1. Scripts/validate.sh        (builds, tests and audits; needs Xcode 16+)
  2. Scripts/build.sh && open "build/Build/Products/Debug/Pomodoro.app"
  3. Build your UI in Pomodoro/Product/ProductRootView.swift

Sheet 03 — bill of materials

Everything a Mac app needs before it’s yours.

  • MK-01App shellAn activation screen, a sidebar whose screens get ⌘1–⌘9 menu items, a Settings window (⌘,), menus, and a main window that opens centred.
  • MK-02MacKitUITheme tokens and components: buttons, TextInput, SearchField, ToggleRow, SelectableCard, Card, Panel, pages, sheets, alerts, and loading, empty and error states. Light, dark and Increase Contrast.
  • MK-03MacKitLicensingOnline activation, Ed25519-signed entitlements verified with CryptoKit, Keychain storage and offline launches. When anything is off, it fails closed.
  • MK-04MacKitCoreApp info, typed preferences that work with @AppStorage, and unified logging that keeps error details private.
  • MK-05Scriptsbuild, test, validate, verify-app, package-dmg, notarize and set-app-icon. Bash and the tools that ship with macOS and Xcode, nothing to install.
  • MK-06TestsSwift Testing for every module, app tests for startup and licensing that run inside the app, and tests for the scripts themselves.
  • MK-07mac-kit initStarts a new app in an empty repository with your name, bundle ID and product ID. It never overwrites a file.
  • MK-08DocsArchitecture, customizing, licensing, releasing, scaffolding and UI, each written for the next step you take.

App Sandbox and Hardened Runtime on · Swift 6 · no third-party dependencies

Sheet 04 — licensing

Activate once. Then it works offline.

A license is for one Mac and never expires. Mac Kit is the app side: your backend issues the keys, to the contract in Docs/LICENSING.md, with a Node.js reference for signing. Selling something that needs no key? Turn it off with one setting.

MACKIT_LICENSING_ENABLED = NO

The app sends the license key, its product ID and its installation ID to your backend once. The backend answers with an entitlement signed with Ed25519. The app verifies it, keeps it in the Keychain, and verifies it again at every launch without the network.

Sheet 05 — release

From Debug to a notarized DMG.

Every build is local and needs no Apple account until you add your Developer ID. Then the same scripts sign, notarize and package what you sell.

  1. 01

    Check

    validate.sh

    Builds, tests and audits Debug and Release, and that no development-only code ships.

  2. 02

    Build

    build.sh -c Release

    One universal app, for Apple silicon and Intel.

  3. 03

    Package

    package-dmg.sh

    A clean Release build, then a verified disk image in build/dist/.

  4. 04

    Notarize

    notarize.sh

    Notarizes, staples and checks it with Gatekeeper. Needs an Apple Developer account.

  5. 05

    Publish

    GitHub Releases

    Docs/RELEASING.md walks through putting the DMG online.

Sheet 06 — price

$20, once. Build as many apps as you like.

Buy Mac Kit

First-purchase price

$20USD · paid once

Tax included: this is what you pay, wherever you are.

  • Secure checkout on the payment provider’s page
  • Private GitHub repository, by email
  • No account needed

Everyone

$20

Your first YoIndie purchase? Paid by 31 December 2026, it makes you an early supporter, and we email you a YoIndie code.

With your YoIndie code

$15

Bought from YoIndie by 31 December 2026? Enter the code we emailed you.

Notes

  1. Prices in US dollars, tax included. You can pay in your local currency, including by UPI in India; the payment page shows the converted amount, with a 2–4% conversion fee, before you pay.
  2. Not working as described, and we can’t fix it? Email us within 14 days for a refund. A refund ends access to the repository.
  3. Full details in our Terms.

The license

The line is between an app built with Mac Kit, which is yours to sell, and Mac Kit itself.

  • You may: Use it in unlimited personal and commercial projects
  • You may: Build, sign, distribute and sell the Mac apps you make with it
  • You may: Build apps for clients and hand over their source
  • You may not: Resell, redistribute or publish Mac Kit itself, modified or not
  • You may not: Offer it, or something substantially derived from it, as a competing starter
  • You may not: Put its source in a public repository

Sheet 07 — after you buy

From payment to your first build.

  1. 1

    Name your GitHub account

    After payment we email you a link. Tell us which GitHub username should get access.

  2. 2

    Accept the invitation

    That account gets a read-only invitation to the private repository.

  3. 3

    Run mac-kit init

    In an empty repository, with your app's name. Then Scripts/validate.sh, and you're building.

Sheet 08 — questions

Before you build.

Something else? Email us.

01What do I need?

A Mac with macOS 14 or later and Xcode 16 or later. To run the initializer, Node.js 18 or later and git signed in to GitHub. You don't need an Apple Developer account until you sign and notarize for public release.

02Can I sell the apps I build with it?

Yes, as many as you like, personal or commercial, and for clients with their source. What you can't do is resell or publish Mac Kit itself.

03Does it include a licensing backend?

No. Mac Kit is the app side: it activates against your backend once and verifies the answer on the Mac. The API contract is in Docs/LICENSING.md, with a Node.js reference for generating keys and signing entitlements.

04Can I ship an app without a license key?

Yes. Set MACKIT_LICENSING_ENABLED = NO and the app opens straight to your product, with no activation screen and no License tab.

05What about the Mac App Store?

Mac Kit's scripts and licensing are for selling outside the App Store, as a signed, notarized DMG. The App Sandbox is on by default, so the App Store stays an option, but App Store purchases aren't built in.

06How do I take a newer version later?

Run mac-kit init into a separate empty folder (npx fetches the latest from the repository each time), compare it with your app, and copy across what you want. You need access to the repository to do this.

07Is it a subscription?

No. You pay once and nothing renews. Once your app starts from it, the code is yours.

08Is anything real built on it?

MacDrop is. YoIndie's notch app uses Mac Kit's packages and its licensing, end to end.