search-cli.
The command-line companion. A multi-provider search CLI in Rust, by paperfoot.
search-cli is the engine metasearch.sh grew out of — the same thirteen modes and the same provider registry, as a single static binary. Results are rank-fused across providers and emitted as JSON, so an agent can pipe them straight into its next step. search agent-info prints a machine-readable manifest of every command, flag, and exit code; search doctor checks which provider keys are configured and whether each upstream is reachable.
Install
$ curl -fsSL https://raw.githubusercontent.com/paperfoot/search-cli/master/install.sh | sh$ cargo install agent-searchSource and issues at github.com/paperfoot/search-cli; the crate is published as crates.io/crates/agent-search.
First run
$ search doctor $ search --mode news "solid-state batteries" --json $ search agent-info
Sign in from the terminal
search loginconnects the CLI to a metasearch.sh account without copying a key by hand. It prints a short confirmation code and opens your browser; you approve the request there, and the key lands in the CLI's config file (mode 0600) on this machine. Repeat logins from the same machine reuse the same key rather than piling up new ones.
$ search login $ search whoami $ search logout --revoke
On a headless box, search login --no-browser prints the URL to open elsewhere. search logout clears the local credentials; adding --revoke also kills the key server-side, so a lost laptop stops spending. Every key issued this way is listed in the dashboard under the machine it belongs to, and can be revoked there.
Which one do I want?
Two ways to use the same engine. search-cli runs on your machine with your own provider keys — you hold the accounts, pay each upstream directly, and nothing passes through us. metasearch.sh is the hosted version: one key, one prepaid balance, per-call metering, and a status page measured with billed probes.
| search-cli | metasearch.sh | |
|---|---|---|
| keys | one per provider, yours | one ms_live_ key |
| billing | thirteen upstream accounts | one USD balance, metered per call |
| runs | locally, single binary | hosted HTTPS API |
| good for | local agents, air-gapped setups, full control | fleets, CI, anything that hates key sprawl |
If you start with one and outgrow it, the modes and result shapes carry over — switching is a config change, not a rewrite. Hosted docs start at the Quickstart.