Tinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.
2,744
stars
438
commits
Swift
primary language
Sep 10, 2026
updated
A tiny, fully native macOS launcher — the essentials, without the bloat.
Around 5 MB on disk and under 100 MB of RAM — no Electron, no telemetry, no background CPU churn. Just SwiftUI + AppKit with zero dependencies. It's fast because there's nothing to it.
It also runs Raycast extensions — the real ones, rendered as native SwiftUI. No Node.js, no browser: JavaScriptCore ships with macOS, so that costs no extra binary size.
Tinycast is free, and it stays that way. If it earns a place in your daily flow, a one-off tip helps keep it actively maintained. GitHub Sponsors isn't available in my country, so please support here:
Payments are handled securely by Polar.sh.
First, add the tap:
brew trust --tap abue-ammar/tinycast # required for third-party taps
brew tap abue-ammar/tinycast
Then run the one line that matches your Mac:
| Your Mac | Install |
|---|---|
| Apple silicon, macOS 26 or newer | brew install --cask tinycast |
| Intel, macOS 26 | brew install --cask tinycast-universal |
| macOS 15 Sequoia | brew install --cask tinycast-sequoia |
Not sure which you have? Apple menu → About This Mac. Homebrew checks too, and refuses the wrong one.
Want early builds? brew install --cask tinycast@beta puts Tinycast Beta.app beside the stable
app, with its own settings and permissions. Apple silicon, macOS 26+.
Homebrew clears the macOS quarantine flag on every install and update, so there is nothing else to
run. Downloading a DMG from Releases instead?
Tinycast is self-signed, so clear the flag once:
xattr -dr com.apple.quarantine "/Applications/Tinycast.app".
Accessibility — needed when Tinycast pastes or expands text into another app, and the only permission snippet keyword expansion needs. You're prompted when you first use a feature that needs it; grant access in System Settings → Privacy & Security → Accessibility. Snippets ship disabled, and keystrokes are matched locally, never stored and never sent anywhere.
See docs/development.md for the toolchain, build, packaging, release and website workflows. docs/ indexes everything else — architecture, engineering standards, the design system and one document per feature.
[!IMPORTANT] Open an issue before you write code — this is mandatory. Get the bug or the feature agreed on first; discussing it in the issue (or on Discord) is strongly encouraged. A PR with no agreed issue behind it gets closed however good the patch is, and the work is wasted. Typo and docs-only fixes are the one exception.
Read CONTRIBUTING.md first — it covers the memory budget every PR is held to, the before/after video requirement for visual changes, and why features get declined. Every PR fills in the pull request template. Security issues go through SECURITY.md, not the issue tracker.
Questions, ideas, or just want to follow along? Join the Discord.
Swift
90.9%
JavaScript
5.7%
TypeScript
2.1%
Tinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.
2,744
stars
438
commits
Swift
primary language
Sep 10, 2026
updated
A tiny, fully native macOS launcher — the essentials, without the bloat.
Around 5 MB on disk and under 100 MB of RAM — no Electron, no telemetry, no background CPU churn. Just SwiftUI + AppKit with zero dependencies. It's fast because there's nothing to it.
It also runs Raycast extensions — the real ones, rendered as native SwiftUI. No Node.js, no browser: JavaScriptCore ships with macOS, so that costs no extra binary size.
Tinycast is free, and it stays that way. If it earns a place in your daily flow, a one-off tip helps keep it actively maintained. GitHub Sponsors isn't available in my country, so please support here:
Payments are handled securely by Polar.sh.
First, add the tap:
brew trust --tap abue-ammar/tinycast # required for third-party taps
brew tap abue-ammar/tinycast
Then run the one line that matches your Mac:
| Your Mac | Install |
|---|---|
| Apple silicon, macOS 26 or newer | brew install --cask tinycast |
| Intel, macOS 26 | brew install --cask tinycast-universal |
| macOS 15 Sequoia | brew install --cask tinycast-sequoia |
Not sure which you have? Apple menu → About This Mac. Homebrew checks too, and refuses the wrong one.
Want early builds? brew install --cask tinycast@beta puts Tinycast Beta.app beside the stable
app, with its own settings and permissions. Apple silicon, macOS 26+.
Homebrew clears the macOS quarantine flag on every install and update, so there is nothing else to
run. Downloading a DMG from Releases instead?
Tinycast is self-signed, so clear the flag once:
xattr -dr com.apple.quarantine "/Applications/Tinycast.app".
Accessibility — needed when Tinycast pastes or expands text into another app, and the only permission snippet keyword expansion needs. You're prompted when you first use a feature that needs it; grant access in System Settings → Privacy & Security → Accessibility. Snippets ship disabled, and keystrokes are matched locally, never stored and never sent anywhere.
See docs/development.md for the toolchain, build, packaging, release and website workflows. docs/ indexes everything else — architecture, engineering standards, the design system and one document per feature.
[!IMPORTANT] Open an issue before you write code — this is mandatory. Get the bug or the feature agreed on first; discussing it in the issue (or on Discord) is strongly encouraged. A PR with no agreed issue behind it gets closed however good the patch is, and the work is wasted. Typo and docs-only fixes are the one exception.
Read CONTRIBUTING.md first — it covers the memory budget every PR is held to, the before/after video requirement for visual changes, and why features get declined. Every PR fills in the pull request template. Security issues go through SECURITY.md, not the issue tracker.
Questions, ideas, or just want to follow along? Join the Discord.
Swift
90.9%
JavaScript
5.7%
TypeScript
2.1%