How the Agent-Reach Install Command Handles Optional Channel Dependencies with --channels
The install command parses the --channels flag as a comma-separated list, maps each channel name to a dedicated installer function in CHANNEL_INSTALLERS, and executes each installer exactly once while skipping OpenCLI-only channels on headless servers.
The Agent-Reach CLI provides a modular installation system that keeps core dependencies lightweight while allowing users to opt into specific platform integrations. When you run agent-reach install --channels, the _cmd_install function in agent_reach/cli.py orchestrates a targeted workflow that provisions only the requested optional channel back-ends.
Parsing and Normalizing the --channels Argument
Inside agent_reach/cli.py, the --channels option is defined at lines 75-78 as a comma-separated string (e.g., twitter,xiaohongshu).
The normalization logic at lines 13-18 splits the raw string, strips whitespace, and converts each entry to lowercase for case-insensitive matching. If the special value all appears, the CLI expands the set to include every key in the CHANNEL_INSTALLERS dictionary plus the cookie-only channels xueqiu and linkedin.
Mapping Channels to Installer Functions
The core orchestration relies on the CHANNEL_INSTALLERS dictionary constructed at lines 98-107. This static map associates each supported channel name with a dedicated installer function:
_install_twitter_deps_install_xiaoyuzhou_deps_install_opencli_deps(for Reddit, Facebook, Instagram)
This design ensures that each platform's specific tool (such as twitter-cli or rdt-cli) is provisioned by isolated, reusable logic.
Environment-Specific Channel Filtering
Before execution, the CLI detects the runtime environment. At lines 30-35, server environments trigger the removal of OpenCLI-only channels (opencli, facebook, instagram) because these require a desktop Chrome session that is unavailable in headless environments.
Executing the Installation Workflow
The installation loop at lines 71-78 iterates over the sorted requested_channels set. For each channel, the CLI looks up the corresponding function in CHANNEL_INSTALLERS and executes it exactly once.
Each installer function (e.g., _install_twitter_deps at lines 102-122) follows a consistent pattern:
- Check for existing tool presence using
shutil.which - Attempt automatic installation via pipx or uv if the tool is missing
- Fall back to manual instructions if automatic installation fails
Post-Install Cookie Import and Health Checks
After optional channels are installed, the CLI performs additional setup at lines 84-92. For channels requiring authentication (Twitter, Xueqiu, Bilibili), it auto-imports saved cookies from the configuration. Finally, it runs the doctor health check from agent_reach/doctor.py to verify that each channel is functional.
Practical Usage Examples
Install a Single Channel
agent-reach install --channels twitter
This checks system dependencies, executes _install_twitter_deps to install twitter-cli via pipx or uv, and imports any saved Twitter cookies.
Install Multiple Channels
agent-reach install --channels twitter,reddit
This installs both Twitter and Reddit dependencies. On local environments, it also installs OpenCLI (required by Reddit) via _install_opencli_deps.
Install All Optional Channels
agent-reach install --channels all
Expands to every entry in CHANNEL_INSTALLERS plus xueqiu and linkedin. OpenCLI-only channels are skipped on servers.
Dry-Run and Safe Mode
Preview changes without installing:
agent-reach install --dry-run --channels twitter,reddit
Print manual instructions without executing:
agent-reach install --safe --channels twitter
Summary
- The
--channelsflag accepts a comma-separated list that is normalized to lowercase at lines 13-18 ofagent_reach/cli.py. - A static
CHANNEL_INSTALLERSmap (lines 98-107) binds each channel name to a specific installer function. - Server environments automatically exclude OpenCLI-only channels (
opencli,facebook,instagram) at lines 30-35. - Each installer executes once, attempting automatic installation via pipx or uv before falling back to manual instructions.
- Post-installation steps include cookie imports and health verification via
agent_reach/doctor.py.
Frequently Asked Questions
What happens if I specify a channel that doesn't exist?
The CLI validates channel names against the CHANNEL_INSTALLERS keys. Invalid channels trigger an error before any installation begins, ensuring no partial or broken setups occur.
Can I install channels without automatic package managers?
Yes. Use the --safe flag to run in safe mode. This prints manual installation instructions for each missing tool without invoking pipx or uv, giving you full control over the installation process.
Why are some channels skipped on my server?
OpenCLI-based channels (Reddit, Facebook, Instagram) require a desktop Chrome browser. The CLI detects headless server environments at lines 30-35 and automatically excludes these channels to prevent installation failures.
How does the all keyword differ from listing channels individually?
The all keyword expands to every channel in CHANNEL_INSTALLERS plus the cookie-only channels (xueqiu, linkedin). It respects the same server-side exclusions (OpenCLI channels) and executes each installer exactly once, ensuring comprehensive coverage without duplication.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →