# Understanding the Agent Reach Channel Tier System: Tier 0, 1, and 2 Explained

> Unlock the Agent Reach channel tier system. Understand Tier 0, Tier 1, and Tier 2 to optimize your setup and know when to use each channel for maximum efficiency with minimal configuration.

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

---

**Agent Reach organizes its platform channels into three tiers—0 (zero-config), 1 (free key required), and 2 (full setup required)—that indicate how much configuration a user must provide before the channel becomes operational.**

The Agent Reach channel tier system is a classification mechanism used in the `Panniantong/Agent-Reach` repository to communicate setup requirements for each platform integration. Defined in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py), the `tier` attribute is an integer (0, 1, or 2) stored on every channel class that determines whether the channel works out-of-the-box, requires a free credential, or needs complex registration.

## How the Three Tiers Work

The tier system operates as a simple contract: lower numbers mean less friction. Each concrete channel implementation in `agent_reach/channels/*.py` sets its own `tier` class attribute, which is then validated by unit tests in [`tests/test_channel_contracts.py`](https://github.com/Panniantong/Agent-Reach/blob/main/tests/test_channel_contracts.py) to ensure values remain within the 0–2 range.

### Tier 0: Zero-Configuration Channels

**Tier 0** channels are **zero-config** and work immediately after installing Agent Reach. These channels rely on built-in tools like `yt-dlp`, system utilities, or public web interfaces that do not require authentication.

Channels in this tier include:
- [`youtube.py`](https://github.com/Panniantong/Agent-Reach/blob/main/youtube.py)
- [`wechat.py`](https://github.com/Panniantong/Agent-Reach/blob/main/wechat.py)
- [`web.py`](https://github.com/Panniantong/Agent-Reach/blob/main/web.py)
- [`v2ex.py`](https://github.com/Panniantong/Agent-Reach/blob/main/v2ex.py)
- [`rss.py`](https://github.com/Panniantong/Agent-Reach/blob/main/rss.py)
- [`reddit.py`](https://github.com/Panniantong/Agent-Reach/blob/main/reddit.py)
- [`github.py`](https://github.com/Panniantong/Agent-Reach/blob/main/github.py)
- [`exa_search.py`](https://github.com/Panniantong/Agent-Reach/blob/main/exa_search.py)

You can invoke these channels without supplying API keys, cookies, or additional binaries.

### Tier 1: Free Key Required

**Tier 1** channels require a **free key**—typically a browser cookie export or lightweight API token that costs nothing but must be supplied manually. These channels cannot operate until the user adds the credential to the Agent Reach configuration file or an environment variable.

Channels in this tier include:
- [`xueqiu.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xueqiu.py)
- [`xiaoyuzhou.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xiaoyuzhou.py)
- [`xiaohongshu.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xiaohongshu.py)
- [`weibo.py`](https://github.com/Panniantong/Agent-Reach/blob/main/weibo.py)
- [`twitter.py`](https://github.com/Panniantong/Agent-Reach/blob/main/twitter.py)
- [`bilibili.py`](https://github.com/Panniantong/Agent-Reach/blob/main/bilibili.py)

Platform-specific setup guides in `agent_reach/guides/` (such as [`setup-twitter.md`](https://github.com/Panniantong/Agent-Reach/blob/main/setup-twitter.md)) document the exact cookie format and extraction steps required for each Tier 1 channel.

### Tier 2: Full Setup Required

**Tier 2** channels demand **full setup**, including developer account registration, OAuth application creation, or installation of auxiliary binaries. These represent the highest friction category and often involve multi-step wizard flows.

Channels in this tier include:
- [`linkedin.py`](https://github.com/Panniantong/Agent-Reach/blob/main/linkedin.py)
- [`douyin.py`](https://github.com/Panniantong/Agent-Reach/blob/main/douyin.py)

The [`agent_reach/guides/setup-linkedin.md`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/guides/setup-linkedin.md) file provides walkthroughs for completing the necessary registration and app creation workflows required to activate Tier 2 channels.

## Using the Doctor Command to Verify Tiers

The **doctor** command (`python -m agent_reach.cli doctor`) consults the `Channel.tier` attribute to generate a health report. It groups channels by tier and flags any missing credentials, producing output similar to:

```bash
python -m agent_reach.cli doctor

# Output:

# Tier 0 (zero-config): 9 channels → ok

# Tier 1 (needs free key): 6 channels → warn (missing cookies)

# Tier 2 (needs setup): 2 channels → off (not configured)

```

This diagnostic tool, implemented in [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py), allows developers to quickly identify which channels are ready for immediate use and which require additional configuration steps.

## Checking Channel Requirements Programmatically

You can inspect tier values and validation status programmatically using the Agent Reach API:

```python

# List all channels and their tiers

from agent_reach.core import get_all_channels

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

```

To check a specific channel's requirements:

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

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

```

The `check()` method returns a status string (`"ok"`, `"warn"`, or `"off"`) and a message indicating the specific missing requirement (e.g., `"cookie"` for Tier 1 channels).

## Summary

- **Tier 0** channels require zero configuration and work immediately using built-in tools or public APIs.
- **Tier 1** channels require a free key or cookie export that must be manually added to the Agent Reach configuration.
- **Tier 2** channels require extensive setup such as OAuth registration or additional binary installation.
- The **doctor** command uses the `tier` attribute defined in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py) to report health status grouped by configuration level.
- All tier values are enforced to be 0–2 by the test suite in [`tests/test_channel_contracts.py`](https://github.com/Panniantong/Agent-Reach/blob/main/tests/test_channel_contracts.py).

## Frequently Asked Questions

### How do I determine which tier a specific channel requires?

Inspect the `tier` class attribute on the channel instance or use the `get_all_channels()` function from `agent_reach.core` to list all channels with their assigned tiers. Alternatively, run the `python -m agent_reach.cli doctor` command, which groups output by tier and displays the status of every available channel.

### What is the difference between Tier 1 and Tier 2 channels?

**Tier 1** channels only require a free credential such as a browser cookie or lightweight token that can be exported without registration. **Tier 2** channels require more involved setup, such as creating a developer account, registering an OAuth application, or installing additional software dependencies before the channel becomes usable.

### How do I configure a Tier 1 channel like Twitter?

Export the required cookies from your browser and add them to the Agent Reach configuration file or environment variables as specified in [`agent_reach/guides/setup-twitter.md`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/guides/setup-twitter.md). Once the credential is present, run the doctor command to verify the channel status changes from `"warn"` to `"ok"`.

### Can I use Tier 0 channels without installing any API keys?

Yes. Tier 0 channels are designed to function immediately after installing the `Panniantong/Agent-Reach` package. They rely on public interfaces, built-in Python libraries, or system utilities like `yt-dlp` that do not require authentication tokens or external API access.