desearch-cli
A fast, scriptable CLI for Desearch AI — a contextual AI search engine that aggregates results across web, Hacker News, Reddit, Wikipedia, YouTube, Twitter/X, and arXiv with AI-synthesized answers and citations.
Single binary, no Python or Node.js dependencies.
Install
Homebrew (recommended)
brew tap roboalchemist/tap
brew install desearch-cli
Binary
Download the latest release for your platform from the releases page, then:
# macOS (Intel or Apple Silicon)
curl -L https://github.com/roboalchemist/desearch-cli/releases/latest/download/desearch-cli_Darwin_arm64.tar.gz | tar xz
sudo mv desearch-cli /usr/local/bin/
# Linux
curl -L https://github.com/roboalchemist/desearch-cli/releases/latest/download/desearch-cli_Linux_x86_64.tar.gz | tar xz
sudo mv desearch-cli /usr/local/bin/
Build from source
go install github.com/roboalchemist/desearch-cli@latest
Releases
Push a version tag to trigger an automated release:
git tag v0.1.0 && git push origin v0.1.0
GitHub Actions builds cross-platform binaries via GoReleaser and updates the Homebrew tap automatically.
Setup
Get an API key at https://console.desearch.ai, then configure it:
desearch-cli config --api-key <YOUR_KEY>
That's it. The API key is stored in your config file at ~/.config/desearch-cli/config.toml.
Basic Usage
desearch-cli "golang best practices"
Commands
search (default)
desearch-cli [query] [flags]
Search across all or specified sources. This is the default command, so desearch-cli "query" and desearch-cli search "query" are equivalent.
completion
desearch-cli completion <query> [flags]
Stream an AI-generated summary without per-source search results.
config
desearch-cli config [flags]
Manage API key and default settings.
version
desearch-cli version
Show version information.
ai
desearch-cli ai [query] [flags]
Streaming AI completion without per-source search results — streams the AI-generated response as it is generated.
docs
desearch-cli docs
Print the embedded README documentation to stdout. Useful for offline reference.
skill
desearch-cli skill [print|add]
Claude Code skill management. print outputs the SKILL.md to stdout; add installs the skill to ~/.claude/skills/desearch-cli/.
Search Flags
| Flag |
Type |
Description |
--query string |
string |
Search prompt (also the positional arg) |
--tool strings |
[]string |
Sources to query: web, hackernews, reddit, wikipedia, youtube, twitter, arxiv (default: all) |
--date-filter string |
string |
Predefined date range. One of: PAST_24_HOURS, PAST_2_DAYS, PAST_WEEK, PAST_2_WEEKS, PAST_MONTH, PAST_2_MONTHS, PAST_YEAR, PAST_2_YEARS |
--start-date string |
string |
ISO8601 UTC start bound, e.g. 2026-01-01T00:00:00Z |
--end-date string |
string |
ISO8601 UTC end bound |
--streaming |
bool |
Stream results as they arrive |
--result-type string |
string |
ONLY_LINKS or LINKS_WITH_FINAL_SUMMARY (default: LINKS_WITH_FINAL_SUMMARY) |
--count int |
int |
Results per source, 10-200 (default: 10) |
--system-message string |
string |
Override system prompt to influence AI behavior |
--json |
bool |
Output raw JSON instead of formatted human-readable |
--no-ai |
bool |
Skip AI completion/summary |
Config Flags
| Flag |
Description |
--api-key string |
Set API key (get at https://console.desearch.ai) |
--default-tool strings |
Set default sources (can be specified multiple times) |
--default-date-filter string |
Set default date filter |
--show |
Display current configuration (alias: desearch-cli config show) |
--clear |
Reset configuration to defaults |
Examples
Search with specific sources
desearch-cli "llm benchmarks" --tool web --tool hackernews
desearch-cli "rust vs go performance" --tool reddit --tool youtube
Date filtering
desearch-cli "AI news" --date-filter PAST_2_DAYS
desearch-cli "golang updates" --start-date 2026-01-01T00:00:00Z --end-date 2026-03-01T00:00:00Z
Limit results
desearch-cli "react patterns" --tool web --count 20
Custom system message
desearch-cli "explain quantum computing" --system-message "Summarize in simple terms for a non-technical audience"
Streaming output
desearch-cli "latest AI research" --streaming
AI completion only (no per-source results)
desearch-cli completion "what is bittensor"
desearch-cli completion "explain transformers" --system-message "Summarize in simple terms"
JSON output
desearch-cli "golangci-lint" --json | jq '.search[0].title'
desearch-cli "linux kernel news" --tool hackernews --json
Skip AI summary
desearch-cli "hacker news top posts" --no-ai
Set defaults
desearch-cli config --api-key sk-xxxx --default-tool web --default-date-filter PAST_WEEK
View current config
desearch-cli config show
Clear config
desearch-cli config clear
Configuration File
See docs/config.md for full configuration documentation including the TOML schema, JSONC schema with comments, environment variable overrides, and defaults table.
Config is stored at ~/.config/desearch-cli/config.toml (XDG spec).
By default, output is formatted with section headers per source:
=== WEB ===
[Article Title](https://example.com)
Article snippet text
[Another Article](https://another.com)
Another snippet
=== HACKERNEWS ===
[HN Post Title](https://news.ycombinator.com/item?id=123)
Post snippet
=== REDDIT ===
[Reddit Post Title](https://reddit.com/r/...)
Post snippet
=== TWITTER ===
@username
Tweet text
Link: https://x.com/...
42 likes, 12 retweets, 5 replies
=== AI SUMMARY ===
AI-generated synthesis of the results...
Twitter results include engagement metrics (likes, retweets, replies, quotes, bookmarks) when available.
Use --json for raw JSON output.
License
MIT
Issue Tracker
Report bugs and request features at: https://github.com/roboalchemist/desearch-cli/issues