Agent Reach
Agent Reach is an open-source CLI
that gives an AI agent practical access to the live internet. It wraps a fleet
of free / open-source backends (Jina Reader, twitter-cli, yt-dlp, OpenCLI,
rdt-cli, bili-cli, gh, feedparser, Exa via MCP) behind one tool with a
primary + fallback architecture: when one backend fails, it transparently
switches to another, so you keep reading instead of debugging auth.
Use this skill to install Agent Reach on the user's machine, diagnose
which channels are live, and then read and search content from platforms a
plain WebFetch/curl can't reach.
$ARGUMENTS — if the user passed a URL or a search query, that's the target to
fetch or search once the tool is ready.
When to use this
Reach for Agent Reach when the content lives behind something a simple HTTP fetch can't handle:
- Login-walled or JS-heavy pages — tweets/threads, Xiaohongshu posts, LinkedIn, Reddit threads.
- Media transcripts — YouTube, Bilibili, podcasts (Xiaoyuzhou).
- Structured feeds and code hosts — RSS/Atom, GitHub issues/PRs/repos.
- Open-web research — global search via Exa when you need to find sources, not just read a known URL.
If a plain WebFetch of a public static page already works, just use that —
don't install a whole CLI for a one-off readable page.
Safety boundaries (read before installing)
Agent Reach modifies the user's environment, so honor these limits:
- Stay inside
~/.agent-reach/. Config, tokens, and tool repos all live there (~/.agent-reach/tools/). Temp work goes to/tmp/. Do not clone repos or drop files into the user's project workspace. - Never
sudowithout explicit user approval. If a step needs elevated permissions, stop and ask first. - Credentials stay local. Cookies/tokens are written to
~/.agent-reach/config.yamlwith600permissions and are never transmitted off-machine. Treat that file as secret — never print or commit it. - Account-ban risk on login channels. Twitter/X and Xiaohongshu can ban accounts used for automated reading. Tell the user to log in with a dedicated secondary account, never their primary.
- Prefer a dry run first. Use
--safe(preview, no changes) or--dry-runto show the user what will happen before mutating anything.
Install
Agent Reach is not vendored in this skill — it's installed from upstream. Detect the OS and pick an install path. Run these in the user's shell (the Bash tool); on Windows, run them under WSL or a POSIX shell since the upstream tool targets Unix-like environments.
Preferred — pipx (isolated):
pipx install https://github.com/Panniantong/agent-reach/archive/main.zip
agent-reach install --env=auto
Fallback — virtualenv (use if PEP 668 blocks a global install):
python3 -m venv ~/.agent-reach-venv
source ~/.agent-reach-venv/bin/activate
pip install https://github.com/Panniantong/agent-reach/archive/main.zip
agent-reach install --env=auto
agent-reach install detects local-vs-server environment, configures the search
backend, and registers the per-channel capability docs the agent reads later.
--env=auto lets it choose; pass --safe to preview without changes.
Optional channels
The default install brings up the no-login channels. Add login/extra channels explicitly:
# install specific channels
agent-reach install --env=auto --channels=opencli,twitter
# install everything
agent-reach install --env=auto --channels=all
Optional channels include opencli, twitter, xiaohongshu, reddit,
bilibili, xueqiu, xiaoyuzhou, and linkedin.
Verify & configure
agent-reach doctor # status of every channel (ready / needs login / error)
agent-reach watch # health + update check
agent-reach configure proxy # set an outbound proxy URL
agent-reach configure groq-key # set a Groq API key (for backends that use it)
agent-reach update # update an existing install
agent-reach uninstall [--keep-config] [--dry-run]
Always run agent-reach doctor after installing and report the result to the
user — it's the source of truth for what's reachable right now and what still
needs a login.
Channels at a glance
| Platform | Login required |
|---|---|
| Web pages (Jina Reader) | No |
| YouTube (transcripts) | No |
| RSS / Atom | No |
GitHub (gh) |
No (richer with login) |
| Global search (Exa) | No |
| Bilibili | No |
| V2EX | No |
| Xueqiu | No (configurable) |
| Twitter / X | Yes (ban risk — use a burner) |
| Yes | |
| Xiaohongshu | Yes (ban risk — use a burner) |
| Yes (configurable) | |
| Xiaoyuzhou (podcasts) | Yes |
Reading & searching
After install, fetch and search through the channels Agent Reach set up. The
agent-facing reading workflow is driven by the capability docs that
agent-reach install registers and that agent-reach doctor points to — read
those for the exact, current invocation of each channel rather than guessing,
because the upstream backends evolve.
In practice that means:
- Run
agent-reach doctorto confirm the channel for the target URL/query is ready (and log in first if it reports "needs login"). - Follow the registered capability instructions for that channel to read the
URL or run the search. For some channels you'll call the underlying tool the
installer placed on
PATHdirectly — e.g.yt-dlpfor YouTube transcripts,ghfor GitHub,bilifor Bilibili,rdtfor Reddit,openclifor Xiaohongshu, andmcporter/Exa for open-web search. - If a backend errors, let the primary→fallback design retry, or re-run
doctorto see which backend degraded.
If the user gave a target in $ARGUMENTS, route it to the matching channel once
doctor confirms it's ready, then return the extracted content.
Compatibility
Agent Reach works with any agent that can run shell commands — Claude Code, Cursor, Windsurf, OpenClaw, and others. The upstream backends target Unix-like environments; on Windows, drive it through WSL.
Credits
Agent Reach is created by Panniantong (@Neo_Reidlab,
pnt01@foxmail.com) and released under the MIT License —
https://github.com/Panniantong/agent-reach. All credit for the tool and its
backend integrations belongs to its author and contributors. This skill only
documents how to install and drive the upstream CLI; it does not vendor or
modify it.
Skill packaged by Rinu (l3ad3r1) in collaboration with Claude (Anthropic).