Platform launching soon View CLI on GitHub →
Coming Soon

Ship Mac betas in seconds.
Sell direct and keep 97% of every sale.

The complete distribution platform for independent macOS developers.

Get Started

Free tier available — no credit card required

app-dist release --app MyApp.xcodeproj
The Pain

Indie Mac distribution is still broken.

Every step between finishing your app and reaching your users is an obstacle course.

A 30% tax on your work

The App Store takes 15–30% of every sale. For indie devs, that's the difference between a sustainable business and a hobby.

Beta testing is a DIY project

TestFlight was built for iOS. Getting a signed, notarized DMG to Mac testers requires stitching together tools you didn't sign up to maintain.

Weeks of infra, not product

Setting up Sparkle, hosting, payments, and tester management yourself means weeks of engineering — time you should spend building your app.

How It Works

From commit to tester inboxes in minutes.

One CLI, one command. Everything else is automated.

Build

app-dist release handles archive, sign, notarize, DMG creation, and upload automatically. No scripts to write or maintain.

Distribute

Token-gated download links are emailed to your testers instantly. Secure, trackable, revocable — from a single command.

Sell coming soon

Customers buy on your storefront, download a signed DMG, and you keep ~97% after card processing. Zero per-transaction platform cut.

# 1. Install (one-time)
$ brew install app-dist/tap/app-dist
 
# 2. Release your app
$ app-dist release --app MyApp.xcodeproj
✓ Archived MyApp (1.2.0)
✓ Signed with Developer ID
✓ Notarized by Apple
✓ DMG created (42 MB)
✓ Uploaded to R2 edge
 
# 3. Send to testers
$ app-dist grants --csv testers.csv --send
✓ 24 token-gated links emailed
Links expire in 72 h · 3 attempts each
Features

Everything you need. Nothing you don't.

Built specifically for independent Mac developers who move fast and ship often.

Token-Gated Downloads

Every download link is a unique, opaque token — not a public URL.

  • 32-byte random tokens, stored only as SHA-256 hashes
  • Configurable attempt limits and expiry per grant
  • Instant revocation from CLI or API
  • Emails, IPs, and user agents are HMAC'd — zero plaintext

Security-First Architecture

Sensitive data never touches the database in plaintext.

  • Emails stored as HMAC digests, never plaintext
  • API keys: SHA-256 hashed, shown exactly once
  • Passwords: PBKDF2 with 600K iterations
  • All HTTPS, private R2 URLs, no public buckets

Sparkle Auto-Updates coming soon

Industry-standard macOS auto-updates, managed for you.

  • Automatic appcast.xml generation from every release
  • Ed25519 signed update packages
  • Separate beta and stable channels
  • Zero appcast maintenance overhead

One CLI, Zero Runtime

A single Rust binary. No npm, no pip, no runtime to install or update.

$ brew install app-dist/tap/app-dist
$ app-dist --version
app-dist 0.4.1
  • Eliminates supply-chain attack surface
  • Instant startup — no warm-up delay
  • Works in CI/CD pipelines out of the box

Multi-App Support

One account, multiple apps, completely independent pipelines.

  • Per-app release history and grant management
  • Separate tester lists per app
  • Independent billing and limits per plan
  • Switch apps with a single --app flag

Global Edge Infrastructure

Cloudflare Workers serving your downloads from 300+ edge locations.

  • Zero cold starts — every request is instant
  • R2 object storage with no egress fees
  • D1 SQLite at the edge — millisecond DB queries
  • Scales automatically with no ops work
Security

Zero trust by default.

Every piece of sensitive data is protected before it ever reaches storage.

Tokens hashed at rest

Raw download tokens never touch the database. Only their SHA-256 hash is stored.

Email HMAC digests

Email addresses are stored as HMAC-SHA256 digests with a server-side secret.

API keys shown once

API keys are hashed with SHA-256 on creation and displayed exactly once to the user.

PBKDF2 · 600K rounds

Passwords are stretched with 600,000 PBKDF2-HMAC-SHA256 iterations — well above NIST guidance.

No public R2 URLs

All file downloads go through the Worker. No direct bucket access, ever.

Ed25519 update signatures

Sparkle updates are signed with Ed25519 keys — modern, fast, unforgeable.

Pricing

Simple, honest pricing.

Zero per-transaction fees. You keep ~97% after card processing — compared to the 15–30% cut elsewhere.

Starter

$19
/ month coming soon
  • 3 apps
  • 100 testers
  • 50 releases / month
  • Paid direct downloads
  • Email support
Get Starter Full details →

Studio

$149
/ month coming soon
  • Unlimited apps
  • Unlimited testers
  • Unlimited releases
  • Custom domain
  • Dedicated support
Contact us Full details →
Built For

Made for indie Mac developers.

If you ship Mac software outside the App Store, app-dist is your unfair advantage.

  • Solo developers and small studios (1–5 people) who want to move fast without building distribution infrastructure.
  • Productivity, utility, and professional Mac tools — the kind of software power users pay for without hesitation.
  • Annual revenue $5K–$200K — big enough to care about margins, small enough that a 30% cut stings.
  • Comfortable with CLI — you already use git, Xcode, and Homebrew. app-dist fits right in.

From signup to first release in under 15 minutes.

Install the CLI, configure your app, and ship. That's it.

Start shipping
Tech Stack

Infrastructure you can trust.

Every piece chosen for reliability, performance, and security — not hype.

Cloudflare Workers

Zero cold start. Global edge. 300+ PoPs serving your downloads instantly.

D1 + R2

SQLite at the edge for metadata. R2 object storage with no egress fees for binaries.

Rust CLI open source

Single static binary. MIT licensed. Zero supply-chain attack surface. View on GitHub.

Sparkle 2

The industry-standard macOS auto-update framework. Ed25519 signed, battle-tested.

Square Payments

Developers connect their own merchant account. You keep your payment relationship.