agentpool-cli 0.1.2__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/AGENTS.md +1 -1
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/CHANGELOG.md +19 -0
- agentpool_cli-0.1.2/README.md → agentpool_cli-0.1.4/PKG-INFO +50 -9
- agentpool_cli-0.1.2/PKG-INFO → agentpool_cli-0.1.4/README.md +30 -29
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/agent-cli-and-mcp.md +7 -4
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/agentpool-skill.md +27 -11
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/architecture.md +1 -1
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/mcp-clients.md +4 -3
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/mcp-tools.md +13 -4
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/onboarding.md +22 -13
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/quickstart.md +5 -3
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-codex.md +1 -1
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-cursor.md +1 -1
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/usage-detection.md +1 -1
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/pyproject.toml +2 -2
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/server.json +3 -3
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/__init__.py +1 -1
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/cli.py +79 -4
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/config.py +18 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/mcp/resources.py +3 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/mcp/tools.py +22 -3
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/mcp_server.py +38 -14
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/onboarding.py +6 -0
- agentpool_cli-0.1.4/src/agentpool/preferences.py +134 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/providers/base.py +23 -10
- agentpool_cli-0.1.4/src/agentpool/providers/registry.py +269 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/session_manager.py +71 -6
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/compute.py +1 -1
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/devin.py +14 -1
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_cli.py +16 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_mcp_surface.py +2 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_mcp_tools.py +126 -5
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_models_config_store.py +22 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_onboarding.py +4 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_stats_mcp.py +2 -2
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_usage_probes.py +21 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/uv.lock +1 -1
- agentpool_cli-0.1.2/src/agentpool/providers/registry.py +0 -139
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.cursor/mcp.json.example +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/CODEOWNERS +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/ISSUE_TEMPLATE/provider_probe.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/dependabot.yml +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/workflows/ci.yml +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/workflows/release.yml +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.gitignore +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.mcp.json.example +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/CONTRIBUTING.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/LICENSE +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/SECURITY.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/examples/README.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/examples.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/install.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/model-catalog.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/provider-adapters.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/provider-lifecycle-matrix.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/release.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/security.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-claude-code.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-copilot.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-cursor-cli.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-devin.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-droid.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/stats.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/usage-probe-matrix.md +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/scripts/install.sh +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/agent_io.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/artifacts.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/event_detection.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/__init__.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/__init__.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_approval_agent.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_common.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_completed_agent.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_idle_agent.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_limit_agent.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_patch_agent.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_question_agent.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/git_worktree.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/mcp/__init__.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/models.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/policy.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/provider_model_catalog.json +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/providers/__init__.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/redaction.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/runtimes/__init__.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/runtimes/base.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/runtimes/tmux.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/__init__.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/card.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/queries.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/render.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/window.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/store.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/__init__.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/_common.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/ccusage.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/claude.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/codex.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/codexbar.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/combine.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/copilot.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/parsers.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/probes.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/provider_parsers.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/summary.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/utils.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/provider_model_catalog_golden.json +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/stats_seed.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/usage/claude_usage.txt +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/usage/codex_rate_limits.json +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/usage/copilot_user.json +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/usage/devin_plan_status.json +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/integration/test_fake_tmux_flow.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_agent_io.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_event_policy.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_redaction.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_stats_cli.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_stats_window.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_usage_provider_parsers.py +0 -0
- {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_usage_summary_enrichment.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Talk to the user as a fellow senior developer.
|
|
2
2
|
|
|
3
|
-
AgentPool is a control plane, not an auto-router. Keep provider/model judgment with the primary agent.
|
|
3
|
+
AgentPool helps users get the most out of the coding-agent subscriptions they pay for: surface each provider's live usage limits and offload work to whichever still has headroom when the active provider nears its 5-hour or weekly cap. It is a control plane, not an auto-router. Keep provider/model judgment with the primary agent.
|
|
4
4
|
|
|
5
5
|
Project guardrails:
|
|
6
6
|
|
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.1.4 - 2026-05-31
|
|
6
|
+
|
|
7
|
+
- Add Markdown delegation preferences at `~/.agentpool/preferences.md`, surfaced
|
|
8
|
+
through the CLI, MCP tools, MCP resources, inventory, usage summaries, model
|
|
9
|
+
listings, and spawn responses so agents can read one user-owned preference
|
|
10
|
+
source before choosing whether and how to use AgentPool.
|
|
11
|
+
- Bound live MCP usage refreshes so slow provider probes return partial data
|
|
12
|
+
instead of hanging the host session.
|
|
13
|
+
- Remove deprecated `gemini-cli` from the default provider set after Google's
|
|
14
|
+
transition to Antigravity CLI.
|
|
15
|
+
|
|
16
|
+
## 0.1.3 - 2026-05-29
|
|
17
|
+
|
|
18
|
+
- Reposition docs and descriptions around the primary value: making full use of
|
|
19
|
+
the coding-agent subscriptions you pay for by offloading work to a provider
|
|
20
|
+
with headroom when the active one nears its limit. Updates README, package and
|
|
21
|
+
registry descriptions, onboarding/skill/quickstart/architecture docs, the CLI
|
|
22
|
+
help, and the MCP server instructions. No behavior change.
|
|
23
|
+
|
|
5
24
|
## 0.1.2 - 2026-05-29
|
|
6
25
|
|
|
7
26
|
- Fix MCP namespace casing to `io.github.sidduHERE/agentpool` in `server.json`
|
|
@@ -1,12 +1,41 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentpool-cli
|
|
3
|
+
Version: 0.1.4
|
|
4
|
+
Summary: Make full use of every coding-agent subscription you pay for: a local CLI + MCP server that surfaces live usage limits and offloads work to providers with headroom.
|
|
5
|
+
Author: AgentPool contributors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Python: >=3.11
|
|
9
|
+
Requires-Dist: mcp<2,>=1.27
|
|
10
|
+
Requires-Dist: pydantic>=2
|
|
11
|
+
Requires-Dist: pyyaml>=6
|
|
12
|
+
Requires-Dist: rich>=13
|
|
13
|
+
Requires-Dist: typer>=0.12
|
|
14
|
+
Provides-Extra: card
|
|
15
|
+
Requires-Dist: pillow>=10; extra == 'card'
|
|
16
|
+
Provides-Extra: dev
|
|
17
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
18
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
|
|
1
21
|
# AgentPool
|
|
2
22
|
|
|
3
23
|
<!-- mcp-name: io.github.sidduHERE/agentpool -->
|
|
4
24
|
|
|
5
|
-
|
|
25
|
+
You pay for several coding-agent subscriptions — Codex, Claude Code, Cursor,
|
|
26
|
+
Copilot, Devin, Droid — but you work in one at a time. The rest sit idle until
|
|
27
|
+
your active provider hits its 5-hour or weekly limit, and then you stall.
|
|
28
|
+
|
|
29
|
+
AgentPool is a local Python CLI and MCP server that reads the live usage limits
|
|
30
|
+
of every coding-agent subscription you have and lets you — or your primary
|
|
31
|
+
agent — offload work to whichever one still has headroom. Use the capacity you
|
|
32
|
+
already pay for, and keep moving instead of hard-stopping at a cap.
|
|
6
33
|
|
|
7
|
-
It is a control plane, not an auto-router. AgentPool exposes live provider,
|
|
8
|
-
session, artifact, lease, and best-effort usage/capacity state
|
|
9
|
-
|
|
34
|
+
It is a control plane, not an auto-router. AgentPool exposes live provider,
|
|
35
|
+
model, session, artifact, lease, and best-effort usage/capacity state, and runs
|
|
36
|
+
the work you offload as explicit worker sessions. You or your agent still choose
|
|
37
|
+
the provider and model — AgentPool makes the limits visible so that choice is
|
|
38
|
+
informed, never automatic.
|
|
10
39
|
|
|
11
40
|
The v0.1 alpha posture is conservative:
|
|
12
41
|
|
|
@@ -81,8 +110,13 @@ agentpool doctor --deep --privacy
|
|
|
81
110
|
agentpool setup all
|
|
82
111
|
agentpool smoke --provider fake-question --repo . --json
|
|
83
112
|
agentpool inventory --json
|
|
113
|
+
agentpool usage-summary --refresh --json
|
|
84
114
|
```
|
|
85
115
|
|
|
116
|
+
That last command is the one you will run most: it shows every configured
|
|
117
|
+
subscription's remaining limit, reset time, and a `usable` flag, so you can see
|
|
118
|
+
at a glance which provider to offload the next task to.
|
|
119
|
+
|
|
86
120
|
Start an explicitly selected read-only worker:
|
|
87
121
|
|
|
88
122
|
```bash
|
|
@@ -144,6 +178,9 @@ and the opt-in `get_usage_summary` tool.
|
|
|
144
178
|
The default buffer is `policy.min_remaining_percent = 10`. If any reported
|
|
145
179
|
quota window is below that buffer, the provider row is marked unusable for the
|
|
146
180
|
summary. AgentPool still does not pick an alternative provider for you.
|
|
181
|
+
MCP usage refreshes are intentionally bounded and may return `partial=true`;
|
|
182
|
+
use the CLI commands above when a shell-capable agent needs a complete live
|
|
183
|
+
refresh.
|
|
147
184
|
|
|
148
185
|
## Provider Matrix
|
|
149
186
|
|
|
@@ -255,11 +292,15 @@ MCP-connected agents should read these once on connect:
|
|
|
255
292
|
|
|
256
293
|
- `agentpool://onboarding`
|
|
257
294
|
- `agentpool://skill.md`
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
295
|
+
- `agentpool://preferences.md`
|
|
296
|
+
|
|
297
|
+
Then use tools for live operations. The user-owned preferences file also shows
|
|
298
|
+
up through `agentpool preferences` and `get_delegation_preferences()`. It may
|
|
299
|
+
say to use your native subagent system instead of AgentPool for some tasks. The
|
|
300
|
+
default MCP toolset is deliberately small: inventory, usage snapshot, usage
|
|
301
|
+
summary, provider models, preferences, spawn, observe, send, interrupt,
|
|
302
|
+
collect, artifact manifest, transcript paging, and terminate. Add opt-in
|
|
303
|
+
toolsets with `agentpool mcp --toolsets default,stats,sessions,leases,worktrees`.
|
|
263
304
|
|
|
264
305
|
Coding agents with shell access should prefer the CLI path. It is more
|
|
265
306
|
token-efficient because large worker output stays in artifact files and
|
|
@@ -1,32 +1,21 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: agentpool-cli
|
|
3
|
-
Version: 0.1.2
|
|
4
|
-
Summary: Local MCP-exposed control plane for live coding-agent sessions.
|
|
5
|
-
Author: AgentPool contributors
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Requires-Python: >=3.11
|
|
9
|
-
Requires-Dist: mcp<2,>=1.27
|
|
10
|
-
Requires-Dist: pydantic>=2
|
|
11
|
-
Requires-Dist: pyyaml>=6
|
|
12
|
-
Requires-Dist: rich>=13
|
|
13
|
-
Requires-Dist: typer>=0.12
|
|
14
|
-
Provides-Extra: card
|
|
15
|
-
Requires-Dist: pillow>=10; extra == 'card'
|
|
16
|
-
Provides-Extra: dev
|
|
17
|
-
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
18
|
-
Requires-Dist: pytest>=8; extra == 'dev'
|
|
19
|
-
Description-Content-Type: text/markdown
|
|
20
|
-
|
|
21
1
|
# AgentPool
|
|
22
2
|
|
|
23
3
|
<!-- mcp-name: io.github.sidduHERE/agentpool -->
|
|
24
4
|
|
|
25
|
-
|
|
5
|
+
You pay for several coding-agent subscriptions — Codex, Claude Code, Cursor,
|
|
6
|
+
Copilot, Devin, Droid — but you work in one at a time. The rest sit idle until
|
|
7
|
+
your active provider hits its 5-hour or weekly limit, and then you stall.
|
|
8
|
+
|
|
9
|
+
AgentPool is a local Python CLI and MCP server that reads the live usage limits
|
|
10
|
+
of every coding-agent subscription you have and lets you — or your primary
|
|
11
|
+
agent — offload work to whichever one still has headroom. Use the capacity you
|
|
12
|
+
already pay for, and keep moving instead of hard-stopping at a cap.
|
|
26
13
|
|
|
27
|
-
It is a control plane, not an auto-router. AgentPool exposes live provider,
|
|
28
|
-
session, artifact, lease, and best-effort usage/capacity state
|
|
29
|
-
|
|
14
|
+
It is a control plane, not an auto-router. AgentPool exposes live provider,
|
|
15
|
+
model, session, artifact, lease, and best-effort usage/capacity state, and runs
|
|
16
|
+
the work you offload as explicit worker sessions. You or your agent still choose
|
|
17
|
+
the provider and model — AgentPool makes the limits visible so that choice is
|
|
18
|
+
informed, never automatic.
|
|
30
19
|
|
|
31
20
|
The v0.1 alpha posture is conservative:
|
|
32
21
|
|
|
@@ -101,8 +90,13 @@ agentpool doctor --deep --privacy
|
|
|
101
90
|
agentpool setup all
|
|
102
91
|
agentpool smoke --provider fake-question --repo . --json
|
|
103
92
|
agentpool inventory --json
|
|
93
|
+
agentpool usage-summary --refresh --json
|
|
104
94
|
```
|
|
105
95
|
|
|
96
|
+
That last command is the one you will run most: it shows every configured
|
|
97
|
+
subscription's remaining limit, reset time, and a `usable` flag, so you can see
|
|
98
|
+
at a glance which provider to offload the next task to.
|
|
99
|
+
|
|
106
100
|
Start an explicitly selected read-only worker:
|
|
107
101
|
|
|
108
102
|
```bash
|
|
@@ -164,6 +158,9 @@ and the opt-in `get_usage_summary` tool.
|
|
|
164
158
|
The default buffer is `policy.min_remaining_percent = 10`. If any reported
|
|
165
159
|
quota window is below that buffer, the provider row is marked unusable for the
|
|
166
160
|
summary. AgentPool still does not pick an alternative provider for you.
|
|
161
|
+
MCP usage refreshes are intentionally bounded and may return `partial=true`;
|
|
162
|
+
use the CLI commands above when a shell-capable agent needs a complete live
|
|
163
|
+
refresh.
|
|
167
164
|
|
|
168
165
|
## Provider Matrix
|
|
169
166
|
|
|
@@ -275,11 +272,15 @@ MCP-connected agents should read these once on connect:
|
|
|
275
272
|
|
|
276
273
|
- `agentpool://onboarding`
|
|
277
274
|
- `agentpool://skill.md`
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
275
|
+
- `agentpool://preferences.md`
|
|
276
|
+
|
|
277
|
+
Then use tools for live operations. The user-owned preferences file also shows
|
|
278
|
+
up through `agentpool preferences` and `get_delegation_preferences()`. It may
|
|
279
|
+
say to use your native subagent system instead of AgentPool for some tasks. The
|
|
280
|
+
default MCP toolset is deliberately small: inventory, usage snapshot, usage
|
|
281
|
+
summary, provider models, preferences, spawn, observe, send, interrupt,
|
|
282
|
+
collect, artifact manifest, transcript paging, and terminate. Add opt-in
|
|
283
|
+
toolsets with `agentpool mcp --toolsets default,stats,sessions,leases,worktrees`.
|
|
283
284
|
|
|
284
285
|
Coding agents with shell access should prefer the CLI path. It is more
|
|
285
286
|
token-efficient because large worker output stays in artifact files and
|
|
@@ -48,15 +48,18 @@ The default MCP surface is narrow:
|
|
|
48
48
|
agentpool mcp
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
It exposes inventory,
|
|
52
|
-
observe, send, interrupt, artifact manifest, transcript
|
|
53
|
-
terminate.
|
|
51
|
+
It exposes inventory, compact usage summaries, cached raw usage snapshots,
|
|
52
|
+
provider models, spawn, observe, send, interrupt, artifact manifest, transcript
|
|
53
|
+
paging, collect, and terminate.
|
|
54
|
+
Explicit MCP refreshes avoid interactive provider TUI probes so a host like
|
|
55
|
+
Claude Code does not accidentally launch a nested Claude `/usage` UI inside
|
|
56
|
+
itself.
|
|
54
57
|
|
|
55
58
|
Opt into more:
|
|
56
59
|
|
|
57
60
|
```bash
|
|
58
61
|
agentpool mcp --toolsets default,stats,sessions,leases,worktrees
|
|
59
|
-
agentpool mcp --tools
|
|
62
|
+
agentpool mcp --tools validate_model_catalog
|
|
60
63
|
AGENTPOOL_MCP_LOCKDOWN=1 agentpool mcp
|
|
61
64
|
```
|
|
62
65
|
|
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
# AgentPool Skill
|
|
2
2
|
|
|
3
|
+
AgentPool lets you spread work across the coding-agent subscriptions the user
|
|
4
|
+
pays for. When your current provider is near its 5-hour or weekly limit, check
|
|
5
|
+
each subscription's live usage and offload the next task to one that still has
|
|
6
|
+
headroom — using paid capacity that would otherwise sit idle.
|
|
7
|
+
|
|
3
8
|
Use this when you have the AgentPool MCP server or local `agentpool` CLI and
|
|
4
9
|
need to delegate coding-agent work.
|
|
5
10
|
|
|
6
11
|
## Rules
|
|
7
12
|
|
|
8
13
|
- AgentPool is a control plane, not an auto-router.
|
|
14
|
+
- Read the user's AgentPool preferences before deciding whether to delegate:
|
|
15
|
+
- CLI: `agentpool preferences`
|
|
16
|
+
- MCP: `get_delegation_preferences()` or `agentpool://preferences.md`
|
|
17
|
+
- These preferences may tell you to use your own native subagent system
|
|
18
|
+
instead of AgentPool for some tasks.
|
|
9
19
|
- Choose provider and model explicitly. Never use `provider=auto`.
|
|
10
20
|
- Prefer the CLI when you have shell access; use MCP for MCP-native/no-shell hosts.
|
|
11
21
|
- Run or read usage before delegation:
|
|
12
22
|
- CLI: `agentpool usage-summary --refresh --json`
|
|
13
|
-
- MCP: `
|
|
14
|
-
`get_usage_snapshot
|
|
23
|
+
- MCP: `get_usage_summary(refresh=false)` for compact cached state. Use
|
|
24
|
+
`get_usage_snapshot` only when you need raw snapshots. Avoid asking MCP to
|
|
25
|
+
run interactive provider TUI probes from inside that same provider's host
|
|
26
|
+
session; run a CLI refresh from a normal shell when you need a complete
|
|
27
|
+
live refresh. MCP `refresh=true` is bounded and can return `partial=true`
|
|
28
|
+
with unknown rows for slow providers.
|
|
15
29
|
- Treat usage rows as a provider-id map. They are not ordered and not ranked.
|
|
16
30
|
- Inspect provider models before spawning when the model is not already chosen:
|
|
17
31
|
- CLI: `agentpool models --provider <provider-id>`
|
|
@@ -29,6 +43,7 @@ need to delegate coding-agent work.
|
|
|
29
43
|
|
|
30
44
|
```bash
|
|
31
45
|
agentpool usage-summary --refresh --json
|
|
46
|
+
agentpool preferences
|
|
32
47
|
agentpool models --provider <provider-id> --json
|
|
33
48
|
agentpool spawn --provider <provider-id> --model <model-id> --repo . --task "<narrow task>" --isolation read_only --json
|
|
34
49
|
agentpool observe <session-id> --wait-for completed,error,question,approval_prompt --timeout 120 --json
|
|
@@ -53,15 +68,16 @@ without dumping the whole file into context.
|
|
|
53
68
|
|
|
54
69
|
## Typical MCP Flow
|
|
55
70
|
|
|
56
|
-
1. `
|
|
57
|
-
2. `
|
|
58
|
-
3. `
|
|
59
|
-
4. `
|
|
60
|
-
5. `
|
|
61
|
-
6. `
|
|
62
|
-
7. `
|
|
63
|
-
8. `
|
|
64
|
-
9. `
|
|
71
|
+
1. `get_delegation_preferences()`
|
|
72
|
+
2. `get_usage_summary(provider_id=..., refresh=false)`
|
|
73
|
+
3. `get_provider_models(provider_id=...)`
|
|
74
|
+
4. `spawn_worker(provider_id=..., model=..., repo_path=..., task=..., isolation="read_only")`
|
|
75
|
+
5. `observe_worker(session_id=..., wait_for=["completed","error","question","approval_prompt"], timeout_seconds=120)`
|
|
76
|
+
6. `send_worker_message(...)` or `interrupt_worker(...)`
|
|
77
|
+
7. `get_artifact_manifest(...)`
|
|
78
|
+
8. `read_worker_transcript(...)` for bounded transcript pages, only if needed
|
|
79
|
+
9. `collect_worker_artifacts(...)`
|
|
80
|
+
10. `terminate_worker(...)`
|
|
65
81
|
|
|
66
82
|
Use opt-in MCP toolsets for extra surfaces:
|
|
67
83
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Architecture
|
|
2
2
|
|
|
3
|
-
AgentPool v0.1 is a local control plane
|
|
3
|
+
AgentPool v0.1 is a local control plane for making full use of the coding-agent subscriptions you pay for: it exposes inventory, usage snapshots, live session controls, and artifact collection so you can offload work to a provider with headroom — without choosing providers for the primary agent.
|
|
4
4
|
|
|
5
5
|
Public source-of-truth docs:
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ Most users should not run that command by hand. Add it to your MCP host config,
|
|
|
10
10
|
then let the host start AgentPool when needed.
|
|
11
11
|
|
|
12
12
|
After setup, ask the agent to read `agentpool://skill.md`, then call
|
|
13
|
-
`
|
|
13
|
+
`get_usage_summary(refresh=false)` and `get_provider_models()` before
|
|
14
14
|
delegating work. Coding agents with shell access should usually prefer the
|
|
15
15
|
`agentpool` CLI because it keeps large worker output in artifact files.
|
|
16
16
|
|
|
@@ -257,8 +257,9 @@ Restart Claude Desktop after editing the file.
|
|
|
257
257
|
Once connected, a good first prompt is:
|
|
258
258
|
|
|
259
259
|
```text
|
|
260
|
-
Read agentpool://skill.md. Then call
|
|
261
|
-
|
|
260
|
+
Read agentpool://skill.md and agentpool://preferences.md. Then call
|
|
261
|
+
get_delegation_preferences(), get_usage_summary(refresh=false),
|
|
262
|
+
get_provider_models(), and get_inventory() before
|
|
262
263
|
spawning any workers. After spawn_worker, use observe_worker for the worker
|
|
263
264
|
control loop; do not poll get_session/list_sessions as a substitute. Use
|
|
264
265
|
read_worker_transcript with offset/limit only when you need bounded transcript
|
|
@@ -31,8 +31,10 @@ Unknown toolsets or tool names fail at server startup.
|
|
|
31
31
|
The default toolset is the smallest worker lifecycle surface:
|
|
32
32
|
|
|
33
33
|
- `get_inventory`
|
|
34
|
+
- `get_usage_summary`
|
|
34
35
|
- `get_usage_snapshot`
|
|
35
36
|
- `get_provider_models`
|
|
37
|
+
- `get_delegation_preferences`
|
|
36
38
|
- `spawn_worker`
|
|
37
39
|
- `observe_worker`
|
|
38
40
|
- `send_worker_message`
|
|
@@ -48,13 +50,19 @@ Removed MCP aliases:
|
|
|
48
50
|
- `get_capacity_summary`
|
|
49
51
|
- `get_cached_usage_snapshot`
|
|
50
52
|
|
|
51
|
-
Use `
|
|
52
|
-
|
|
53
|
+
Use `get_usage_summary(refresh=false)` for the compact provider-capacity view.
|
|
54
|
+
Use `get_usage_snapshot(refresh=false)` only when you need raw snapshots; cached
|
|
55
|
+
mode is the default for both. MCP refreshes intentionally avoid interactive
|
|
56
|
+
provider TUI probes that could interfere with the host agent session. Live MCP
|
|
57
|
+
refreshes are also time bounded; a slow provider returns an unknown row and the
|
|
58
|
+
response sets `partial=true` instead of letting the MCP connection sit open.
|
|
59
|
+
Use the CLI for a complete live refresh from shell-capable coding agents. Use
|
|
60
|
+
the `usage` toolset if you need `validate_model_catalog` or
|
|
53
61
|
`filter_candidates`.
|
|
54
62
|
|
|
55
63
|
## Opt-In Toolsets
|
|
56
64
|
|
|
57
|
-
- `usage`: `
|
|
65
|
+
- `usage`: `validate_model_catalog`, `filter_candidates`
|
|
58
66
|
- `stats`: `get_stats`, `get_stats_card`
|
|
59
67
|
- `sessions`: `list_sessions`, `get_session`, `attach_info`, `send_worker_keys`
|
|
60
68
|
- `leases`: `acquire_file_lease`, `list_file_leases`, `release_file_lease`
|
|
@@ -73,7 +81,7 @@ metadata lookups, not substitutes for observation.
|
|
|
73
81
|
|
|
74
82
|
Recommended loop:
|
|
75
83
|
|
|
76
|
-
1. `
|
|
84
|
+
1. `get_usage_summary(provider_id=..., refresh=false)`
|
|
77
85
|
2. `get_provider_models(provider_id=...)`
|
|
78
86
|
3. `spawn_worker(provider_id=..., model=..., repo_path=..., task=..., isolation="read_only")`
|
|
79
87
|
4. `observe_worker(session_id=..., wait_for=["completed","error","question","approval_prompt"], timeout_seconds=120)`
|
|
@@ -123,6 +131,7 @@ The default resource set is non-duplicative:
|
|
|
123
131
|
|
|
124
132
|
- `agentpool://onboarding`
|
|
125
133
|
- `agentpool://skill.md`
|
|
134
|
+
- `agentpool://preferences.md`
|
|
126
135
|
- `agentpool://sessions/{session_id}/transcript`
|
|
127
136
|
- `agentpool://sessions/{session_id}/events`
|
|
128
137
|
- `agentpool://artifacts/{session_id}`
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
# AgentPool Onboarding
|
|
2
2
|
|
|
3
|
-
AgentPool
|
|
4
|
-
|
|
3
|
+
AgentPool helps you use every coding-agent subscription you pay for. It reads
|
|
4
|
+
the live usage limits of each provider you have (Codex, Claude Code, Cursor,
|
|
5
|
+
Copilot, Devin, Droid, ...) so you can offload work to whichever still has
|
|
6
|
+
headroom instead of stalling when your active subscription hits its 5-hour or
|
|
7
|
+
weekly cap.
|
|
8
|
+
It is a control plane for explicitly selected coding-agent CLIs: it does not
|
|
9
|
+
route automatically and it does not choose a provider for you.
|
|
5
10
|
|
|
6
11
|
## Human CLI Setup
|
|
7
12
|
|
|
@@ -16,6 +21,7 @@ uv pip install -e ".[dev]"
|
|
|
16
21
|
|
|
17
22
|
```bash
|
|
18
23
|
agentpool init
|
|
24
|
+
agentpool preferences
|
|
19
25
|
agentpool setup cursor
|
|
20
26
|
agentpool config validate
|
|
21
27
|
agentpool doctor --deep --privacy
|
|
@@ -142,6 +148,7 @@ resource is missing from their context:
|
|
|
142
148
|
|
|
143
149
|
- `agentpool://onboarding`
|
|
144
150
|
- `agentpool://skill.md`
|
|
151
|
+
- `agentpool://preferences.md`
|
|
145
152
|
- `agentpool://sessions/{session_id}/transcript`
|
|
146
153
|
- `agentpool://sessions/{session_id}/events`
|
|
147
154
|
- `agentpool://artifacts/{session_id}`
|
|
@@ -152,18 +159,20 @@ the CLI because it keeps transcripts and artifacts on disk until explicitly read
|
|
|
152
159
|
|
|
153
160
|
## Agent Operating Loop
|
|
154
161
|
|
|
155
|
-
1. Read
|
|
156
|
-
2.
|
|
157
|
-
3.
|
|
162
|
+
1. Read the user's preferences (`agentpool preferences`, `get_delegation_preferences()`, or `agentpool://preferences.md`).
|
|
163
|
+
2. Read usage and model state (`agentpool usage-summary --json`, `agentpool models --json`, or the matching MCP tools).
|
|
164
|
+
3. Decide whether AgentPool is appropriate, or whether your own native subagent system is better for this task.
|
|
165
|
+
4. Pick the provider explicitly.
|
|
166
|
+
5. Use `read_only` for exploration and choose `worktree` explicitly only when
|
|
158
167
|
AgentPool should create an isolated worktree.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
168
|
+
6. Spawn one narrow worker.
|
|
169
|
+
7. Observe until question, approval, completion, error, or timeout.
|
|
170
|
+
8. Send steering or interrupt deliberately.
|
|
171
|
+
9. Use advisory file leases when multiple workers may touch the same files.
|
|
172
|
+
10. Read bounded transcript pages only when the manifest/summary is not enough.
|
|
173
|
+
11. Use paginated `sessions` / `list_sessions` reads for fleet metadata.
|
|
174
|
+
12. Read the artifact manifest, then collect artifacts.
|
|
175
|
+
13. Terminate sessions when done.
|
|
167
176
|
|
|
168
177
|
AgentPool never merges, pushes, silently accepts overage, stores provider
|
|
169
178
|
credentials, scrapes browser pages, or ranks providers.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# AgentPool Quickstart
|
|
2
2
|
|
|
3
|
-
The shortest path from install to
|
|
4
|
-
|
|
5
|
-
you.
|
|
3
|
+
The shortest path from install to offloading work to another subscription.
|
|
4
|
+
AgentPool reads the live usage limits of every coding-agent subscription you
|
|
5
|
+
have so you can move work to whichever still has headroom. It is a control
|
|
6
|
+
plane, not a router: you pick the provider and model explicitly.
|
|
6
7
|
|
|
7
8
|
## 1. Verify the environment
|
|
8
9
|
|
|
@@ -53,4 +54,5 @@ Use `--isolation worktree` instead of `read_only` for tasks that edit files.
|
|
|
53
54
|
|
|
54
55
|
- Full agent guidance: `agentpool://skill.md`
|
|
55
56
|
- Setup and privacy detail: `agentpool://onboarding`
|
|
57
|
+
- User delegation preferences: `agentpool://preferences.md`
|
|
56
58
|
- MCP host config: `agentpool mcp-config --client <host> --absolute-command --install`
|
|
@@ -98,7 +98,7 @@ Then ask Codex:
|
|
|
98
98
|
|
|
99
99
|
```text
|
|
100
100
|
Read agentpool://skill.md. Then call
|
|
101
|
-
|
|
101
|
+
get_usage_summary(provider_id="codex-cli", refresh=false),
|
|
102
102
|
get_provider_models(provider_id="codex-cli"), and get_inventory before spawning
|
|
103
103
|
any workers. After spawn_worker, use
|
|
104
104
|
observe_worker for the worker control loop. If Codex shows an update prompt,
|
|
@@ -47,5 +47,5 @@ See [docs/mcp-clients.md](mcp-clients.md) for other hosts.
|
|
|
47
47
|
## After Connect
|
|
48
48
|
|
|
49
49
|
Ask Cursor to read `agentpool://skill.md`, then call
|
|
50
|
-
`
|
|
50
|
+
`get_usage_summary(refresh=false)` and `get_provider_models()` before spawning
|
|
51
51
|
workers.
|
|
@@ -4,7 +4,7 @@ Usage is best effort and confidence-tagged. Unknown is valid.
|
|
|
4
4
|
|
|
5
5
|
Allowed confidence values include `official`, `local_cli`, `local_config`, `provider_warning`, `observed`, `user_configured`, and `unknown`. AgentPool does not fabricate exact quotas and does not scrape browser sessions in v0.1.
|
|
6
6
|
|
|
7
|
-
Live probes are only run by explicit usage requests. Inventory remains non-invasive and reports whether a provider supports an explicit usage probe. Successful explicit probes are persisted to SQLite; `agentpool usage --cached` and `get_usage_snapshot(refresh=false)` read the latest persisted snapshots without refreshing providers.
|
|
7
|
+
Live probes are only run by explicit usage requests. Inventory remains non-invasive and reports whether a provider supports an explicit usage probe. Successful explicit probes are persisted to SQLite; `agentpool usage --cached`, `get_usage_summary(refresh=false)`, and `get_usage_snapshot(refresh=false)` read the latest persisted snapshots without refreshing providers. MCP refreshes do not run interactive provider TUI probes, because those can interfere with the host agent that is calling AgentPool. MCP refreshes are also bounded by a short server-side budget; if a provider is slow, AgentPool returns a partial response with an unknown row instead of holding the MCP connection open.
|
|
8
8
|
|
|
9
9
|
`agentpool usage-summary` returns a `providers` map keyed by provider id. The
|
|
10
10
|
CLI `capacity-summary` command is a human convenience alias; MCP does not expose
|
|
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agentpool-cli"
|
|
7
|
-
version = "0.1.
|
|
8
|
-
description = "
|
|
7
|
+
version = "0.1.4"
|
|
8
|
+
description = "Make full use of every coding-agent subscription you pay for: a local CLI + MCP server that surfaces live usage limits and offloads work to providers with headroom."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
11
11
|
license = "MIT"
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.sidduHERE/agentpool",
|
|
4
4
|
"title": "AgentPool",
|
|
5
|
-
"description": "
|
|
6
|
-
"version": "0.1.
|
|
5
|
+
"description": "See each coding-agent subscription's live limits and offload work to one with headroom.",
|
|
6
|
+
"version": "0.1.4",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/sidduHERE/agentpool",
|
|
9
9
|
"source": "github"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
{
|
|
14
14
|
"registryType": "pypi",
|
|
15
15
|
"identifier": "agentpool-cli",
|
|
16
|
-
"version": "0.1.
|
|
16
|
+
"version": "0.1.4",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
},
|