@seanmozeik/exa
v0.0.1
Published
Bun + Effect CLI for Exa search, answer, and deep research
Maintainers
Readme
exa
The Exa search API, shaped for agents. One binary, one flag, compact JSON that drops cleanly into an LLM loop.
bunx @seanmozeik/exa search --agent "effect v4 cli"[{ "title": "effect-ts/effect", "url": "https://github.com/Effect-TS/effect", "excerpt": "..." }]Why this exists
Most search APIs in 2026 ship an MCP server. MCP is great when an agent runtime already speaks it. When it doesn't, you want a CLI plus a skill file, and you want them stupid easy to wire up.
This CLI bakes its own skill into the binary. exa skill prints the full agent-facing guide: when to reach for search versus answer versus deep, every subcommand's canonical --agent invocation, return shapes, flags, and pitfalls. Pipe it into a Claude Code, Cursor, Aider, or Codex session and the model knows the product cold, no separate skill downloads, no MCP server to host.
What agents get
- Compact JSON, bounded tokens.
--agentstrips ANSI, kills pretty-print, returns one line per result. Excerpts auto-truncate to 280 chars so a noisy page doesn't blow your context window. - Three price tiers, three subcommands.
exa searchis the cheap workhorse,exa answeris the grounded one-shot,exa deepis the multi-step synthesis. The caller picks the cost-quality tradeoff at the command line instead of toggling SDK options. - Intuitive filters that work the same everywhere.
--include-domains exa.ai,docs.exa.ai,--start-published-date 2026-01-01,--category "research paper",--text-max-characters 8000. Same flag names across every subcommand that accepts them. - Keychain auth.
exa auth set-keystores the API key in your OS keychain viaBun.secrets. No.env, no~/.configtext file, no shell history leak. - Predictable exit codes.
0success,1API error,2bad args,3auth or rate-limit,4timeout,5no results. Wire it into any orchestrator.
A nice search engine for humans, too
Drop --agent and the same commands render in colour, with clickable URLs, highlighted excerpts, and inline citations. The terminal pretty-printer is the default. The agent JSON is the opt-in.
$ exa answer "what's new in Bun 1.3"
Bun 1.3 ships a stable test runner, native Postgres bindings, ...
Sources
→ Bun 1.3 release notes https://bun.com/blog/bun-v1.3
→ ...Install
Zero-install for one-offs:
bunx @seanmozeik/exa --helpPermanent install:
bun add -g @seanmozeik/exa
# or
brew install seanmozeik/tap/exa
# or from source
git clone https://github.com/seanmozeik/exa && cd exa && bun install && bun linkAuth
exa auth set-key "$EXA_API_KEY"
exa auth statusWithout a key, every command exits 3 before making any API request.
Surface
exa search <query> # neural / keyword / fast / deep / deep-reasoning
exa answer <query> # grounded one-shot with citations
exa deep <query> # multi-step synthesis with structured output
exa contents <url>... # full page text, highlights, summaries
exa similar <url> # findSimilar
exa people <query> # category:people
exa companies <query> # category:company
exa context <query> # token-efficient code snippets from GitHub / docs / Stack Overflow
exa research ... # Exa Research tasks
exa websets ... # Websets, the async verified-entity collections API
exa auth ... # set-key / status / clear
exa skill # bundled agent skill (when/why + full CLI surface)Every data command takes --agent (compact JSON), --json (pretty-printed full API response), or no flag (terminal-friendly human output).
For the full flag reference, run exa <command> --help or pipe exa skill into your agent.
Built with
Bun and Effect v4. Effect v4 is in beta, so expect the occasional sharp edge until the framework stabilises.
Development
bun install
bun run check # format, lint, typecheck
bun test
bun run buildLicense
MIT.
