# Agent Reach Channel Tier System: A Complete Guide to Tier 0, 1, and 2 Requirements

> Understand the Agent Reach channel tier system. Learn the requirements for Tier 0 zero-config, Tier 1 free credentials, and Tier 2 developer setup to get your channels operational fast.

- Repository: [Pnant/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
- Tags: deep-dive
- Published: 2026-06-07

---

**The Agent Reach channel tier system categorizes every platform integration into three levels—Tier 0 (zero-config), Tier 1 (requires free credentials), and Tier 2 (requires developer setup)—based on the configuration effort needed before the channel becomes operational.**

The Panniantong/Agent-Reach repository uses a standardized classification to indicate how much setup each platform channel requires. This **Agent Reach channel tier system** is implemented as an integer attribute on the base `Channel` class in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py), allowing the CLI doctor command to automatically audit which integrations are ready to use.

## How the Tier System Works

In [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py), the abstract `Channel` base class defines the `tier` attribute as an integer constraint validated by [`tests/test_channel_contracts.py`](https://github.com/Panniantong/Agent-Reach/blob/main/tests/test_channel_contracts.py), which enforces that all tier values must be 0, 1, or 2. This attribute signals to the diagnostic tooling how much external configuration the user must provide. The `python -m agent_reach.cli doctor` command, implemented in [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py), queries this attribute to generate health reports, grouping channels by their tier level and flagging missing requirements.

## The Three Tier Levels Explained

### Tier 0: Zero-Configuration Channels

Tier 0 channels work immediately after installing Agent Reach. These implementations rely on built-in tools like `yt-dlp`, system utilities, or public web interfaces that require no authentication. Because they use only local resources or platform public APIs without keys, users can instantiate and run these channels without editing configuration files.

### Tier 1: Free API Key or Cookie Required

Tier 1 channels require lightweight credentials such as free API tokens or browser cookies exported as environment variables or config file entries. While these platforms do not charge for API access, they mandate authentication via session cookies or simple tokens. Users must consult the platform-specific guides in the `agent_reach/guides/` directory (such as [`setup-twitter.md`](https://github.com/Panniantong/Agent-Reach/blob/main/setup-twitter.md)) to obtain and format these credentials correctly.

### Tier 2: Developer Setup and OAuth

Tier 2 represents the most involved configuration, requiring developer account registration, OAuth flows, or auxiliary binary installations. These channels often involve strict rate limiting, app approval processes, or external tool dependencies. The setup guides for Tier 2 channels (e.g., [`setup-linkedin.md`](https://github.com/Panniantong/Agent-Reach/blob/main/setup-linkedin.md)) walk users through creating developer applications and completing multi-step authentication workflows.

## Channel Inventory by Tier

The following concrete channel implementations set their `tier` attribute in their respective files under `agent_reach/channels/`:

**Tier 0 Channels (Zero-Config):**
- [`youtube.py`](https://github.com/Panniantong/Agent-Reach/blob/main/youtube.py) – Uses `yt-dlp` for public video metadata
- [`wechat.py`](https://github.com/Panniantong/Agent-Reach/blob/main/wechat.py) – Public web interface access
- [`web.py`](https://github.com/Panniantong/Agent-Reach/blob/main/web.py) – Generic web scraping utilities
- [`v2ex.py`](https://github.com/Panniantong/Agent-Reach/blob/main/v2ex.py) – Public forum API
- [`rss.py`](https://github.com/Panniantong/Agent-Reach/blob/main/rss.py) – Standard RSS feed parsing
- [`reddit.py`](https://github.com/Panniantong/Agent-Reach/blob/main/reddit.py) – Public read-only endpoints
- [`github.py`](https://github.com/Panniantong/Agent-Reach/blob/main/github.py) – Unauthenticated public repository access
- [`exa_search.py`](https://github.com/Panniantong/Agent-Reach/blob/main/exa_search.py) – Built-in search capabilities

**Tier 1 Channels (Free Key/Cookie):**
- [`xueqiu.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xueqiu.py) – Requires session cookie export
- [`xiaoyuzhou.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xiaoyuzhou.py) – Requires authentication cookie
- [`xiaohongshu.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xiaohongshu.py) – Requires browser cookie
- [`weibo.py`](https://github.com/Panniantong/Agent-Reach/blob/main/weibo.py) – Requires session token
- [`twitter.py`](https://github.com/Panniantong/Agent-Reach/blob/main/twitter.py) – Requires cookie authentication (see [`guides/setup-twitter.md`](https://github.com/Panniantong/Agent-Reach/blob/main/guides/setup-twitter.md))
- [`bilibili.py`](https://github.com/Panniantong/Agent-Reach/blob/main/bilibili.py) – Requires session credentials

**Tier 2 Channels (Full Setup):**
- [`linkedin.py`](https://github.com/Panniantong/Agent-Reach/blob/main/linkedin.py) – Requires developer app registration and OAuth (see [`guides/setup-linkedin.md`](https://github.com/Panniantong/Agent-Reach/blob/main/guides/setup-linkedin.md))
- [`douyin.py`](https://github.com/Panniantong/Agent-Reach/blob/main/douyin.py) – Requires developer account and binary setup

## Validating Configuration with the Doctor Command

The `doctor` module ([`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py)) programmatically inspects every channel's `tier` and `check()` method to report configuration status.

To list all channels and their tier assignments programmatically:

```python
from agent_reach.core import get_all_channels

for ch in get_all_channels():
    print(f"{ch.name:12} – tier {ch.tier}")

```

To run the comprehensive health check from the CLI:

```bash
python -m agent_reach.cli doctor

```

This outputs a tier-wise summary showing which channels are operational. For example, a Tier 1 channel missing its cookie will report `warn` status, while an unconfigured Tier 2 channel reports `off`.

You can also verify a specific channel's requirements directly:

```python
from agent_reach.channels.twitter import Twitter

status, msg = Twitter().check()
print(status, msg)   # -> "warn", "cookie"

```

## Summary

- The **Agent Reach channel tier system** uses integers 0-2 stored in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py) to classify setup complexity.
- **Tier 0** channels (YouTube, Reddit, GitHub, etc.) require zero configuration and work immediately.
- **Tier 1** channels (Twitter, Bilibili, Weibo, etc.) require free cookies or tokens supplied via environment variables or config files.
- **Tier 2** channels (LinkedIn, Douyin) demand developer account registration, OAuth flows, or additional binaries.
- The `python -m agent_reach.cli doctor` command aggregates tier data to generate health reports, while individual channel `check()` methods validate specific credentials.

## Frequently Asked Questions

### How do I know which tier a specific channel belongs to?

Each channel class defines a `tier` class attribute in its source file under `agent_reach/channels/`. You can inspect this value programmatically by importing the channel class and accessing `Channel.tier`, or by running the doctor command which groups all channels by their tier level.

### What happens if I try to use a Tier 1 channel without providing the required cookie?

The channel's `check()` method will return a warning status (typically `"warn"` with a message like `"cookie"`), and the doctor command will flag it as missing required configuration. The channel will not function until the credential is added to your Agent Reach configuration file or environment variables.

### Are Tier 2 channels more capable than Tier 0 or Tier 1 channels?

The tier indicates setup complexity, not functionality. Tier 2 channels like LinkedIn require OAuth due to platform restrictions, while Tier 0 channels access public data without authentication. All tiers provide full access to their respective platform capabilities once properly configured.

### Where can I find setup instructions for Tier 1 and Tier 2 channels?

Platform-specific setup guides are located in the `agent_reach/guides/` directory of the repository. For example, [`setup-twitter.md`](https://github.com/Panniantong/Agent-Reach/blob/main/setup-twitter.md) details cookie extraction for the Tier 1 Twitter channel, while [`setup-linkedin.md`](https://github.com/Panniantong/Agent-Reach/blob/main/setup-linkedin.md) explains the developer app registration required for the Tier 2 LinkedIn integration.