Agent Reach Channel Tier System: Classifying Platforms as Zero‑Config vs. Requires Setup
Agent Reach assigns every supported platform to one of three tiers—0, 1, or 2—to indicate whether the channel works immediately out-of-the-box, requires a free API key or login session, or needs complex server-side configuration.
The Agent Reach repository (Panniantong/Agent-Reach) implements a channel tier system that classifies each supported platform based on its setup complexity. This system helps users instantly identify which channels are ready to use after installation and which require additional credentials or infrastructure. By categorizing platforms into zero‑config, free‑key, and complex‑setup tiers, the codebase provides clear visibility into operational readiness.
Understanding the Three Channel Tiers
Tier 0: Zero‑Config Channels
Tier 0 channels require no API keys, credentials, or configuration files. They function as soon as the required upstream tool is installed on your system.
According to the source code in agent_reach/channels/base.py, channels in this tier set tier = 0. Examples include:
- YouTube (
agent_reach/channels/youtube.py): Works immediately whenyt‑dlpis present. - Web (
agent_reach/channels/web.py): UsesJina Readerfor simple HTTP fetches. - RSS (
agent_reach/channels/rss.py): Reads feeds without authentication. - GitHub (
agent_reach/channels/github.py): Reads public API data without keys. - Exa Search (
agent_reach/channels/exa_search.py): Uses free‑tier Exa key optionally for basic search. - V2EX (
agent_reach/channels/v2ex.py): Scrapes public web pages.
Tier 1: Free Key or Login Required
Tier 1 channels need a free‑tier API key or an existing login session (usually via cookies) to function. The setup is lightweight but requires user action.
Channels in this tier set tier = 1 in their class definition:
- Twitter (
agent_reach/channels/twitter.py): Requires a cookie export to reuse an existing login session. - Reddit (
agent_reach/channels/reddit.py): Needs a logged‑in session via OpenCLI orrdt‑clicookies. - Xiaohongshu (
agent_reach/channels/xiaohongshu.py): Requires a user cookie for authenticated requests. - Bilibili (
agent_reach/channels/bilibili.py): Needs a free API key for some endpoints. - Xueqiu (
agent_reach/channels/xueqiu.py): Requires a free API key. - Xiaoyuzhou (
agent_reach/channels/xiaoyuzhou.py): Needs a free key as documented in the docstring.
Tier 2: Complex Setup Required
Tier 2 channels demand additional server‑side configuration, self‑hosted services, or paid plans before they become usable.
The LinkedIn channel demonstrates this classification:
- LinkedIn (
agent_reach/channels/linkedin.py): Setstier = 2because it requires thelinkedin‑scraper‑mcpserver to be installed and configured separately.
How Tiers Are Defined in the Source Code
The tier attribute is defined as a class variable in the abstract base class located at agent_reach/channels/base.py:
class Channel(ABC):
…
tier: int = 0 # 0 = zero-config, 1 = needs free key, 2 = needs setup
Each concrete channel implementation overrides this default value. For example, in agent_reach/channels/twitter.py, the class sets tier = 1, while agent_reach/channels/linkedin.py sets tier = 2.
This design allows the doctor command and other diagnostic tools to introspect channel requirements dynamically without hardcoding platform-specific logic.
Tier-Based Health Checks with the Doctor Command
The doctor command in agent_reach/doctor.py aggregates the status of all channels and groups the output by tier. When you run python -m agent_reach.cli doctor, the report first lists zero‑config channels, then shows optional channels that require additional setup.
The implementation separates output by tier:
# agent_reach/doctor.py (excerpt)
lines.append("[bold]✅ 装好即用:[/bold]") # Tier 0
…
lines.append("[bold]可选渠道(已安装):[/bold]") # Tier 1 & 2
Zero‑config channels appear first with a red “✗” if any are missing. The report then displays Tier 1 and Tier 2 channels that are installed and ready, allowing you to decide whether to unlock additional capabilities.
Querying Channel Tiers Programmatically
You can inspect channel tiers programmatically using the check_all function from agent_reach/doctor.py and the Config class from agent_reach/config.py:
from agent_reach.doctor import check_all, format_report
from agent_reach.config import Config
cfg = Config() # loads ~/.agent-reach/config.yaml
report = check_all(cfg) # dict keyed by channel name
# Print a concise list of zero-config channels that are ready
zero_cfg = {k: v for k, v in report.items() if v["tier"] == 0 and v["status"] == "ok"}
print("Zero-config channels ready:", ", ".join(zero_cfg))
# Show which channels still need a key or setup
needs_setup = {k: v for k, v in report.items() if v["tier"] in (1, 2) and v["status"] != "ok"}
for name, info in needs_setup.items():
print(f"{info['name']} (tier {info['tier']}) → {info['message']}")
Running this snippet produces output similar to:
Zero-config channels ready: YouTube, Web, RSS, GitHub, Exa Search, V2EX
Reddit (tier 1) → 未安装任何 Reddit 后端。(需要登录)
LinkedIn (tier 2) → 基本内容可通过 Jina Reader 读取。完整功能需要:
...
Summary
- Agent Reach uses three tiers (0, 1, and 2) to classify platform channels based on setup complexity.
- Tier 0 channels require only the installation of upstream tools like
yt‑dlporJina Reader. - Tier 1 channels need a free API key or login cookie, as seen in
agent_reach/channels/twitter.pyandagent_reach/channels/reddit.py. - Tier 2 channels demand complex server configuration, such as the LinkedIn MCP server requirement.
- The
agent_reach/doctor.pymodule uses these tiers to generate health reports that prioritize zero‑config channels.
Frequently Asked Questions
What is a Tier 0 channel in Agent Reach?
A Tier 0 channel is a platform that works immediately after you install the required upstream tool, with no API keys or credentials needed. Examples include YouTube, Web, RSS, GitHub, and V2EX, all of which set tier = 0 in their respective channel files.
How does Tier 1 differ from Tier 2?
Tier 1 channels require a free API key or an existing login session (cookies), while Tier 2 channels need additional server-side components, self-hosted services, or paid subscriptions. For instance, Twitter requires only a cookie export (Tier 1), whereas LinkedIn requires the linkedin‑scraper‑mcp server to be installed and configured (Tier 2).
How can I check which channels are configured on my system?
Run the command python -m agent_reach.cli doctor to execute the health check. This command aggregates all channel statuses from agent_reach/doctor.py and displays them grouped by tier, showing which zero‑config channels are ready and which Tier 1 or 2 channels require additional setup.
Where is the tier attribute defined in the codebase?
The tier attribute is defined as tier: int = 0 in the abstract Channel class located in agent_reach/channels/base.py. Each concrete channel implementation in agent_reach/channels/*.py overrides this value to specify its classification.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →