# How the Tier System Categorizes Channels in Agent-Reach

> Agent-Reach's tier system categorizes channels into tiers 0, 1, or 2 based on user configuration needs. Discover how different channels are classified from zero-config to full API registration.

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

---

**Agent-Reach classifies each platform channel into one of three tiers (0, 1, or 2) based on the amount of user configuration required before the channel becomes operational, ranging from zero-config tools to those requiring full API registration.**

The Panniantong/Agent-Reach repository implements a **tier-based classification system** that helps developers understand exactly what setup is required before they can use a specific platform channel. This article explains how the tier system categorizes channels in Agent-Reach based on the source code implementation, including the specific configuration thresholds that distinguish each tier.

## Understanding the Three-Tier Classification System

The tier system operates as a simple integer scale where lower values indicate less configuration overhead. Each tier represents a distinct threshold of user effort required to activate a channel.

### Tier 0 – Zero-Configuration Channels

**Tier 0** channels function immediately as long as the underlying CLI tool is present on the system. These require no API keys, tokens, or registration steps.

- **YouTube**: Uses `youtube-dl`-style tools without API keys.
- **Web**: Generic scraper using `curl`-like backends.
- **GitHub**: Reads public repositories without authentication.

### Tier 1 – Free-Key Required Channels

**Tier 1** channels need freely available credentials, such as cookies or public tokens, but do not require full application registration.

- **Twitter**: Requires an auth token or cookie, but no developer app.
- **Reddit**: Uses a free token with no zero-config path available (as noted in the module docstring).

### Tier 2 – Full Setup Required Channels

**Tier 2** demands complete registration workflows, including OAuth flows and client-secret management.

- **LinkedIn**: Requires a registered LinkedIn Developer app with OAuth credentials.

## Where Tier Configuration is Defined in the Source Code

The tier attribute is declared as a class-level constant in the base channel implementation. In [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py) (lines 35-36), each channel subclass defines its `tier` attribute as an integer value.

Channel implementations then override this value to specify their classification:

- [`agent_reach/channels/youtube.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/youtube.py) – Sets `tier = 0`
- [`agent_reach/channels/twitter.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/twitter.py) – Sets `tier = 1`
- [`agent_reach/channels/linkedin.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/linkedin.py) – Sets `tier = 2`
- [`agent_reach/channels/reddit.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/reddit.py) – Sets `tier = 1`
- [`agent_reach/channels/web.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/web.py) – Sets `tier = 0`
- [`agent_reach/channels/github.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/github.py) – Sets `tier = 0`

## Tier-Based Diagnostics and the Doctor Command

The diagnostic system leverages tier information to prioritize health checks. In [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py) (lines 66-89), the code groups diagnostic results by the `r["tier"]` field to generate tier-specific summaries.

When you run the diagnostic command:

```bash
python -m agent_reach.cli doctor

```

The output organizes channels under headings like "Tier 0 – zero-config" and "Tier 1 – needs free key", allowing you to quickly identify which channels require immediate attention.

## Working with Tiers Programmatically

You can inspect and filter channels by tier value in your own code.

Inspect a specific channel's tier:

```python
from agent_reach.channels.twitter import TwitterChannel
print(TwitterChannel.tier)   # → 1

```

Filter channels by configuration requirements:

```python
from agent_reach.channels import *
all_channels = [TwitterChannel(), RedditChannel(), YoutubeChannel()]
tier_0 = [ch for ch in all_channels if ch.tier == 0]
print([ch.name for ch in tier_0])   # ['youtube', 'web', 'github', ...]

```

## Summary

- The **tier system** in Agent-Reach uses three levels (0, 1, 2) to indicate configuration complexity.
- **Tier 0** requires only the presence of a CLI tool; **Tier 1** needs free tokens; **Tier 2** demands full API registration.
- Configuration is defined in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py) and implemented per channel in individual module files.
- The `doctor` command in [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py) uses tier data to prioritize diagnostic output.
- Channels like YouTube, Web, and GitHub are Tier 0, while LinkedIn requires Tier 2 setup.

## Frequently Asked Questions

### What are the three tiers in Agent-Reach?

Agent-Reach uses Tier 0 for zero-config channels, Tier 1 for channels requiring free keys or tokens, and Tier 2 for channels needing full API registration with OAuth flows. This classification helps users understand setup requirements before attempting to use a specific platform integration.

### How do I check which tier a channel belongs to?

Access the `tier` class attribute on any channel implementation. For example, `TwitterChannel.tier` returns `1`, indicating it requires a free authentication token. You can also run the `python -m agent_reach.cli doctor` command to see all channels grouped by their tier classification.

### Why does the tier system matter for troubleshooting?

The diagnostic tools in [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py) use tier values to prioritize which channels need immediate user attention. Tier 0 channels are considered "ready" if the binary exists, while Tier 2 channels will flag as needing configuration until you complete the OAuth registration process.

### Can a channel's tier change between versions?

While the tier is hardcoded as a class attribute in each channel file (such as [`agent_reach/channels/reddit.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/reddit.py)), the maintainers could adjust these values in future releases if platform APIs change their authentication requirements. Always check the source code or documentation for the specific version you are running.