# How to Install Specific Channels in Agent Reach: CLI Guide and Source Code Deep Dive

> Install specific channels in Agent Reach using the CLI's --channels flag. Learn to install all channels or preview changes with a dry run. Get the CLI guide and source code deep dive.

- Repository: [Pnant/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
- Tags: how-to-guide
- Published: 2026-06-25

---

**Use the `agent-reach install` command with the `--channels` flag to install specific channels by passing a comma-separated list of channel names, use `all` to install every available channel, or add `--dry-run` to preview changes without modifying your system.**

Agent Reach is an open-source automation framework maintained in the Panniantong/Agent-Reach repository that orchestrates platform-specific tools through modular channels. Installing specific channels in Agent Reach allows you to selectively enable only the social media platforms and external tools your workflow requires, keeping your environment lean while ensuring each channel's dependencies are properly resolved.

## Channel Installation Architecture

### The CHANNEL_INSTALLERS Registry

In [`agent_reach/cli.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/cli.py), the CLI maintains a dictionary named `CHANNEL_INSTALLERS` (lines 197-206) that maps each installable channel to a dedicated installer function. When you invoke the install command, the CLI parses your `--channels` input, expands the special value `all` if present, and builds a set of requested channels (lines 197-216).

### Environment Detection

Before executing installers, the framework calls `_detect_environment()` (lines 555-595) to determine whether it is running on a desktop (`local`) or a headless server (`server`). This distinction matters because certain channels like `opencli` require GUI-driven Chrome sessions and are automatically skipped on server environments.

## How to Install Specific Channels

### Installing a Single Channel

To install a specific channel, pass its name to the `--channels` flag:

```bash
agent-reach install --channels=twitter

```

This triggers the `_install_twitter_deps` function (lines 680-700), which checks if the required binary exists using `shutil.which` and installs it via package managers like `pipx`, `uv`, or `npm` if missing.

### Installing Multiple Channels

Specify multiple channels as a comma-separated list:

```bash
agent-reach install --channels=twitter,reddit,bilibili

```

The CLI splits the input string, validates each channel against `CHANNEL_INSTALLERS`, and executes the corresponding installers sequentially in the loop at lines 262-266.

### Installing All Available Channels

To install every channel that has an auto-install step defined:

```bash
agent-reach install --channels=all

```

## Available Channels and Installers

The following channels are supported in the current Agent Reach codebase:

- **Twitter**: Handled by `_install_twitter_deps` (lines 680-700)
- **Xiaoyuzhou**: Handled by `_install_xiaoyuzhou_deps` (lines 637-652)
- **XiaoHongShu (XHS)**: Handled by `_install_xhs_deps` (lines 703-724)
- **OpenCLI**: Handled by `_install_opencli_deps` (lines 729-754)
- **Reddit**: Handled by `_install_reddit_deps` with fallback to `_install_rdt_cli` (lines 778-795)
- **Bilibili**: Handled by `_install_bili_deps` (lines 820-828)

Each installer performs prerequisite checks before invoking external package managers.

## Safety Flags and Verification

### Dry Run and Safe Mode

Before committing to installation, preview the actions:

```bash
agent-reach install --channels=twitter,reddit --dry-run

```

For a read-only check that reports missing tools without modifying the system, use `--safe`:

```bash
agent-reach install --channels=twitter --safe

```

### Post-Install Diagnostics

After the installation loop completes (lines 262-266), the CLI automatically invokes the diagnostic engine via `check_all(config)` and `format_report` (lines 311-319) to verify each channel's health and confirm that all external binaries are accessible in your PATH.

## Key Source Files

Understanding these files helps troubleshoot installation issues:

- [`agent_reach/cli.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/cli.py): Main entry point containing `CHANNEL_INSTALLERS`, argument parsing (lines 197-216), and the installation orchestration logic (lines 262-266)
- `agent_reach/channels/*`: Platform-specific modules implementing `can_handle`, `read`, `search`, and `check` methods for runtime channel operations
- [`agent_reach/config.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/config.py): Persists user settings including proxy configurations and API keys that optional channels may depend on
- [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py): Diagnostic engine that validates channel health after installation

## Summary

- Agent Reach uses the `agent-reach install --channels=<name>` command to install specific channels.
- The `CHANNEL_INSTALLERS` dictionary in [`agent_reach/cli.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/cli.py) maps channel names to specialized installer functions.
- Pass comma-separated values to install multiple channels or use `all` to install everything.
- The `--dry-run` and `--safe` flags let you preview or audit dependencies without system changes.
- Environment detection (`_detect_environment`) automatically skips GUI-dependent channels on headless servers.
- Post-installation diagnostics (`check_all`) verify that each channel's external tools are properly configured.

## Frequently Asked Questions

### Can I install additional channels after the initial setup?

Yes. Re-running `agent-reach install` with the new channel name will install only the missing components. Already-installed channels are detected via `shutil.which` checks and skipped automatically.

### Why is the OpenCLI channel not installing on my server?

OpenCLI requires a GUI-driven Chrome session. According to the source code in `_detect_environment()` (lines 555-595), the installer skips this channel automatically when running in `server` mode to prevent headless environment failures.

### What package managers does Agent Reach use to install channel dependencies?

The individual installer functions in [`agent_reach/cli.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/cli.py) leverage `pipx`, `uv`, `npm`, or simple file copy operations depending on the channel's requirements. Each installer checks for existing binaries before attempting installation.

### How do I verify that a channel installed correctly?

The CLI runs the doctor diagnostic automatically after installation via `check_all(config)` and `format_report` (lines 311-319). You can also run `agent-reach doctor` manually to check the status of all configured channels.