macOS · open source · v1 live

davidcast

A keyboard-first launcher for macOS. ⌥ Space anywhere → type → Enter. Apps, snippets, quicklinks, files, running Claude CLI sessions, Vite ports, Docker shells — one fuzzy search across all of them.

Free + open source~12 MB Tauri binary15+ plugins25+ themes
davidcast palette — built-in commands, snippets, quicklinks, apps and live Claude CLI agents in one fuzzy search

// listen

Conversations with Aria — show cover

conversations with aria · episode 03

davidcast — the keyboard-first launcher episode

~10 min · 10 May 2026

The davidcast episode of the AI-voiced podcast. Aria gives Brian the developer's tour — Tauri + Rust + React in a 12 MB binary, the live system probes (Claude CLI sessions, Vite ports, Docker shells as palette rows), the plain-JSON store, and the 25+ themes including Hot Dog Stand.

0:000:00
Aria · the AI agent · Brian · the AI journalistepisode page →

// why

I love Raycast. I just wanted a simpler version with more customisation — and an excuse to play with Tauri. Raycast's data lives in an encrypted SQLite database you can't script, diff or sync across tools. davidcast keeps everything as plain readable JSON from day one. The data model is sync-shaped (UUIDv7, tombstones, monotonic rev) so the cloud story can be bolted on without a migration. Vibed it in a weekend; it's been the daily driver since.

// what's in it

⌨️

One palette, everything

Apps, your snippets + quicklinks (with placeholders), files (fd-backed), clipboard history, screenshots with side preview, inline calculator. Fuzzy across all of them — no thinking about which plugin owns the answer.

🛰️

Live system probes

Running Claude CLI sessions (with git branch + dirty flag, ↵ jumps to the tab), Vite dev servers, Docker containers (↵ shell, type 'logs' for tail). Surfaced as palette rows, not in another app.

🪟

Window management

wm.left / right / top / bottom / maximize / center moves the frontmost (non-davidcast) window — Raycast halves without paying for Raycast.

📊

Local analytics

Every action gets appended to a JSONL log. Inline 'Show Analytics' rolls it into top queries, kind breakdown, success rate, sparkline. Never leaves the box. The ranker reads it back to land on iTerm when you type 'i'.

🎨

Themes — full visual identities

Not colour swaps. Each theme ships fonts, gradients, badge styles, keyboard-hint typography. 25+ built-ins; drop your own JSON in to add more.

🔐

Plain JSON, sync-shaped

Atomic writes, tombstones, monotonic rev. Diff it, version it, push it to a git remote (built-in). Cloud sync slots in later without a migration.

// themes

Live preview on hover. Switch with themes.switch. Add your own as JSON dropped into ~/.../davidcast/themes/.

Default Dark
⌥ Space
Synthwave '84
⌥ Space
Solarized Dark
⌥ Space
Matrix
⌥ Space
LCARS
⌥ Space
Pixel 8-bit
⌥ Space
Gameboy DMG
⌥ Space
DOOM
⌥ Space
Pokémon R/B
⌥ Space
Star Wars
⌥ Space
Stargate
⌥ Space
Red Dwarf
⌥ Space
GTA V
⌥ Space
Hot Dog Stand
⌥ Space
Comic Sans
⌥ Space

// built with

Tauri v2 shell (~12 MB binary). Rust for everything that touches the system — hotkey, paste bridge, file scanners, fd-backed search, lsof joins for live processes. React 19 + TypeScript for the palette and preferences (two webviews, one bundle). Fuse.js for fuzzy search with prefix-bonus + recents weighting. Plain JSON store at ~/Library/Application Support/davidcast/. Activation policy is Accessory — menu-bar only, no dock icon, hides on blur, hotkey feels instant.

Try it

Releases ship as signed (well — soon-to-be-signed) DMGs from GitHub Releases. Apple Silicon and Intel builds. The release workflow runs on every v*.*.* tag.

← back home

davidbroza.dev/davidcast