Most tools that give an agent access to external sources ship every platform at once. You install twelve integrations to use two, and the agent carries instructions for all twelve in its context on every run.
agent-reach inverts that. Channels install one at a time from an index. Each one is a manifest rather than
code, so adding a channel is a few lines of TOML over a CLI that already exists. Everything returns the same
envelope, responses cache to disk, and --max-tokens bounds what reaches the model.
Nothing runs in the cloud and nothing is metered.
Install
uv tool install agent-reach
Then install the channels you want:
agent-reach install rss
agent-reach install youtube
install runs a pinned command from a fixed set of verbs (uv, pipx, go, brew). Manifests cannot
supply shell. Use --dry-run to see the exact command first.
Use
$ agent-reach get rss.feed https://wpmayor.com/feed/ --limit 3
$ agent-reach get youtube.transcript "https://youtu.be/VIDEO" --max-tokens 4000
$ agent-reach get wporg.reviews akismet --json
Every read command accepts --json, --limit, --max-tokens and --no-cache.
Check what is actually working before relying on it:
$ agent-reach doctor
ok rss auth:none feedparser
ok youtube auth:none yt-dlp 2026.07.28
DOWN wporg auth:none 'wporg' not on PATH
doctor --json is meant for agents, and the exit code is non-zero when any channel is down.
Channels
| Channel | Backend | Auth |
|---|---|---|
rss |
feedparser | none |
youtube |
yt-dlp | none |
The index stays small on purpose. Channels you add yourself live in a tap, described below.
Writing a channel
A channel over an existing CLI that emits JSON is a manifest and nothing else:
name = "reviews-cli"
description = "Product reviews from a CLI that already speaks JSON."
auth = "none"
cache_ttl = 1800
[backend]
type = "cli"
binary = "reviews-cli"
[backend.install]
verb = "go"
package = "github.com/you/reviews-cli/cmd/reviews-cli@latest"
[backend.probe]
args = ["--help"]
[[command]]
name = "recent"
args = ["reviews", "{query}", "--json"]
[command.map]
items = "$"
title = "title"
url = "url"
author = "author"
text = "text"
published_at = "created_at"
[command.map.engagement]
stars = "rating"
Declare [command.params] to map a flag through (limit = "--limit"). Anything undeclared is never
forwarded to the binary, so a channel cannot be talked into passing arbitrary flags.
Drop it in ~/.agent-reach/taps/<name>/ and it shows up in agent-reach list --all. A tap is any directory
of manifests, so private channels stay private.
Channels needing a login declare auth = "cookie", and both install and doctor say so. Those run as your
own account against platforms that ban for automation, so treat them as a deliberate choice.
Agent skill
agent-reach skill --write ~/.claude/skills/agent-reach/SKILL.md
The generated skill documents installed channels only, so context stays proportional to what you use. Regenerate it after installing or removing one.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_reach-0.1.0.tar.gz.
File metadata
- Download URL: agent_reach-0.1.0.tar.gz
- Upload date:
- Size: 14.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c97853ce23a5683229ed53c2c3c77e2d1eba88244790e039897b3508386935e0
|
|
| MD5 |
1ed5697d0c9031389b93b8949a4206bd
|
|
| BLAKE2b-256 |
dca811ab81e1aa502f3e50adf9aff571316d0515a941782cf5fc6f7f1c4bd461
|
Provenance
The following attestation bundles were made for agent_reach-0.1.0.tar.gz:
Publisher:
publish.yml on jgalea/agent-reach
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_reach-0.1.0.tar.gz -
Subject digest:
c97853ce23a5683229ed53c2c3c77e2d1eba88244790e039897b3508386935e0 - Sigstore transparency entry: 2324805947
- Sigstore integration time:
-
Permalink:
jgalea/agent-reach@9a39ffddfeac20f12d0b077d78995e5d84eed615 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jgalea
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9a39ffddfeac20f12d0b077d78995e5d84eed615 -
Trigger Event:
release
-
Statement type:
File details
Details for the file agent_reach-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agent_reach-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75c95e3af2aac442613123405013dbfc5fa77cc8ddca7491727593aa46bb199e
|
|
| MD5 |
1e5745204266a6fb959135a213713c30
|
|
| BLAKE2b-256 |
01abeb6c47c776933ae7a8de2b603e3f858728cc4b08dc88ce977e2d0c265fee
|
Provenance
The following attestation bundles were made for agent_reach-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on jgalea/agent-reach
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_reach-0.1.0-py3-none-any.whl -
Subject digest:
75c95e3af2aac442613123405013dbfc5fa77cc8ddca7491727593aa46bb199e - Sigstore transparency entry: 2324806186
- Sigstore integration time:
-
Permalink:
jgalea/agent-reach@9a39ffddfeac20f12d0b077d78995e5d84eed615 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jgalea
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9a39ffddfeac20f12d0b077d78995e5d84eed615 -
Trigger Event:
release
-
Statement type: