Cai vs Raycast
Raycast is a full productivity suite: launcher, window management, snippets, ~2,000 extensions, and AI (free local via Ollama, free cloud with your own API keys, or $8/mo Pro). Both apps can run on selected text and both speak MCP, in opposite directions: Raycast calls MCP tools from its AI chat; Cai is an MCP server your coding agent connects to, writing actions you approve once and run forever from ⌥C. Cai is simpler and more focused: a selection-first action layer that auto-detects what you selected, ships a bundled local model with zero install, is MIT-licensed, and routes results anywhere. If you want a full Spotlight replacement, use Raycast. If you want a focused action layer that's free, open-source, and just works on any selection, use Cai.
When to use Cai
- You want a selection-first workflow: the action menu appears from what you selected, auto-sorted by content type
- You want a bundled local model that works out of the box, no Ollama install required
- You want MIT-licensed and fully open-source, verifiable end-to-end
- You want your coding agent (Claude Code, Cursor, Codex) to write actions for you: approve each as a diff, then it runs locally, offline, no tokens
- You want GitHub and Linear as built-in actions, not per-server setup
- You want to author extensions in plain YAML, not ship a TypeScript build
- You want to route results anywhere (webhook, AppleScript, deeplink, shell) via a first-class destinations layer
- You want to chain actions: selection → AI prompt → script → Slack or webhook, saved as one ⌥C action
When to use Raycast
- You want a full Spotlight replacement with launcher, snippets, window management
- You rely on a large extension store and don't mind writing TypeScript (with a build step) to ship your own
- You're happy with a command-launcher workflow: open launcher, type command name, run
- You want Raycast-specific features: Quicklinks, Notes, Focus, Translator, themes
Feature comparison
| Feature | Cai | Raycast |
|---|---|---|
| Default primitive | Select → ⌥C → action menu | Command launcher (type to invoke) |
| Content-aware action surfacing | ✓ | ✕ |
| Bundled local AI model (no external server) | Ministral 3B (MLX, in-process) | Ollama required (separate install) |
| Local AI (free) | ✓ | Ollama integration (free) |
| Cloud AI | Via OpenRouter, API keys (BYO) | Free via BYOK (own keys), or $8/mo Pro; +$8/mo advanced models |
| Agent-authored actions (Claude Code, Cursor, Codex over MCP) | Approve a diff with capability chips; runs offline from ⌥C, no tokens | ✕ |
| MCP | MCP server: agents write your actions, you approve | MCP client: @-mention servers in AI chat (v1.98+) |
| GitHub & Linear issue creation | Built-in connectors (paste a token) | Via extensions / MCP servers |
| Secrets in actions | Keychain-backed {{secrets.NAME}} (shell commands only) | Per-extension preferences |
| Apple Intelligence support | ✓ | ✕ |
| Open source (MIT) | ✓ | ✕ |
| Extension authoring | YAML (any editor, no build) | React/TypeScript + build step |
| Extension ecosystem | Small, growing (YAML) | ~2,000 extensions |
| Custom output destinations (webhook, deeplink, AppleScript, shell) | ✓ | Via per-script code only |
| Action chains (selection → AI → script → destination, one keystroke) | ✓ | Per-extension code only (no native chaining) |
| Replace selection inline | ✓ | ✕ |
| Launcher / Spotlight replacement | ✕ | ✓ |
| Window management | ✕ | ✓ |
| Clipboard history | ✓ | ✓ |
| Shell commands on selected text | ✓ | ✓ |
| OCR / Image to text | ✓ | ✓ |