Extra search tools for the omp coding agent. omp's built-in web_search covers everyday lookups; these tools add backends it exposes poorly or not at all. Each tool is one self-contained TypeScript file — no build step, no dependencies, survives omp upgrades.
Install only the ones you want.
| Tool | File | What it does | Credentials |
|---|---|---|---|
| Hacker News | tools/hackernews_search.ts |
Full-text search over HN stories and comments (Algolia), plus the current top/new/best/ask/show/job feeds (official API). | none |
| Feeds | tools/feed_search.ts |
RSS/Atom reader for news, blogs, and newsletters (Substack, Medium, lab blogs). Preset bundles for AI labs and tech news, or any feed URL. | none |
| arXiv | tools/arxiv_search.ts |
Searches arXiv papers by text, category (cs.AI, cs.LG, cs.CL, …), author, and date. | none |
tools/reddit_search.ts |
Search posts in named subreddits (default tech/AI bundle) via Arctic Shift, a third-party Reddit archive. No Reddit app approval. | none | |
| GitHub | tools/github_search.ts |
Repository search by keyword, creation window, stars, language, topic — the proxy for "trending" (which has no API). | none needed; GITHUB_TOKEN or gh auth raises the rate limit |
| Product Hunt | tools/producthunt_search.ts |
Recent/top launches by topic and date (the v2 API has no keyword search — it lists, it doesn't grep). | PRODUCTHUNT_API_TOKEN (Developer Token from the free app page — not the API Key) |
| X Search | tools/x_search.ts |
Searches public posts on X (Twitter) via xAI's native search. Keyword, semantic, user, and thread search; can optionally resolve each cited post to its real text and engagement numbers. | /login → xAI Grok (SuperGrok or X Premium+), or XAI_API_KEY |
| Exa Search | tools/exa_search.ts |
Full Exa API: search types (auto / fast / neural / deep), vertical categories (papers, people, companies, github), domain/date filters, answer-with-citations, URL contents fetch. omp's native Exa path only ever uses auto + summary. |
/login → Exa, or EXA_API_KEY |
| Parallel Search | tools/parallel_search.ts |
Full Parallel V1 API: search modes (turbo / basic / advanced) with objective + multi-query support, URL extract, and deep-research task processors (lite … ultra8x). omp's native path hardcodes the old beta fast mode. |
/login → Parallel, or PARALLEL_API_KEY |
git clone https://github.com/bnivanov/omp-extended-search
cd omp-extended-search
./install.sh hackernews feed arxiv # the free, no-key tools
./install.sh x # just X search
./install.sh exa parallel # just Exa and Parallel
./install.sh reddit # just Reddit
./install.sh all # everything
./install.sh # prints help, installs nothingOr grab a single tool without cloning the repo:
mkdir -p ~/.omp/agent/tools
curl -fsSL https://raw.githubusercontent.com/bnivanov/omp-extended-search/main/tools/x_search.ts \
-o ~/.omp/agent/tools/x_search.tsFor a project-level install, copy the file into <your-project>/.omp/tools/ instead. Either way, restart any open omp session afterwards so the new tools are discovered.
Just ask — the model should pick the tool from your wording:
- "What's on the front page of Hacker News right now?"
- "Check the ai-labs feeds for anything about agents this week"
- "Find recent arxiv papers on agent memory"
- "Search reddit for omp reviews"
- "Find new github repos about MCP servers"
- "What launched on Product Hunt this week?"
- "What's being said on X about the latest omp release?"
- "Use exa for search: recent papers on agent memory"
- "Use parallel for search: compare agent memory backends"
- "Use your normal web search and expand with Exa and Parallel"
These install as discoverable custom tools. In current omp they mount on the
xd:// virtual device bus — they are not top-level function-call tools
like built-in web_search, and there is no xdi:// scheme.
Canonical agent flow after install + session restart:
- Discover / schema:
readxd://hackernews_search(or whichever tool). - Execute:
writea JSON args object to the same path, e.g.xd://hackernews_searchwith body{"query":"omp","operation":"search","limit":10}. - The write result is the tool output. Do not expect a separate side channel.
# schema
read xd://hackernews_search
# run
write xd://hackernews_search
{"operation":"feed","feed":"top","count":10}
# other tools — same pattern
write xd://reddit_search
{"query":"omp","subreddits":["LocalLLaMA"],"sort":"top","time":"week","limit":10}
write xd://x_search
{"query":"omp agent","focus":"relevance","recency":"week","limit":10}
Common failure mode: writing to xdi://… or a bare filename creates a
normal file/directory in the workspace and never runs the tool. Always use
the exact prefix xd:// plus the tool name (hackernews_search,
x_search, …).
Built-in web_search may still appear as a native tool or as xd://web_search
depending on omp version — prefer whatever the session already exposes; do not
invent a third URI.
- Install the tool files into
~/.omp/agent/tools/(or a project.omp/tools/). - Restart omp — it picks up new tool files and mounts them under
xd://<name>. Sanity check:read xd://hackernews_search(or another installed tool) returns a schema. - Built-in
web_searchstays the default for everyday lookups. These tools add lanes omp covers poorly or not at all (X, HN, Reddit, PH, arXiv, feeds, full Exa/Parallel, GitHub discovery). You can mix them: “use normal web search and also check HN + Reddit.” - Optional plan-first gate — with the global confirm rule installed, the agent does not fire searches immediately. It proposes which sources to use, how to structure each request, and waits for your OK — one rule over web_search and every extended tool (including X). After approval, it invokes via
writetoxd://…as above.
Settings change cost, latency, and which corner of the internet you hit. If you'd rather shape the research in chat first:
./install.sh all --with-confirm-rule
# shorthand that also writes tools.approval.<tool>: allow (harmless under yolo):
./install.sh all --with-gateThat installs one global recommend-first agent rule (rules/omp-search-confirm.md) covering built-in web_search and every extended tool (HN, Reddit, PH, GitHub, arXiv, feeds, X, Exa, Parallel).
Intended UX: the model proposes sources + parameters in the chat and waits for your “go” / tweaks. It is not a per-call “Approve x_search?” popup. Keep tools.approvalMode: yolo (omp default for many setups) or per-tool allow so tools run quietly after you approve the plan in chat. Only set a tool to prompt if you want a hard UI dialog every call. Say “just search” anytime to skip the chat gate for one request.
- docs/hackernews.md — HN search + feed parameters
- docs/feed.md — feed bundles, filters, and how to build Substack/Medium/Google News feed URLs
- docs/arxiv.md — arXiv search parameters
- docs/reddit.md — Arctic Shift archive (no Reddit app) and search parameters
- docs/github.md — repo search qualifiers
- docs/producthunt.md — token setup and parameters
- docs/x.md — x_search settings: focus, reasoning effort, date windows, handle filters, post capture
- docs/exa.md — exa_search settings: types, contents packing, categories, filters, answer, contents
- docs/parallel.md — parallel_search settings: modes, extract, task processors
- rules/omp-search-confirm.md — global rule (
alwaysApply): propose source mix + settings acrossweb_searchand every extended tool, wait for chat OK. Not X-only.
Install into omp with ./install.sh … --with-confirm-rule (copies it to ~/.omp/agent/rules/), or copy the file there yourself.
x_searchused to live at omp-x-search. That repo is archived; this one is its home now.- Auth resolution in every tool: omp session credentials first, environment variables as fallback.
- License: MIT