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.
Files changed (121) hide show
  1. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/AGENTS.md +1 -1
  2. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/CHANGELOG.md +19 -0
  3. agentpool_cli-0.1.2/README.md → agentpool_cli-0.1.4/PKG-INFO +50 -9
  4. agentpool_cli-0.1.2/PKG-INFO → agentpool_cli-0.1.4/README.md +30 -29
  5. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/agent-cli-and-mcp.md +7 -4
  6. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/agentpool-skill.md +27 -11
  7. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/architecture.md +1 -1
  8. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/mcp-clients.md +4 -3
  9. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/mcp-tools.md +13 -4
  10. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/onboarding.md +22 -13
  11. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/quickstart.md +5 -3
  12. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-codex.md +1 -1
  13. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-cursor.md +1 -1
  14. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/usage-detection.md +1 -1
  15. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/pyproject.toml +2 -2
  16. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/server.json +3 -3
  17. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/__init__.py +1 -1
  18. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/cli.py +79 -4
  19. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/config.py +18 -0
  20. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/mcp/resources.py +3 -0
  21. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/mcp/tools.py +22 -3
  22. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/mcp_server.py +38 -14
  23. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/onboarding.py +6 -0
  24. agentpool_cli-0.1.4/src/agentpool/preferences.py +134 -0
  25. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/providers/base.py +23 -10
  26. agentpool_cli-0.1.4/src/agentpool/providers/registry.py +269 -0
  27. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/session_manager.py +71 -6
  28. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/compute.py +1 -1
  29. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/devin.py +14 -1
  30. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_cli.py +16 -0
  31. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_mcp_surface.py +2 -0
  32. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_mcp_tools.py +126 -5
  33. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_models_config_store.py +22 -0
  34. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_onboarding.py +4 -0
  35. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_stats_mcp.py +2 -2
  36. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_usage_probes.py +21 -0
  37. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/uv.lock +1 -1
  38. agentpool_cli-0.1.2/src/agentpool/providers/registry.py +0 -139
  39. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.cursor/mcp.json.example +0 -0
  40. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/CODEOWNERS +0 -0
  41. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  42. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/ISSUE_TEMPLATE/provider_probe.md +0 -0
  43. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/dependabot.yml +0 -0
  44. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/workflows/ci.yml +0 -0
  45. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.github/workflows/release.yml +0 -0
  46. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.gitignore +0 -0
  47. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/.mcp.json.example +0 -0
  48. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/CONTRIBUTING.md +0 -0
  49. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/LICENSE +0 -0
  50. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/SECURITY.md +0 -0
  51. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/examples/README.md +0 -0
  52. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/examples.md +0 -0
  53. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/install.md +0 -0
  54. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/model-catalog.md +0 -0
  55. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/provider-adapters.md +0 -0
  56. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/provider-lifecycle-matrix.md +0 -0
  57. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/release.md +0 -0
  58. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/security.md +0 -0
  59. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-claude-code.md +0 -0
  60. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-copilot.md +0 -0
  61. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-cursor-cli.md +0 -0
  62. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-devin.md +0 -0
  63. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/setup-droid.md +0 -0
  64. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/stats.md +0 -0
  65. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/docs/usage-probe-matrix.md +0 -0
  66. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/scripts/install.sh +0 -0
  67. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/agent_io.py +0 -0
  68. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/artifacts.py +0 -0
  69. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/event_detection.py +0 -0
  70. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/__init__.py +0 -0
  71. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/__init__.py +0 -0
  72. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_approval_agent.py +0 -0
  73. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_common.py +0 -0
  74. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_completed_agent.py +0 -0
  75. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_idle_agent.py +0 -0
  76. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_limit_agent.py +0 -0
  77. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_patch_agent.py +0 -0
  78. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/fixtures/fake_agents/fake_question_agent.py +0 -0
  79. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/git_worktree.py +0 -0
  80. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/mcp/__init__.py +0 -0
  81. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/models.py +0 -0
  82. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/policy.py +0 -0
  83. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/provider_model_catalog.json +0 -0
  84. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/providers/__init__.py +0 -0
  85. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/redaction.py +0 -0
  86. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/runtimes/__init__.py +0 -0
  87. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/runtimes/base.py +0 -0
  88. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/runtimes/tmux.py +0 -0
  89. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/__init__.py +0 -0
  90. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/card.py +0 -0
  91. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/queries.py +0 -0
  92. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/render.py +0 -0
  93. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/stats/window.py +0 -0
  94. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/store.py +0 -0
  95. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/__init__.py +0 -0
  96. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/_common.py +0 -0
  97. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/ccusage.py +0 -0
  98. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/claude.py +0 -0
  99. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/codex.py +0 -0
  100. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/codexbar.py +0 -0
  101. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/combine.py +0 -0
  102. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/copilot.py +0 -0
  103. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/parsers.py +0 -0
  104. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/probes.py +0 -0
  105. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/provider_parsers.py +0 -0
  106. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/usage/summary.py +0 -0
  107. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/src/agentpool/utils.py +0 -0
  108. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/provider_model_catalog_golden.json +0 -0
  109. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/stats_seed.py +0 -0
  110. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/usage/claude_usage.txt +0 -0
  111. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/usage/codex_rate_limits.json +0 -0
  112. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/usage/copilot_user.json +0 -0
  113. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/fixtures/usage/devin_plan_status.json +0 -0
  114. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/integration/test_fake_tmux_flow.py +0 -0
  115. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_agent_io.py +0 -0
  116. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_event_policy.py +0 -0
  117. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_redaction.py +0 -0
  118. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_stats_cli.py +0 -0
  119. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_stats_window.py +0 -0
  120. {agentpool_cli-0.1.2 → agentpool_cli-0.1.4}/tests/unit/test_usage_provider_parsers.py +0 -0
  121. {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
- AgentPool is a local Python CLI and MCP server for explicitly controlling coding-agent CLIs as worker sessions.
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, model,
8
- session, artifact, lease, and best-effort usage/capacity state. The primary
9
- agent or human still chooses the provider and model explicitly.
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
- Then use tools for live operations. The default MCP toolset is deliberately
260
- small: inventory, usage snapshot, provider models, spawn, observe, send,
261
- interrupt, collect, artifact manifest, transcript paging, and terminate. Add
262
- opt-in toolsets with `agentpool mcp --toolsets default,stats,sessions,leases,worktrees`.
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
- AgentPool is a local Python CLI and MCP server for explicitly controlling coding-agent CLIs as worker sessions.
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, model,
28
- session, artifact, lease, and best-effort usage/capacity state. The primary
29
- agent or human still chooses the provider and model explicitly.
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
- Then use tools for live operations. The default MCP toolset is deliberately
280
- small: inventory, usage snapshot, provider models, spawn, observe, send,
281
- interrupt, collect, artifact manifest, transcript paging, and terminate. Add
282
- opt-in toolsets with `agentpool mcp --toolsets default,stats,sessions,leases,worktrees`.
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, cached/live usage snapshots, provider models, spawn,
52
- observe, send, interrupt, artifact manifest, transcript paging, collect, and
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 get_usage_summary
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: `get_usage_snapshot(refresh=false)` for cached state, or
14
- `get_usage_snapshot(refresh=true)` for a live refresh.
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. `get_usage_snapshot(provider_id=..., refresh=false)`
57
- 2. `get_provider_models(provider_id=...)`
58
- 3. `spawn_worker(provider_id=..., model=..., repo_path=..., task=..., isolation="read_only")`
59
- 4. `observe_worker(session_id=..., wait_for=["completed","error","question","approval_prompt"], timeout_seconds=120)`
60
- 5. `send_worker_message(...)` or `interrupt_worker(...)`
61
- 6. `get_artifact_manifest(...)`
62
- 7. `read_worker_transcript(...)` for bounded transcript pages, only if needed
63
- 8. `collect_worker_artifacts(...)`
64
- 9. `terminate_worker(...)`
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. It exposes inventory, usage snapshots, live session controls, and artifact collection without choosing providers for the primary agent.
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
- `get_usage_snapshot(refresh=false)` and `get_provider_models()` before
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
- get_usage_snapshot(refresh=false), get_provider_models(), and get_inventory() before
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 `get_usage_snapshot(refresh=false)` for cached snapshots. Use the `usage`
52
- toolset if you need `get_usage_summary`, `validate_model_catalog`, or
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`: `get_usage_summary`, `validate_model_catalog`, `filter_candidates`
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. `get_usage_snapshot(provider_id=..., refresh=false)`
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 is a local control plane for explicitly selected coding-agent CLIs.
4
- It does not route automatically and it does not choose a provider for you.
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 usage and model state (`agentpool usage-summary --json`, `agentpool models --json`, or the matching MCP tools).
156
- 2. Pick the provider explicitly.
157
- 3. Use `read_only` for exploration and choose `worktree` explicitly only when
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
- 4. Spawn one narrow worker.
160
- 5. Observe until question, approval, completion, error, or timeout.
161
- 6. Send steering or interrupt deliberately.
162
- 7. Use advisory file leases when multiple workers may touch the same files.
163
- 8. Read bounded transcript pages only when the manifest/summary is not enough.
164
- 9. Use paginated `sessions` / `list_sessions` reads for fleet metadata.
165
- 10. Read the artifact manifest, then collect artifacts.
166
- 11. Terminate sessions when done.
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 a working worker. AgentPool is a local
4
- control plane: you pick the provider and model explicitly; it never routes for
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
- get_usage_snapshot(provider_id="codex-cli", refresh=false),
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
- `get_usage_snapshot(refresh=false)` and `get_provider_models()` before spawning
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.2"
8
- description = "Local MCP-exposed control plane for live coding-agent sessions."
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": "Local MCP control plane for coding-agent inventory, usage, spawn, and observe.",
6
- "version": "0.1.2",
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.2",
16
+ "version": "0.1.4",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },
@@ -1,3 +1,3 @@
1
1
  """AgentPool local agent control plane."""
2
2
 
3
- __version__ = "0.1.2"
3
+ __version__ = "0.1.4"