A native macOS launcher for developers. Press ⌥Space, type, hit ↵. Instant, offline, and configured in one TOML file you can read top to bottom.
Free for personal use during the beta · macOS 14+ · Apple Silicon and Intel · signed and notarized
Release build on a GitHub Actions macOS runner, 25 October 2026. How we measure. The footer in the app shows the same timing on every search.
Not another extension store or AI subscription. A sharp tool you configure like the rest of your setup.
No Electron and no JavaScript runtime. Results update on every keystroke, and the footer tells you how long it took.
AI is just another action. Hand a question to Claude Code, Codex, or a local model through Ollama, in one keystroke. No Euclid AI plan, and none of it is required.
Your clipboard, history and index stay on disk. No account, no telemetry, and the licence is checked offline. Every network call, listed.
Every action is one shell line you can read in ~/.config/euclid/config.toml.
It reloads on save and --check-config lints it in CI.
Scripts in ~/.config/euclid/bin are on every action's PATH. Share a team config,
import Raycast and Alfred snippets, and let agents search Euclid over MCP.
Clipboard, browser history, files, notes, integrations, update checks: each is one line in the config. Page indexing stays off until you turn it on.
Everything you configure lives in ~/.config/euclid. Commit it with your dotfiles, and a new Mac is one git clone away.
~/.config/euclid/ ├── config.toml # actions, snippets, hotkeys ├── bin/ # your scripts └── plugins/ # one folder each $ cd ~/.config/euclid $ git init && git add . $ git commit -m "my euclid"
~/Library/Application Support/Euclid.include a team file and point [plugins] paths at a team repo; your own settings still win.Launchers tend to grow accounts, AI plans and extension stores. Euclid keeps the box small and hands you the keys.
Euclid works with the network unplugged. These are the only times it goes online.
[updates] check = false.Built in, on by default unless it says otherwise. Each one is a line in the config you can switch off.
1.5 gb in mb1697040000#ff8800 ⇄ rgb(), with a swatch↵ copies any answer{date} {clipboard} {uuid}⌘1–⌘9 and ⌘Kmake, npm, just, cargo in a new tabinclude, and Raycast/Alfred importSay what you want in plain words. Paste the prompt into Claude Code, Codex or any agent with a shell.
It reads the guide, writes the plugin, tests it with --try-plugin, and it shows up in the bar on save.
The prompt points at the plugin guide, the whole format on one page.
Euclid also keeps a copy at ~/.config/euclid/plugins/AGENTS.md.
Agent without web access? and paste it in first.
A folder with a plugin.toml and a script in any language that prints one JSON object per line.
No SDK, no build step, no store. Save it and it's in the bar.
# ~/.config/euclid/plugins/tokens/plugin.toml name = "Claude tokens" [badge] # a chip on the search bar run = "./today.sh" # prints "1.2M tok · $4.10" refresh_minutes = 5 click = 'ghostty-run tab npx -y ccusage@latest daily'
[source] adds items to search, refreshed in the background.[answer] replies to what you type, on a prefix or a regex.[badge] puts a live status on the bar.[[action]] adds commands to ⌘K.AGENTS.md: ask Claude Code or Codex, check it with --try-plugin.Ready to add, one command each:
githublinearslacktokenscurrencydefinecontactsshortcuts
euclid-bar --plugin add github
Browse plugins and starter prompts → · or paste a one-line action
Your query arrives as $1, passed as an argument, never pasted into the command.
[[action]] # ⌘1 and ⌘↵ name = "Ask Claude in a new Ghostty tab" run = 'ghostty-run tab claude "$1"' [[action]] # ⌘2 name = "Codex in a herdr split" run = 'herdr-run split codex "$1"' [[action]] # a local model, no API key name = "Ask Llama on this Mac" run = 'ghostty-run tab ollama run llama3.2 "$1"' [[action]] name = "Search GitHub code" alias = "gh" run = 'open "https://github.com/search?type=code&q=$EUCLID_QUERY_URL"' [[action]] name = "Pretty-print JSON to clipboard" run = 'printf %s "$1" | jq . | pbcopy'
Personal use is free during the beta, and stays free for everyone who installs before launch. After that it's US$29, once, with a 30-day trial that never locks.