# Agent Reach Channel Tier System: How Zero-Config, Key-Required, and Complex Setup Channels Work

> Understand the Agent Reach channel tier system. Learn how zero-config, key-required, and complex setup channels function and which require user configuration for usability.

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

---

**Agent Reach uses a three-tier classification system (0, 1, 2) where tier 0 channels require no setup, while tier 1 and tier 2 channels both require user configuration before becoming usable.**

The Agent Reach framework organizes its platform integrations into distinct **channel tier** categories based on setup complexity. This tier system helps developers and users quickly understand which channels work immediately versus those needing configuration steps.

## Understanding the Three Channel Tiers

The tier system is defined in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py), where the base `Channel` class documents the `tier` attribute:

```python
tier: int = 0                     # 0=zero-config, 1=needs free key, 2=needs setup

```

### Tier 0: Zero-Config Channels

**Tier 0** channels operate without any manual configuration. As long as the underlying tool or dependency is installed, these channels function immediately.

- No API keys required
- No login flows
- No environment variables

The **Web (catch-all)** channel demonstrates this pattern in [`agent_reach/channels/web.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/web.py) with `tier = 0`.

### Tier 1: Free Key or Login Required

**Tier 1** channels need lightweight, typically free setup steps:

- Browser login flows
- Free API key imports
- Cookie exports from existing sessions

**Twitter/X** and **Reddit** both implement `tier = 1` in their respective channel files. Twitter requires either login credentials or exported cookies, while Reddit mandates an authenticated session.

### Tier 2: Complex Setup Required

**Tier 2** channels demand more involved configuration:

- Custom back-end installations
- Environment variable configuration
- Manual credential file placement

**LinkedIn** uses `tier = 2` in [`agent_reach/channels/linkedin.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/linkedin.py), reflecting its need for additional services beyond simple authentication.

## Which Tiers Require Setup?

| Tier | Setup Required? | Configuration Level |
|------|---------------|---------------------|
| 0 | **No** | None — works immediately |
| 1 | **Yes** | Free key, login, or cookie import |
| 2 | **Yes** | Custom back-ends, environment variables, credential files |

Any channel with **tier 1 or tier 2** will prompt users to complete configuration before the channel becomes usable.

## Checking Channel Status Programmatically

The [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py) module provides utilities to audit all channels and their tier-based readiness:

```python
from agent_reach.doctor import check_all, format_report
from agent_reach.config import Config

config = Config()                     # loads user config (if any)

results = check_all(config)           # collect channel health info

print(format_report(results))         # human‑readable summary

```

On a fresh install, tier 0 channels appear under **✅ 装好即用** (ready to use), while tier 1 and tier 2 channels list under **可选渠道（已安装）** (optional channels installed) only after completing their required setup steps.

## Channel Implementation Examples

### Tier 1: Twitter/X Channel

```python

# From agent_reach/channels/twitter.py

class TwitterChannel(Channel):
    tier = 1  # Requires login or cookie export

    name = "twitter"

```

### Tier 1: Reddit Channel

```python

# From agent_reach/channels/reddit.py

class RedditChannel(Channel):
    tier = 1  # Must be logged in

    name = "reddit"

```

### Tier 2: LinkedIn Channel

```python

# From agent_reach/channels/linkedin.py

class LinkedInChannel(Channel):
    tier = 2  # Needs additional setup

    name = "linkedin"

```

### Tier 0: Web Channel

```python

# From agent_reach/channels/web.py

class WebChannel(Channel):
    tier = 0  # No extra setup

    name = "web"

```

## Summary

- **Agent Reach channel tier system** classifies integrations by setup complexity using values 0, 1, and 2
- **Tier 0** channels need zero configuration and work immediately after dependency installation
- **Tier 1** channels require setup through free keys, browser logins, or cookie imports
- **Tier 2** channels demand complex configuration including custom back-ends and environment setup
- **Tiers 1 and 2 both require user action** before the channel becomes operational
- The base implementation resides in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py) with specific channel definitions in their respective files

## Frequently Asked Questions

### What is the difference between tier 1 and tier 2 in Agent Reach?

**Tier 1** requires lightweight configuration like free API keys or browser logins that don't cost money. **Tier 2** demands more substantial setup such as installing additional services, configuring environment variables, or managing credential files manually. Both tiers block channel usage until configuration completes.

### How do I check which channels need setup in my Agent Reach installation?

Run the diagnostic utilities from [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py). The `check_all()` function evaluates every channel against your current configuration and `format_report()` produces a human-readable summary showing which tier 1 and tier 2 channels remain unconfigured.

### Can I use a tier 2 channel without installing extra back-ends?

No. According to the source code in channels like [`agent_reach/channels/linkedin.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/linkedin.py), tier 2 channels explicitly depend on infrastructure beyond authentication. The framework enforces this by checking prerequisites during channel initialization and reporting unmet dependencies in diagnostic output.