A tiny, fully native macOS launcher — the essentials, without the bloat.
Around 3 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.
- App launcher — fuzzy-search and launch anything, pin favorites, see what's running, quit an app or every app at once.
- Custom commands — run named shell commands through fuzzy search or their own global hotkeys.
- Calculator — do math, unit and live currency conversions inline, right in the palette.
- Clipboard history — text and images, searchable, pasted back into the app you were using.
- Snippets — reusable Markdown templates with dynamic placeholders, arguments, nested references and optional keyword expansion.
- Global hotkey — one shortcut summons the palette from anywhere.
- Per-app hotkeys — bind a key to an app; press it to toggle (focus/hide).
brew trust --tap abue-ammar/tinycast # required for third-party taps
brew tap abue-ammar/tinycast
brew install --cask tinycast # stable
brew install --cask tinycast@beta # beta (installs side-by-side)Each channel is a separate app (Tinycast.app, Tinycast Beta.app) with its own settings and
permissions, so you can run stable next to the beta.
Tinycast is self-signed. Installing via Homebrew clears the macOS quarantine flag for you
automatically on every install and update, so there's nothing to run. (If you download the DMG
directly from Releases instead, clear it 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.
- Open Settings → General and record a global shortcut to summon Tinycast.
- Press it anywhere → the palette floats in. Type to filter, ↵ to launch.
- Tab switches between Apps and Clipboard; ↑/↓ move, Esc dismisses.
- Settings → Shortcuts — search an app or custom command and record a global shortcut.
- Settings → Snippets — enable the feature, then create templates with expansion keywords.
See docs/development.md for the toolchain, build, packaging, release, and website workflows, and docs/ui.md for the UI design system.
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.
Thank you to everyone who has put time into Tinycast — every fix and idea shows up in something people use every day.
