@phnx-labs/agents-cli 1.12.0 → 1.14.1
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.
- package/CHANGELOG.md +7 -1
- package/README.md +293 -300
- package/dist/commands/alias.d.ts +11 -0
- package/dist/commands/alias.js +117 -0
- package/dist/commands/beta.d.ts +2 -0
- package/dist/commands/beta.js +53 -0
- package/dist/commands/cloud.d.ts +10 -0
- package/dist/commands/cloud.js +408 -0
- package/dist/commands/commands.d.ts +9 -1
- package/dist/commands/commands.js +24 -172
- package/dist/commands/daemon.d.ts +8 -1
- package/dist/commands/daemon.js +13 -5
- package/dist/commands/doctor.d.ts +15 -0
- package/dist/commands/doctor.js +132 -0
- package/dist/commands/drive.d.ts +8 -1
- package/dist/commands/drive.js +20 -3
- package/dist/commands/exec.d.ts +8 -1
- package/dist/commands/exec.js +207 -20
- package/dist/commands/factory.d.ts +19 -0
- package/dist/commands/factory.js +71 -0
- package/dist/commands/fork.d.ts +8 -1
- package/dist/commands/fork.js +11 -4
- package/dist/commands/hooks.d.ts +9 -1
- package/dist/commands/hooks.js +30 -182
- package/dist/commands/init.d.ts +15 -1
- package/dist/commands/init.js +168 -74
- package/dist/commands/mcp.d.ts +9 -1
- package/dist/commands/mcp.js +11 -7
- package/dist/commands/models.d.ts +8 -1
- package/dist/commands/models.js +45 -6
- package/dist/commands/packages.d.ts +8 -1
- package/dist/commands/packages.js +13 -7
- package/dist/commands/permissions.d.ts +9 -1
- package/dist/commands/permissions.js +3 -3
- package/dist/commands/plugins.d.ts +8 -1
- package/dist/commands/plugins.js +13 -2
- package/dist/commands/profiles.d.ts +11 -0
- package/dist/commands/profiles.js +291 -0
- package/dist/commands/prune.d.ts +22 -0
- package/dist/commands/prune.js +191 -0
- package/dist/commands/pty.d.ts +1 -1
- package/dist/commands/pty.js +2 -1
- package/dist/commands/pull.d.ts +8 -1
- package/dist/commands/pull.js +93 -129
- package/dist/commands/refresh-memory.d.ts +7 -1
- package/dist/commands/refresh-memory.js +7 -1
- package/dist/commands/repo.d.ts +15 -0
- package/dist/commands/repo.js +570 -0
- package/dist/commands/resource-view.d.ts +10 -3
- package/dist/commands/resource-view.js +18 -5
- package/dist/commands/routines.d.ts +8 -1
- package/dist/commands/routines.js +17 -4
- package/dist/commands/rules.d.ts +9 -1
- package/dist/commands/rules.js +16 -11
- package/dist/commands/secrets.d.ts +10 -0
- package/dist/commands/secrets.js +511 -0
- package/dist/commands/sessions-picker.d.ts +2 -1
- package/dist/commands/sessions-picker.js +88 -11
- package/dist/commands/sessions-tail.d.ts +19 -0
- package/dist/commands/sessions-tail.js +235 -0
- package/dist/commands/sessions.d.ts +2 -1
- package/dist/commands/sessions.js +288 -7
- package/dist/commands/skills.d.ts +9 -1
- package/dist/commands/skills.js +28 -178
- package/dist/commands/status.d.ts +7 -1
- package/dist/commands/status.js +7 -1
- package/dist/commands/subagents.d.ts +8 -1
- package/dist/commands/subagents.js +11 -1
- package/dist/commands/sync.d.ts +8 -1
- package/dist/commands/sync.js +8 -1
- package/dist/commands/teams-picker.d.ts +4 -1
- package/dist/commands/teams-picker.js +55 -3
- package/dist/commands/teams.d.ts +15 -1
- package/dist/commands/teams.js +323 -69
- package/dist/commands/usage.d.ts +11 -0
- package/dist/commands/usage.js +60 -0
- package/dist/commands/utils.d.ts +6 -1
- package/dist/commands/utils.js +6 -1
- package/dist/commands/versions.d.ts +8 -1
- package/dist/commands/versions.js +4 -3
- package/dist/commands/view.d.ts +47 -2
- package/dist/commands/view.js +353 -20
- package/dist/index.d.ts +7 -2
- package/dist/index.js +205 -38
- package/dist/lib/acp/client.d.ts +31 -0
- package/dist/lib/acp/client.js +117 -0
- package/dist/lib/acp/harnesses.d.ts +26 -0
- package/dist/lib/acp/harnesses.js +65 -0
- package/dist/lib/acp/run.d.ts +18 -0
- package/dist/lib/acp/run.js +39 -0
- package/dist/lib/agents.d.ts +74 -2
- package/dist/lib/agents.js +207 -23
- package/dist/lib/artifact-actions.d.ts +8 -4
- package/dist/lib/artifact-actions.js +8 -6
- package/dist/lib/auto-pull-worker.d.ts +11 -0
- package/dist/lib/auto-pull-worker.js +121 -0
- package/dist/lib/auto-pull.d.ts +31 -0
- package/dist/lib/auto-pull.js +97 -0
- package/dist/lib/beta.d.ts +23 -0
- package/dist/lib/beta.js +90 -0
- package/dist/lib/capabilities.d.ts +29 -0
- package/dist/lib/capabilities.js +74 -0
- package/dist/lib/cloud/codex.d.ts +25 -0
- package/dist/lib/cloud/codex.js +250 -0
- package/dist/lib/cloud/factory.d.ts +31 -0
- package/dist/lib/cloud/factory.js +53 -0
- package/dist/lib/cloud/registry.d.ts +15 -0
- package/dist/lib/cloud/registry.js +67 -0
- package/dist/lib/cloud/rush.d.ts +75 -0
- package/dist/lib/cloud/rush.js +438 -0
- package/dist/lib/cloud/store.d.ts +22 -0
- package/dist/lib/cloud/store.js +115 -0
- package/dist/lib/cloud/stream.d.ts +23 -0
- package/dist/lib/cloud/stream.js +194 -0
- package/dist/lib/cloud/types.d.ts +205 -0
- package/dist/lib/cloud/types.js +34 -0
- package/dist/lib/command-skills.d.ts +20 -0
- package/dist/lib/command-skills.js +142 -0
- package/dist/lib/commands.d.ts +22 -2
- package/dist/lib/commands.js +51 -11
- package/dist/lib/convert.d.ts +10 -1
- package/dist/lib/convert.js +9 -1
- package/dist/lib/daemon.d.ts +21 -1
- package/dist/lib/daemon.js +97 -4
- package/dist/lib/drive-sync.d.ts +18 -1
- package/dist/lib/drive-sync.js +57 -15
- package/dist/lib/exec.d.ts +25 -5
- package/dist/lib/exec.js +72 -27
- package/dist/lib/fs-walk.d.ts +2 -0
- package/dist/lib/fs-walk.js +40 -0
- package/dist/lib/fuzzy.d.ts +53 -0
- package/dist/lib/fuzzy.js +72 -0
- package/dist/lib/gemini-settings.d.ts +4 -0
- package/dist/lib/gemini-settings.js +33 -0
- package/dist/lib/git.d.ts +12 -2
- package/dist/lib/git.js +17 -6
- package/dist/lib/help.d.ts +20 -1
- package/dist/lib/help.js +45 -6
- package/dist/lib/hooks/match.d.ts +32 -0
- package/dist/lib/hooks/match.js +120 -0
- package/dist/lib/hooks.d.ts +17 -4
- package/dist/lib/hooks.js +191 -21
- package/dist/lib/manifest.d.ts +6 -1
- package/dist/lib/manifest.js +15 -4
- package/dist/lib/markdown.d.ts +0 -1
- package/dist/lib/markdown.js +6 -1
- package/dist/lib/mcp.d.ts +0 -1
- package/dist/lib/mcp.js +29 -33
- package/dist/lib/memory-compile.d.ts +13 -3
- package/dist/lib/memory-compile.js +31 -9
- package/dist/lib/memory.d.ts +14 -7
- package/dist/lib/memory.js +67 -38
- package/dist/lib/migrate.d.ts +8 -0
- package/dist/lib/migrate.js +85 -0
- package/dist/lib/models.d.ts +25 -11
- package/dist/lib/models.js +405 -16
- package/dist/lib/onepassword.d.ts +63 -0
- package/dist/lib/onepassword.js +186 -0
- package/dist/lib/paths.d.ts +8 -0
- package/dist/lib/paths.js +20 -0
- package/dist/lib/permissions.d.ts +24 -2
- package/dist/lib/permissions.js +117 -48
- package/dist/lib/picker.d.ts +10 -1
- package/dist/lib/picker.js +15 -1
- package/dist/lib/plugins.d.ts +7 -1
- package/dist/lib/plugins.js +10 -1
- package/dist/lib/profiles-presets.d.ts +24 -0
- package/dist/lib/profiles-presets.js +103 -0
- package/dist/lib/profiles.d.ts +69 -0
- package/dist/lib/profiles.js +144 -0
- package/dist/lib/pty-client.d.ts +1 -1
- package/dist/lib/pty-client.js +0 -1
- package/dist/lib/pty-server.d.ts +16 -2
- package/dist/lib/pty-server.js +92 -3
- package/dist/lib/registry.d.ts +23 -3
- package/dist/lib/registry.js +153 -8
- package/dist/lib/resources.d.ts +28 -1
- package/dist/lib/resources.js +79 -1
- package/dist/lib/rotate.d.ts +79 -0
- package/dist/lib/rotate.js +285 -0
- package/dist/lib/routines.d.ts +29 -1
- package/dist/lib/routines.js +32 -5
- package/dist/lib/runner.d.ts +14 -1
- package/dist/lib/runner.js +22 -3
- package/dist/lib/sandbox.d.ts +16 -1
- package/dist/lib/sandbox.js +39 -16
- package/dist/lib/scheduler.d.ts +8 -1
- package/dist/lib/scheduler.js +8 -1
- package/dist/lib/secrets/AgentsKeychain.app/Contents/CodeResources +0 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/Info.plist +22 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/MacOS/AgentsKeychain +0 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/_CodeSignature/CodeResources +123 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/embedded.provisionprofile +0 -0
- package/dist/lib/secrets/bundles.d.ts +39 -0
- package/dist/lib/secrets/bundles.js +189 -0
- package/dist/lib/secrets/index.d.ts +55 -0
- package/dist/lib/secrets/index.js +211 -0
- package/dist/lib/secrets/profiles.d.ts +10 -0
- package/dist/lib/secrets/profiles.js +13 -0
- package/dist/lib/session/active.d.ts +43 -0
- package/dist/lib/session/active.js +392 -0
- package/dist/lib/session/artifacts.d.ts +16 -0
- package/dist/lib/session/artifacts.js +95 -0
- package/dist/lib/session/cloud.d.ts +30 -0
- package/dist/lib/session/cloud.js +121 -0
- package/dist/lib/session/db.d.ts +23 -2
- package/dist/lib/session/db.js +76 -12
- package/dist/lib/session/discover.d.ts +19 -4
- package/dist/lib/session/discover.js +344 -48
- package/dist/lib/session/parse.d.ts +28 -1
- package/dist/lib/session/parse.js +267 -9
- package/dist/lib/session/prompt.d.ts +9 -1
- package/dist/lib/session/prompt.js +17 -3
- package/dist/lib/session/render.d.ts +13 -1
- package/dist/lib/session/render.js +20 -1
- package/dist/lib/session/team-filter.d.ts +9 -1
- package/dist/lib/session/team-filter.js +11 -2
- package/dist/lib/session/types.d.ts +24 -2
- package/dist/lib/session/types.js +10 -2
- package/dist/lib/shims.d.ts +93 -5
- package/dist/lib/shims.js +380 -67
- package/dist/lib/skills.d.ts +27 -2
- package/dist/lib/skills.js +127 -65
- package/dist/lib/sqlite.d.ts +43 -0
- package/dist/lib/sqlite.js +94 -0
- package/dist/lib/state.d.ts +114 -22
- package/dist/lib/state.js +323 -138
- package/dist/lib/subagents.d.ts +9 -1
- package/dist/lib/subagents.js +70 -63
- package/dist/lib/sync-manifest.d.ts +81 -0
- package/dist/lib/sync-manifest.js +450 -0
- package/dist/lib/teams/agents.d.ts +103 -5
- package/dist/lib/teams/agents.js +414 -91
- package/dist/lib/teams/api.d.ts +26 -3
- package/dist/lib/teams/api.js +63 -3
- package/dist/lib/teams/debug.d.ts +6 -1
- package/dist/lib/teams/debug.js +6 -1
- package/dist/lib/teams/file_ops.d.ts +7 -1
- package/dist/lib/teams/file_ops.js +7 -1
- package/dist/lib/teams/index.d.ts +15 -0
- package/dist/lib/teams/index.js +14 -0
- package/dist/lib/teams/parsers.d.ts +4 -1
- package/dist/lib/teams/parsers.js +11 -1
- package/dist/lib/teams/persistence.d.ts +15 -1
- package/dist/lib/teams/persistence.js +102 -20
- package/dist/lib/teams/registry.d.ts +12 -1
- package/dist/lib/teams/registry.js +116 -33
- package/dist/lib/teams/summarizer.d.ts +15 -1
- package/dist/lib/teams/summarizer.js +14 -1
- package/dist/lib/teams/supervisor.d.ts +48 -0
- package/dist/lib/teams/supervisor.js +73 -0
- package/dist/lib/template.d.ts +8 -6
- package/dist/lib/template.js +8 -6
- package/dist/lib/types.d.ts +147 -8
- package/dist/lib/types.js +26 -3
- package/dist/lib/usage.d.ts +48 -1
- package/dist/lib/usage.js +97 -16
- package/dist/lib/version-duplicates.d.ts +21 -0
- package/dist/lib/version-duplicates.js +90 -0
- package/dist/lib/versions.d.ts +39 -4
- package/dist/lib/versions.js +401 -111
- package/package.json +33 -18
- package/scripts/postinstall.js +126 -30
- package/dist/commands/__tests__/sessions.test.d.ts +0 -2
- package/dist/commands/__tests__/sessions.test.d.ts.map +0 -1
- package/dist/commands/__tests__/sessions.test.js +0 -636
- package/dist/commands/__tests__/sessions.test.js.map +0 -1
- package/dist/commands/commands.d.ts.map +0 -1
- package/dist/commands/commands.js.map +0 -1
- package/dist/commands/daemon.d.ts.map +0 -1
- package/dist/commands/daemon.js.map +0 -1
- package/dist/commands/drive.d.ts.map +0 -1
- package/dist/commands/drive.js.map +0 -1
- package/dist/commands/exec.d.ts.map +0 -1
- package/dist/commands/exec.js.map +0 -1
- package/dist/commands/fork.d.ts.map +0 -1
- package/dist/commands/fork.js.map +0 -1
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/models.d.ts.map +0 -1
- package/dist/commands/models.js.map +0 -1
- package/dist/commands/packages.d.ts.map +0 -1
- package/dist/commands/packages.js.map +0 -1
- package/dist/commands/permissions.d.ts.map +0 -1
- package/dist/commands/permissions.js.map +0 -1
- package/dist/commands/plugins.d.ts.map +0 -1
- package/dist/commands/plugins.js.map +0 -1
- package/dist/commands/pty.d.ts.map +0 -1
- package/dist/commands/pty.js.map +0 -1
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -3
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -180
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/refresh-memory.d.ts.map +0 -1
- package/dist/commands/refresh-memory.js.map +0 -1
- package/dist/commands/resource-view.d.ts.map +0 -1
- package/dist/commands/resource-view.js.map +0 -1
- package/dist/commands/routines.d.ts.map +0 -1
- package/dist/commands/routines.js.map +0 -1
- package/dist/commands/rules.d.ts.map +0 -1
- package/dist/commands/rules.js.map +0 -1
- package/dist/commands/sessions-picker.d.ts.map +0 -1
- package/dist/commands/sessions-picker.js.map +0 -1
- package/dist/commands/sessions.d.ts.map +0 -1
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/subagents.d.ts.map +0 -1
- package/dist/commands/subagents.js.map +0 -1
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/teams-picker.d.ts.map +0 -1
- package/dist/commands/teams-picker.js.map +0 -1
- package/dist/commands/teams.d.ts.map +0 -1
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js.map +0 -1
- package/dist/commands/versions.d.ts.map +0 -1
- package/dist/commands/versions.js.map +0 -1
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
- package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
- package/dist/lib/__tests__/bugfixes.test.js +0 -192
- package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
- package/dist/lib/__tests__/exec.test.d.ts +0 -2
- package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
- package/dist/lib/__tests__/exec.test.js +0 -446
- package/dist/lib/__tests__/exec.test.js.map +0 -1
- package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
- package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
- package/dist/lib/__tests__/git-sync.test.js +0 -138
- package/dist/lib/__tests__/git-sync.test.js.map +0 -1
- package/dist/lib/__tests__/hooks.test.d.ts +0 -2
- package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
- package/dist/lib/__tests__/hooks.test.js +0 -203
- package/dist/lib/__tests__/hooks.test.js.map +0 -1
- package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
- package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
- package/dist/lib/__tests__/memory-compile.test.js +0 -95
- package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
- package/dist/lib/__tests__/models.test.d.ts +0 -2
- package/dist/lib/__tests__/models.test.d.ts.map +0 -1
- package/dist/lib/__tests__/models.test.js +0 -184
- package/dist/lib/__tests__/models.test.js.map +0 -1
- package/dist/lib/__tests__/usage.test.d.ts +0 -2
- package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
- package/dist/lib/__tests__/usage.test.js +0 -218
- package/dist/lib/__tests__/usage.test.js.map +0 -1
- package/dist/lib/agents.d.ts.map +0 -1
- package/dist/lib/agents.js.map +0 -1
- package/dist/lib/artifact-actions.d.ts.map +0 -1
- package/dist/lib/artifact-actions.js.map +0 -1
- package/dist/lib/commands.d.ts.map +0 -1
- package/dist/lib/commands.js.map +0 -1
- package/dist/lib/convert.d.ts.map +0 -1
- package/dist/lib/convert.js.map +0 -1
- package/dist/lib/daemon.d.ts.map +0 -1
- package/dist/lib/daemon.js.map +0 -1
- package/dist/lib/drive-sync.d.ts.map +0 -1
- package/dist/lib/drive-sync.js.map +0 -1
- package/dist/lib/exec.d.ts.map +0 -1
- package/dist/lib/exec.js.map +0 -1
- package/dist/lib/factory.d.ts +0 -57
- package/dist/lib/factory.d.ts.map +0 -1
- package/dist/lib/factory.js +0 -110
- package/dist/lib/factory.js.map +0 -1
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/help.d.ts.map +0 -1
- package/dist/lib/help.js.map +0 -1
- package/dist/lib/hooks.d.ts.map +0 -1
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/manifest.d.ts.map +0 -1
- package/dist/lib/manifest.js.map +0 -1
- package/dist/lib/markdown.d.ts.map +0 -1
- package/dist/lib/markdown.js.map +0 -1
- package/dist/lib/mcp.d.ts.map +0 -1
- package/dist/lib/mcp.js.map +0 -1
- package/dist/lib/memory-compile.d.ts.map +0 -1
- package/dist/lib/memory-compile.js.map +0 -1
- package/dist/lib/memory.d.ts.map +0 -1
- package/dist/lib/memory.js.map +0 -1
- package/dist/lib/models.d.ts.map +0 -1
- package/dist/lib/models.js.map +0 -1
- package/dist/lib/permissions.d.ts.map +0 -1
- package/dist/lib/permissions.js.map +0 -1
- package/dist/lib/picker.d.ts.map +0 -1
- package/dist/lib/picker.js.map +0 -1
- package/dist/lib/plugins.d.ts.map +0 -1
- package/dist/lib/plugins.js.map +0 -1
- package/dist/lib/pty-client.d.ts.map +0 -1
- package/dist/lib/pty-client.js.map +0 -1
- package/dist/lib/pty-server.d.ts.map +0 -1
- package/dist/lib/pty-server.js.map +0 -1
- package/dist/lib/registry.d.ts.map +0 -1
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/resources.d.ts.map +0 -1
- package/dist/lib/resources.js.map +0 -1
- package/dist/lib/routines.d.ts.map +0 -1
- package/dist/lib/routines.js.map +0 -1
- package/dist/lib/runner.d.ts.map +0 -1
- package/dist/lib/runner.js.map +0 -1
- package/dist/lib/sandbox.d.ts.map +0 -1
- package/dist/lib/sandbox.js.map +0 -1
- package/dist/lib/scheduler.d.ts.map +0 -1
- package/dist/lib/scheduler.js.map +0 -1
- package/dist/lib/session/__tests__/db.test.d.ts +0 -2
- package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/db.test.js +0 -54
- package/dist/lib/session/__tests__/db.test.js.map +0 -1
- package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
- package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/discover.test.js +0 -63
- package/dist/lib/session/__tests__/discover.test.js.map +0 -1
- package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
- package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/prompt.test.js +0 -44
- package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
- package/dist/lib/session/__tests__/render.test.d.ts +0 -2
- package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/render.test.js +0 -602
- package/dist/lib/session/__tests__/render.test.js.map +0 -1
- package/dist/lib/session/db.d.ts.map +0 -1
- package/dist/lib/session/db.js.map +0 -1
- package/dist/lib/session/discover.d.ts.map +0 -1
- package/dist/lib/session/discover.js.map +0 -1
- package/dist/lib/session/parse.d.ts.map +0 -1
- package/dist/lib/session/parse.js.map +0 -1
- package/dist/lib/session/prompt.d.ts.map +0 -1
- package/dist/lib/session/prompt.js.map +0 -1
- package/dist/lib/session/prompt.test.d.ts +0 -2
- package/dist/lib/session/prompt.test.d.ts.map +0 -1
- package/dist/lib/session/prompt.test.js +0 -57
- package/dist/lib/session/prompt.test.js.map +0 -1
- package/dist/lib/session/render.d.ts.map +0 -1
- package/dist/lib/session/render.js.map +0 -1
- package/dist/lib/session/team-filter.d.ts.map +0 -1
- package/dist/lib/session/team-filter.js.map +0 -1
- package/dist/lib/session/team-filter.test.d.ts +0 -2
- package/dist/lib/session/team-filter.test.d.ts.map +0 -1
- package/dist/lib/session/team-filter.test.js +0 -157
- package/dist/lib/session/team-filter.test.js.map +0 -1
- package/dist/lib/session/types.d.ts.map +0 -1
- package/dist/lib/session/types.js.map +0 -1
- package/dist/lib/shims.d.ts.map +0 -1
- package/dist/lib/shims.js.map +0 -1
- package/dist/lib/skills.d.ts.map +0 -1
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/state.d.ts.map +0 -1
- package/dist/lib/state.js.map +0 -1
- package/dist/lib/subagents.d.ts.map +0 -1
- package/dist/lib/subagents.js.map +0 -1
- package/dist/lib/teams/agents.d.ts.map +0 -1
- package/dist/lib/teams/agents.js.map +0 -1
- package/dist/lib/teams/api.d.ts.map +0 -1
- package/dist/lib/teams/api.js.map +0 -1
- package/dist/lib/teams/cloud.d.ts +0 -11
- package/dist/lib/teams/cloud.d.ts.map +0 -1
- package/dist/lib/teams/cloud.js +0 -169
- package/dist/lib/teams/cloud.js.map +0 -1
- package/dist/lib/teams/debug.d.ts.map +0 -1
- package/dist/lib/teams/debug.js.map +0 -1
- package/dist/lib/teams/file_ops.d.ts.map +0 -1
- package/dist/lib/teams/file_ops.js.map +0 -1
- package/dist/lib/teams/parsers.d.ts.map +0 -1
- package/dist/lib/teams/parsers.js.map +0 -1
- package/dist/lib/teams/persistence.d.ts.map +0 -1
- package/dist/lib/teams/persistence.js.map +0 -1
- package/dist/lib/teams/ralph.d.ts +0 -8
- package/dist/lib/teams/ralph.d.ts.map +0 -1
- package/dist/lib/teams/ralph.js +0 -59
- package/dist/lib/teams/ralph.js.map +0 -1
- package/dist/lib/teams/registry.d.ts.map +0 -1
- package/dist/lib/teams/registry.js.map +0 -1
- package/dist/lib/teams/summarizer.d.ts.map +0 -1
- package/dist/lib/teams/summarizer.js.map +0 -1
- package/dist/lib/template.d.ts.map +0 -1
- package/dist/lib/template.js.map +0 -1
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/usage.d.ts.map +0 -1
- package/dist/lib/usage.js.map +0 -1
- package/dist/lib/versions.d.ts.map +0 -1
- package/dist/lib/versions.js.map +0 -1
- package/scripts/rebuild-sqlite.sh +0 -46
package/README.md
CHANGED
|
@@ -1,455 +1,448 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/logo.png" alt="agents" width="120" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">agents</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@phnx-labs/agents-cli"><img src="https://img.shields.io/npm/v/@phnx-labs/agents-cli.svg?style=flat-square" alt="npm version" /></a>
|
|
9
|
+
<a href="./LICENSE"><img src="https://img.shields.io/npm/l/@phnx-labs/agents-cli.svg?style=flat-square" alt="license" /></a>
|
|
10
|
+
<a href="https://www.npmjs.com/package/@phnx-labs/agents-cli"><img src="https://img.shields.io/npm/dm/@phnx-labs/agents-cli.svg?style=flat-square" alt="downloads" /></a>
|
|
11
|
+
<a href="https://github.com/phnx-labs/agents-cli"><img src="https://img.shields.io/badge/github-phnx--labs%2Fagents--cli-blue?style=flat-square" alt="github" /></a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
**The missing toolchain for CLI coding agents.** Pin versions to escape regressions. Build hooks to control agent behavior, or skills to improve them. Then share your agent environment with your team, or clone it to any machine with one command.
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="https://github.com/anthropics/claude-code" title="Claude Code"><img src="assets/harnesses/anthropic.svg" height="32" alt="Claude Code" /></a>
|
|
18
|
+
|
|
19
|
+
<a href="https://github.com/openai/codex" title="Codex CLI"><img src="assets/harnesses/openai.svg" height="32" alt="Codex CLI" /></a>
|
|
20
|
+
|
|
21
|
+
<a href="https://github.com/google-gemini/gemini-cli" title="Gemini CLI"><img src="assets/harnesses/google.svg" height="32" alt="Gemini CLI" /></a>
|
|
22
|
+
|
|
23
|
+
<a href="https://cursor.com" title="Cursor"><img src="assets/harnesses/cursor.svg" height="32" alt="Cursor" /></a>
|
|
24
|
+
|
|
25
|
+
<a href="https://github.com/sst/opencode" title="OpenCode"><img src="assets/harnesses/opencode.png" height="32" alt="OpenCode" /></a>
|
|
26
|
+
|
|
27
|
+
<a href="https://github.com/openclaw/openclaw" title="OpenClaw"><img src="assets/harnesses/openclaw.svg" height="36" alt="OpenClaw" /></a>
|
|
28
|
+
|
|
29
|
+
<a href="https://github.com/NousResearch/hermes-agent" title="Hermes Agent"><img src="assets/harnesses/hermes.png" height="32" alt="Hermes Agent" /></a>
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
https://github.com/user-attachments/assets/cf0b2248-6672-4458-8027-b88525572f3e
|
|
11
33
|
|
|
12
34
|
```bash
|
|
13
|
-
curl -fsSL agents-cli.sh | sh
|
|
14
|
-
# or
|
|
15
35
|
npm install -g @phnx-labs/agents-cli
|
|
36
|
+
# or
|
|
37
|
+
bun install -g @phnx-labs/agents-cli
|
|
16
38
|
```
|
|
17
39
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- [
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
- [
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
29
|
-
- [
|
|
40
|
+
Source: [github.com/phnx-labs/agents-cli](https://github.com/phnx-labs/agents-cli)
|
|
41
|
+
|
|
42
|
+
Also available as `ag` -- all commands work with both `agents` and `ag`.
|
|
43
|
+
|
|
44
|
+
- [Pin versions per project](#pin-versions-per-project)
|
|
45
|
+
- [One config, every agent](#one-config-every-agent)
|
|
46
|
+
- [Run any agent](#run-any-agent)
|
|
47
|
+
- [Sessions across agents](#sessions-across-agents)
|
|
48
|
+
- [Run open models through Claude Code](#run-open-models-through-claude-code)
|
|
49
|
+
- [Teams](#teams)
|
|
50
|
+
- [Secrets](#secrets)
|
|
51
|
+
- [Routines](#routines)
|
|
52
|
+
- [PTY](#pty)
|
|
53
|
+
- [Portable setup](#portable-setup)
|
|
54
|
+
- [Private skills](#private-skills)
|
|
30
55
|
- [Compatibility](#compatibility)
|
|
31
56
|
- [FAQ](#faq)
|
|
32
|
-
- [Contributing](#contributing)
|
|
33
|
-
- [License](#license)
|
|
34
57
|
|
|
35
58
|
---
|
|
36
59
|
|
|
37
|
-
##
|
|
60
|
+
## Pin versions per project
|
|
38
61
|
|
|
39
62
|
```bash
|
|
40
|
-
|
|
41
|
-
agents
|
|
42
|
-
agents run gemini "Write tests for the fixed code"
|
|
43
|
-
```
|
|
63
|
+
# This project needs claude@2.0.65 -- newer versions changed tool calling.
|
|
64
|
+
agents use claude@2.0.65 -p
|
|
44
65
|
|
|
45
|
-
|
|
66
|
+
# The monorepo uses codex@0.116.0 across the team.
|
|
67
|
+
agents use codex@0.116.0 -p
|
|
68
|
+
```
|
|
46
69
|
|
|
47
|
-
`agents
|
|
70
|
+
This creates an `agents.yaml` at the project root:
|
|
48
71
|
|
|
49
|
-
```
|
|
50
|
-
agents
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
--env ANTHROPIC_AUTH_TOKEN="$(security find-generic-password -a "$USER" -s ollama-auth-token -w)" \
|
|
55
|
-
--env ANTHROPIC_MODEL=qwen3.6:35b \
|
|
56
|
-
--env ANTHROPIC_SMALL_FAST_MODEL=qwen3.6:35b
|
|
72
|
+
```yaml
|
|
73
|
+
# agents.yaml (commit this to your repo)
|
|
74
|
+
agents:
|
|
75
|
+
claude: "2.0.65"
|
|
76
|
+
codex: "0.116.0"
|
|
57
77
|
```
|
|
58
78
|
|
|
59
|
-
|
|
79
|
+
Think `requirements.txt` for CLI coding agents, on steroids. A shim reads `agents.yaml` from the project root and routes `claude` / `codex` / `gemini` to the right version automatically. Each version gets its own isolated home -- switching backs up config and re-syncs resources.
|
|
60
80
|
|
|
61
81
|
```bash
|
|
62
|
-
#
|
|
63
|
-
agents
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
# Same pipeline, different project -- different agent versions, same commands
|
|
67
|
-
cd ../other-project
|
|
68
|
-
agents run claude "Review all PRs merged this week, summarize risks"
|
|
69
|
-
# ^ resolves to claude@2.0.0 here instead of claude@2.1.89
|
|
82
|
+
agents add claude@2.0.65 # Install a specific version
|
|
83
|
+
agents add codex@latest # Install latest
|
|
84
|
+
agents view # See everything installed
|
|
70
85
|
```
|
|
71
86
|
|
|
72
|
-
Supports plan (read-only) and edit modes, effort levels that map to the right model per agent, and JSON output for scripting.
|
|
73
|
-
|
|
74
87
|
---
|
|
75
88
|
|
|
76
|
-
##
|
|
77
|
-
|
|
78
|
-
`agents run` runs one agent synchronously. **Teams** run many agents on the same task, in the background, with coordination.
|
|
89
|
+
## One config, every agent
|
|
79
90
|
|
|
80
91
|
```bash
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
agents teams add auth-feature claude "Research auth libraries" --name researcher
|
|
84
|
-
agents teams add auth-feature codex "Draft the migration" --name migrator --after researcher
|
|
85
|
-
agents teams add auth-feature claude "Write tests for the new code" --name tester --after migrator
|
|
92
|
+
# Set up the Notion MCP server once.
|
|
93
|
+
agents install mcp:com.notion/mcp
|
|
86
94
|
|
|
87
|
-
|
|
88
|
-
agents
|
|
89
|
-
agents teams disband auth-feature # stop everyone, clean up
|
|
95
|
+
# It's now registered with Claude Code, Codex, Gemini CLI, and Cursor.
|
|
96
|
+
agents mcp list
|
|
90
97
|
```
|
|
91
98
|
|
|
92
|
-
|
|
99
|
+
Skills, slash commands, rules, hooks, and permissions work the same way -- install once in `~/.agents/`, synced to every agent's native format automatically.
|
|
93
100
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
101
|
+
```bash
|
|
102
|
+
agents skills add gh:yourteam/python-expert # Knowledge pack -> all agents
|
|
103
|
+
agents commands add gh:yourteam/commands # Slash commands -> all agents
|
|
104
|
+
agents rules add gh:team/rules # AGENTS.md -> CLAUDE.md, GEMINI.md, .cursorrules
|
|
105
|
+
agents permissions add ./perms # Permissions -> auto-converted per agent
|
|
106
|
+
```
|
|
100
107
|
|
|
101
|
-
|
|
108
|
+
Write one `AGENTS.md`. It becomes `CLAUDE.md` for Claude Code, `GEMINI.md` for Gemini CLI, `.cursorrules` for Cursor.
|
|
102
109
|
|
|
103
110
|
---
|
|
104
111
|
|
|
105
|
-
##
|
|
106
|
-
|
|
107
|
-
Other coding agents usually run in non-TTY shells. `agents` now supports that mode directly:
|
|
112
|
+
## Run any agent
|
|
108
113
|
|
|
109
114
|
```bash
|
|
110
|
-
agents
|
|
111
|
-
agents
|
|
112
|
-
agents
|
|
113
|
-
agents skills add --names agents-cli --agents claude@default
|
|
114
|
-
agents install ./team-agent-pack --agents codex@0.113.0
|
|
115
|
-
agents mcp add postgres --agents claude@2.1.79 -- npx -y @modelcontextprotocol/server-postgres
|
|
116
|
-
agents mcp register postgres
|
|
117
|
-
agents sessions <session-id> --markdown
|
|
118
|
-
agents routines view <job-name>
|
|
115
|
+
agents run claude "Find all auth vulnerabilities in src/"
|
|
116
|
+
agents run codex "Fix the issues Claude found"
|
|
117
|
+
agents run gemini "Write tests for the fixed code"
|
|
119
118
|
```
|
|
120
119
|
|
|
121
|
-
|
|
120
|
+
Each resolves to the project-pinned version with skills, MCP servers, and permissions already synced.
|
|
122
121
|
|
|
123
|
-
-
|
|
124
|
-
- Use `--yes` when a command would otherwise ask for default sync or confirmation choices.
|
|
125
|
-
- Use `--names` with `commands`, `skills`, `hooks`, `rules`, and `permissions` to install from central storage without a checkbox prompt.
|
|
126
|
-
- Use `agent@version` or `agent@default` with `--agents` when you need an exact managed version.
|
|
127
|
-
- Long `view` commands print directly in non-interactive shells instead of opening `less`.
|
|
128
|
-
|
|
129
|
-
If a command still needs a human-only picker, it now exits with a plain-text hint that shows the matching non-interactive form.
|
|
130
|
-
|
|
131
|
-
---
|
|
122
|
+
### Rate-limited? Keep working.
|
|
132
123
|
|
|
133
|
-
|
|
124
|
+
```bash
|
|
125
|
+
# Claude Code hits a rate limit -> Codex picks up automatically. Same project, same config.
|
|
126
|
+
agents run claude "refactor auth module" --mode edit --fallback codex,gemini
|
|
127
|
+
```
|
|
134
128
|
|
|
135
|
-
|
|
129
|
+
### Multiple accounts? Spread the load.
|
|
136
130
|
|
|
137
131
|
```bash
|
|
138
|
-
|
|
139
|
-
agents
|
|
140
|
-
agents sessions --project agents-cli
|
|
141
|
-
agents sessions --agent gemini "session discovery"
|
|
132
|
+
# Picks the signed-in account you haven't used recently.
|
|
133
|
+
agents run claude "summarize recent commits" --rotate
|
|
142
134
|
```
|
|
143
135
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
- Session ID or short ID
|
|
147
|
-
- Prompt text / topic text
|
|
148
|
-
- Project name
|
|
149
|
-
- Account email
|
|
150
|
-
- Agent name or version
|
|
136
|
+
`--rotate` cycles across installed versions of the same agent -- useful when you have multiple accounts and want to spread usage instead of burning through one.
|
|
151
137
|
|
|
152
|
-
|
|
138
|
+
### Chain agents
|
|
153
139
|
|
|
154
|
-
|
|
140
|
+
```bash
|
|
141
|
+
agents run claude "Review PRs merged this week, summarize risks" \
|
|
142
|
+
| agents run codex "Write regression tests for the top 3 risks"
|
|
143
|
+
```
|
|
155
144
|
|
|
156
|
-
|
|
145
|
+
Supports plan (read-only) and edit modes, effort levels, JSON output for scripting, and timeout limits.
|
|
157
146
|
|
|
158
|
-
|
|
147
|
+
### One protocol, every harness
|
|
159
148
|
|
|
160
149
|
```bash
|
|
161
|
-
|
|
162
|
-
agents
|
|
150
|
+
# Typed event stream instead of raw stdout. Same command, any supported agent.
|
|
151
|
+
agents run claude "review this diff" --acp --json
|
|
163
152
|
```
|
|
164
153
|
|
|
165
|
-
|
|
154
|
+
`--acp` routes through the [Agent Client Protocol](https://agentclientprotocol.com/) so you get a unified event stream -- `agent_message_chunk`, `tool_call`, `plan_update`, `stop_reason` -- instead of writing a parser per CLI. File writes and shell commands flow through agents-cli, which means `--mode plan` becomes a real sandbox: the write RPC is denied, not just unused.
|
|
166
155
|
|
|
167
|
-
|
|
156
|
+
Works today with claude, codex, gemini, cursor, opencode, openclaw. Other harnesses keep running on the direct-exec path.
|
|
168
157
|
|
|
169
158
|
---
|
|
170
159
|
|
|
171
|
-
##
|
|
172
|
-
|
|
173
|
-
### Skills
|
|
160
|
+
## Sessions across agents
|
|
174
161
|
|
|
175
|
-
|
|
162
|
+
When you run multiple agents, conversations scatter across tools. Session search brings them together.
|
|
176
163
|
|
|
177
164
|
```bash
|
|
178
|
-
|
|
179
|
-
agents
|
|
180
|
-
agents skills list # See what's installed
|
|
181
|
-
agents skills view python-expert # View skill details and rules
|
|
182
|
-
```
|
|
165
|
+
# Where was that auth conversation? Search Claude Code, Codex, Gemini CLI, OpenCode at once.
|
|
166
|
+
agents sessions "auth middleware"
|
|
183
167
|
|
|
184
|
-
|
|
168
|
+
# Filter by agent, project, or time window
|
|
169
|
+
agents sessions --agent codex --since 7d
|
|
170
|
+
agents sessions --project my-app
|
|
185
171
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
error-handling.md
|
|
192
|
-
testing.md
|
|
172
|
+
# Read a full conversation
|
|
173
|
+
agents sessions a1b2c3d4 --markdown
|
|
174
|
+
|
|
175
|
+
# Just the last 3 turns, user messages only
|
|
176
|
+
agents sessions a1b2c3d4 --last 3 --include user
|
|
193
177
|
```
|
|
194
178
|
|
|
195
|
-
|
|
179
|
+
Interactive picker when you're in a terminal. Structured output (`--json`, `--markdown`, filtered by role or turn count) when piped.
|
|
196
180
|
|
|
197
|
-
|
|
181
|
+
Backed by a SQLite + FTS5 index at `~/.agents-system/sessions/sessions.db` with incremental scanning -- warm reads in ~100ms. External tools can consume `--json` output as a programmatic observability layer; see [docs/05-sessions.md](docs/05-sessions.md) for the schema and [docs/06-observability.md](docs/06-observability.md) for the consumption patterns.
|
|
198
182
|
|
|
199
|
-
|
|
200
|
-
agents search notion # Find MCP servers
|
|
201
|
-
agents install mcp:com.notion/mcp # Install + register with ALL agents
|
|
202
|
-
agents mcp list # See what's registered
|
|
203
|
-
```
|
|
183
|
+
---
|
|
204
184
|
|
|
205
|
-
|
|
185
|
+
## Run open models through Claude Code (experimental)
|
|
206
186
|
|
|
207
|
-
|
|
187
|
+
> **Note:** Profiles are experimental. Enable with `agents beta profiles enable`.
|
|
208
188
|
|
|
209
189
|
```bash
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
agents
|
|
190
|
+
# Kimi K2.5 responding inside Claude Code's UI, tools, and skills.
|
|
191
|
+
# No proxy server. No LiteLLM. One OpenRouter key, stored in Keychain.
|
|
192
|
+
agents profiles add kimi
|
|
193
|
+
agents run kimi "refactor this file"
|
|
213
194
|
```
|
|
214
195
|
|
|
215
|
-
|
|
196
|
+
Built-in presets (all via OpenRouter, one shared key):
|
|
197
|
+
|
|
198
|
+
| Preset | Model | Notes |
|
|
199
|
+
|---|---|---|
|
|
200
|
+
| `kimi` | Kimi K2.5 | #1 HumanEval. Reasoning -- interactive only. |
|
|
201
|
+
| `minimax` | MiniMax M2.5 | #1 SWE-bench Verified. Reasoning. |
|
|
202
|
+
| `glm` | GLM 5 | #1 Chatbot Arena (open-weight). |
|
|
203
|
+
| `qwen` | Qwen3 Coder Next | Latest coding Qwen. Print-safe. |
|
|
204
|
+
| `deepseek` | DeepSeek Chat V3 | Latest non-reasoning. Print-safe. |
|
|
205
|
+
|
|
206
|
+
A profile swaps the model while keeping Claude Code as the agent runtime -- same UI, slash commands, skills, MCP tools. Under the hood: `ANTHROPIC_BASE_URL` + `ANTHROPIC_MODEL`, auth from Keychain at spawn time.
|
|
207
|
+
|
|
208
|
+
Custom endpoints (Ollama, vLLM) work too -- drop a YAML in `~/.agents/profiles/`:
|
|
209
|
+
|
|
210
|
+
```yaml
|
|
211
|
+
name: local-qwen
|
|
212
|
+
host: { agent: claude }
|
|
213
|
+
env:
|
|
214
|
+
ANTHROPIC_BASE_URL: https://ollama.internal
|
|
215
|
+
ANTHROPIC_MODEL: qwen3.6:35b
|
|
216
|
+
auth:
|
|
217
|
+
envVar: ANTHROPIC_AUTH_TOKEN
|
|
218
|
+
keychainItem: agents-cli.ollama.token
|
|
219
|
+
```
|
|
216
220
|
|
|
217
|
-
|
|
221
|
+
Profile YAML has no secrets -- safe to `agents repo push` to a shared repo. `agents profiles presets` lists the full catalog.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Teams
|
|
218
226
|
|
|
219
227
|
```bash
|
|
220
|
-
agents
|
|
221
|
-
|
|
228
|
+
agents teams create auth-feature
|
|
229
|
+
|
|
230
|
+
# Research first, then implement, then test.
|
|
231
|
+
agents teams add auth-feature claude "Research auth libraries" --name researcher
|
|
232
|
+
agents teams add auth-feature codex "Draft the migration" --name migrator --after researcher
|
|
233
|
+
agents teams add auth-feature claude "Write tests for the new code" --name tester --after migrator
|
|
234
|
+
|
|
235
|
+
agents teams start auth-feature # Fires teammates whose deps are done
|
|
236
|
+
agents teams status auth-feature # Who's working, what they changed, what they said
|
|
222
237
|
```
|
|
223
238
|
|
|
224
|
-
|
|
239
|
+
Teammates run detached -- close your terminal, they keep working. Check in with `teams status`, read full output with `teams logs <name>`, clean up with `teams disband`.
|
|
225
240
|
|
|
226
|
-
|
|
241
|
+
Team state is observable via `agents teams list --json` / `agents teams status --json`. External tools join it with `sessions --json` (teammates get `isTeamOrigin: true`) and `cloud list --json` (for `--cloud` teammates) to build a unified fleet view. See [docs/06-observability.md](docs/06-observability.md).
|
|
227
242
|
|
|
228
|
-
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Secrets
|
|
229
246
|
|
|
230
247
|
```bash
|
|
231
|
-
|
|
232
|
-
agents
|
|
233
|
-
agents
|
|
234
|
-
agents
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
agents
|
|
248
|
+
# API keys in Keychain, not in .env files.
|
|
249
|
+
agents secrets create prod-stripe
|
|
250
|
+
agents secrets add prod-stripe STRIPE_SECRET_KEY # Prompts, stores in Keychain
|
|
251
|
+
agents secrets add prod-stripe TEST_CARD --value "4242..."
|
|
252
|
+
|
|
253
|
+
# Injected at run time. The YAML on disk has only refs.
|
|
254
|
+
agents run claude "charge a test card" --secrets prod-stripe
|
|
238
255
|
```
|
|
239
256
|
|
|
240
|
-
|
|
257
|
+
<p align="center">
|
|
258
|
+
<img src="assets/secrets.svg" alt="How agents-cli secrets work: stripe.yml holds a pointer, the macOS Keychain holds the value, agents-cli resolves at runtime and injects the env into the child process" width="100%" />
|
|
259
|
+
</p>
|
|
260
|
+
|
|
261
|
+
Merge order: profile env < `--secrets` < `--env K=V`. A missing keychain item aborts before the child starts.
|
|
262
|
+
|
|
263
|
+
---
|
|
241
264
|
|
|
242
|
-
|
|
265
|
+
## Routines
|
|
243
266
|
|
|
244
267
|
```bash
|
|
268
|
+
# Claude Code reviews PRs every weekday at 9 AM. Scheduler auto-starts.
|
|
245
269
|
agents routines add daily-digest \
|
|
246
270
|
--schedule "0 9 * * 1-5" \
|
|
247
271
|
--agent claude \
|
|
248
272
|
--prompt "Review yesterday's PRs and summarize key changes"
|
|
249
|
-
# The scheduler auto-starts on first add — no separate daemon command needed.
|
|
250
273
|
|
|
251
|
-
agents routines list #
|
|
252
|
-
agents routines
|
|
253
|
-
agents routines logs daily-digest # Check execution
|
|
274
|
+
agents routines list # All jobs + next run times
|
|
275
|
+
agents routines run daily-digest # Test it now, ignore the schedule
|
|
276
|
+
agents routines logs daily-digest # Check last execution
|
|
254
277
|
```
|
|
255
278
|
|
|
256
279
|
Jobs run sandboxed -- agents only see directories and tools you explicitly allow.
|
|
257
280
|
|
|
258
|
-
|
|
281
|
+
---
|
|
259
282
|
|
|
260
|
-
|
|
283
|
+
## PTY
|
|
261
284
|
|
|
262
285
|
```bash
|
|
263
|
-
agents
|
|
264
|
-
agents
|
|
265
|
-
agents
|
|
286
|
+
# Give agents a real terminal for REPLs, TUIs, interactive programs.
|
|
287
|
+
SID=$(agents pty start)
|
|
288
|
+
agents pty exec $SID "python3"
|
|
289
|
+
agents pty screen $SID # Clean text, no ANSI -- what a human sees
|
|
290
|
+
agents pty write $SID "print('hello')\n"
|
|
291
|
+
agents pty stop $SID
|
|
266
292
|
```
|
|
267
293
|
|
|
268
|
-
|
|
294
|
+
A sidecar server holds sessions alive between CLI calls. `screen` renders via xterm-headless. Sessions auto-clean after 30 minutes idle.
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Portable setup
|
|
269
299
|
|
|
270
300
|
```bash
|
|
271
|
-
|
|
272
|
-
agents
|
|
301
|
+
# New machine? One command.
|
|
302
|
+
agents init
|
|
303
|
+
|
|
304
|
+
# Installs CLIs, registers MCP servers, syncs skills/commands/rules/hooks,
|
|
305
|
+
# sets up shims, configures defaults. Done.
|
|
273
306
|
|
|
274
|
-
agents
|
|
275
|
-
agents permissions add ./perms # Install permission groups
|
|
307
|
+
agents repo push # Snapshot your config to git
|
|
276
308
|
```
|
|
277
309
|
|
|
278
|
-
|
|
310
|
+
### How config is layered
|
|
279
311
|
|
|
280
|
-
|
|
312
|
+
Two repos with the same shape, different roles:
|
|
281
313
|
|
|
282
|
-
|
|
314
|
+
| Repo | Role | Owner |
|
|
315
|
+
|---|---|---|
|
|
316
|
+
| `~/.agents-system/` | **System repo** — core/built-in skills, commands, hooks, rules, MCP configs, permissions, and profiles that ship with `agents-cli`. The defaults every install gets. | Maintained upstream at [phnx-labs/.agents-system](https://github.com/phnx-labs/.agents-system) |
|
|
317
|
+
| `~/.agents/` | **User repo** — your personal additions and overrides. This is what `agents repo push`/`pull` syncs. | You |
|
|
283
318
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
agents
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
agents use claude@2.0.0 -p # Pin to this project
|
|
290
|
-
agents list # Show all installed versions
|
|
291
|
-
agents view claude # Show version details + resources
|
|
292
|
-
|
|
293
|
-
# Skills
|
|
294
|
-
agents skills list # List installed skills
|
|
295
|
-
agents skills add <source> # Install from git/local
|
|
296
|
-
agents skills remove <name> # Remove a skill
|
|
297
|
-
agents skills view <name> # View skill details
|
|
298
|
-
|
|
299
|
-
# Commands
|
|
300
|
-
agents commands list # List slash commands
|
|
301
|
-
agents commands add <source> # Install commands
|
|
302
|
-
agents commands view <name> # View command content
|
|
303
|
-
|
|
304
|
-
# Rules / Instructions
|
|
305
|
-
agents rules list # List per-agent instruction files
|
|
306
|
-
agents rules add <source> # Install from git/local
|
|
307
|
-
agents rules remove <agent> # Remove rule file
|
|
308
|
-
agents rules view <agent> # View rule file content
|
|
309
|
-
|
|
310
|
-
# MCP servers
|
|
311
|
-
agents search <query> # Find in registry
|
|
312
|
-
agents install mcp:<name> # Install + register
|
|
313
|
-
agents mcp list # Show registered servers
|
|
314
|
-
agents mcp add <name> <cmd> # Register manually
|
|
315
|
-
|
|
316
|
-
# Sync
|
|
317
|
-
agents pull [source] # Sync from repo
|
|
318
|
-
agents push # Push changes back
|
|
319
|
-
|
|
320
|
-
# Drive
|
|
321
|
-
agents drive remote <user@host> # Set sync target
|
|
322
|
-
agents drive pull # Pull sessions from remote
|
|
323
|
-
agents drive push # Push sessions to remote
|
|
324
|
-
agents drive attach # Use drive as active agent home
|
|
325
|
-
agents drive detach # Restore to version home
|
|
326
|
-
agents drive status # Show drive state
|
|
327
|
-
|
|
328
|
-
# Execution
|
|
329
|
-
agents run <agent> <prompt> # Run agent
|
|
330
|
-
agents sessions <id> --markdown # Read a session by exact ID
|
|
331
|
-
agents sessions --agent codex # Interactive filtered session search
|
|
332
|
-
agents sessions --project agents # Interactive project-scoped session search
|
|
333
|
-
agents routines add <name> # Schedule a job (scheduler auto-starts)
|
|
334
|
-
agents routines list # Show all jobs
|
|
335
|
-
agents routines status # Check scheduler status + upcoming runs
|
|
336
|
-
|
|
337
|
-
# Teams (orchestrate multiple agents on a shared task)
|
|
338
|
-
agents teams create <team> # Start a new team
|
|
339
|
-
agents teams add <team> <agent> <task> # Add a teammate (runs immediately)
|
|
340
|
-
--name alice # give them a handle
|
|
341
|
-
--after alice,bob # stage as pending until deps complete
|
|
342
|
-
--mode plan|edit|full # permissions
|
|
343
|
-
--model <model> --env K=V # same passthroughs as exec
|
|
344
|
-
agents teams start <team> # Launch pending teammates whose deps are done
|
|
345
|
-
agents teams status <team> # Team standup (pass --since <cursor> for deltas)
|
|
346
|
-
agents teams ls # List teams (--agent, --status, --since filters)
|
|
347
|
-
agents teams remove <team> <teammate> # Let one teammate go (name or UUID prefix)
|
|
348
|
-
agents teams disband <team> # Stop everyone, remove the team
|
|
349
|
-
agents teams logs <teammate> # Read their raw log
|
|
350
|
-
agents teams doctor # Check which agents can join a team
|
|
351
|
-
|
|
352
|
-
# PTY sessions
|
|
353
|
-
agents pty start # Start a PTY session (returns ID)
|
|
354
|
-
agents pty exec <id> <command> # Run a command in the session
|
|
355
|
-
agents pty screen <id> # Render terminal as clean text
|
|
356
|
-
agents pty write <id> <input> # Send keystrokes (\n \t \e \xHH)
|
|
357
|
-
agents pty read <id> # Read raw output
|
|
358
|
-
agents pty signal <id> INT # Send signal
|
|
359
|
-
agents pty list # Show active sessions
|
|
360
|
-
agents pty stop <id> # Kill a session
|
|
361
|
-
agents pty server status # Check sidecar server
|
|
362
|
-
```
|
|
319
|
+
**Version pinning:** `agents.yaml` at project root pins which agent version to use (like `.nvmrc` for Node).
|
|
320
|
+
|
|
321
|
+
**Resource resolution:** When syncing resources (commands, skills, rules, hooks, MCP, permissions), the order is **project > user > system**. A `.agents/` directory at project root wins, then `~/.agents/`, then `~/.agents-system/`. Same-named resources higher in the chain override lower ones; everything else unions in.
|
|
322
|
+
|
|
323
|
+
See [docs/00-concepts.md](docs/00-concepts.md) for the full mental model: DotAgents repos, resource kinds, and how resolution works end-to-end.
|
|
363
324
|
|
|
364
325
|
---
|
|
365
326
|
|
|
366
|
-
##
|
|
327
|
+
## Private skills
|
|
367
328
|
|
|
368
|
-
|
|
329
|
+
Keep work or personal skills in a separate repo — public ones in `~/.agents/`, private ones in an extra repo that merges in at sync time.
|
|
369
330
|
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
description: Python code analysis, type hints, and testing patterns
|
|
374
|
-
author: Your Name
|
|
375
|
-
version: 1.0.0
|
|
376
|
-
keywords: [python, testing, types]
|
|
377
|
-
---
|
|
331
|
+
```bash
|
|
332
|
+
# Add a private repo for work-only skills
|
|
333
|
+
agents repo add gh:yourname/.agents-work
|
|
378
334
|
|
|
379
|
-
#
|
|
335
|
+
# Add with a custom alias
|
|
336
|
+
agents repo add git@github.com:acme/team-skills.git --as acme
|
|
380
337
|
|
|
381
|
-
|
|
338
|
+
agents repo list # Primary + every registered extra
|
|
339
|
+
agents repo pull # Pull updates for all enabled extras
|
|
340
|
+
agents repo disable acme # Stop merging without deleting
|
|
341
|
+
agents repo remove acme # Unregister and delete the clone
|
|
382
342
|
```
|
|
383
343
|
|
|
384
|
-
|
|
344
|
+
Extras clone into `~/.agents-system/.repos/<alias>/` and ship the same layout as the primary (`skills/`, `commands/`, `hooks/`, `rules/`). Their contents merge into agent version homes after the primary's — so `~/.agents/` always wins on name collisions. `agents skills list` shows which repo each skill came from.
|
|
385
345
|
|
|
386
346
|
---
|
|
387
347
|
|
|
388
348
|
## Compatibility
|
|
389
349
|
|
|
390
|
-
| Agent | Versions | MCP | Commands | Skills | Rules | Hooks | Permissions | Routines | Teams |
|
|
391
|
-
|
|
392
|
-
| Claude | yes | yes | yes | yes | CLAUDE.md | yes | yes | yes | yes |
|
|
393
|
-
| Codex | yes | yes | yes | yes | AGENTS.md | yes | yes | yes | yes |
|
|
394
|
-
| Gemini | yes | yes | yes | yes | GEMINI.md | yes | -- | yes | yes |
|
|
395
|
-
|
|
|
396
|
-
|
|
|
397
|
-
|
|
|
350
|
+
| Agent | Versions | MCP | Commands | Skills | Rules | Hooks | Plugins | Permissions | Routines | Teams |
|
|
351
|
+
|-------|----------|-----|----------|--------|-------|-------|---------|-------------|----------|-------|
|
|
352
|
+
| Claude Code | yes | yes | yes | yes | CLAUDE.md | yes | yes | yes | yes | yes |
|
|
353
|
+
| Codex CLI | yes | yes | yes | yes | AGENTS.md | yes (>= 0.116.0) | -- | yes | yes | yes |
|
|
354
|
+
| Gemini CLI | yes | yes | yes | yes | GEMINI.md | yes (>= 0.26.0) | -- | -- | yes | yes |
|
|
355
|
+
| OpenClaw | yes | yes | -- | yes | workspace/AGENTS.md | yes | yes | -- | -- | -- |
|
|
356
|
+
| Cursor | yes | yes | yes | yes | .cursorrules | -- | -- | -- | -- | yes |
|
|
357
|
+
| OpenCode | yes | yes | yes | yes | AGENTS.md | -- | -- | yes | -- | yes |
|
|
358
|
+
| Copilot | yes | yes | yes | yes | AGENTS.md | -- | -- | -- | -- | -- |
|
|
359
|
+
| Amp | yes | yes | yes | yes | AGENTS.md | -- | -- | -- | -- | -- |
|
|
360
|
+
| Kiro | yes | yes | yes | yes | AGENTS.md | -- | -- | -- | -- | -- |
|
|
361
|
+
| Goose | yes | yes | -- | -- | AGENTS.md | -- | -- | -- | -- | -- |
|
|
362
|
+
| Roo Code | yes | yes | yes | yes | AGENTS.md | -- | -- | -- | -- | -- |
|
|
363
|
+
|
|
364
|
+
Hooks columns marked `yes (>= X.Y.Z)` are version-gated: `agents hooks add` skips with a clear message when the installed binary is older than the listed version, instead of writing config the older binary would silently ignore. OpenCode's plugin-based hook system is on the roadmap; the entry is `--` until a writer ships.
|
|
365
|
+
|
|
366
|
+
Codex command sync is version-aware: Codex `0.116.x` and older receive slash commands in `.codex/prompts/`; Codex `0.117.0+` receives those commands as generated skills so they can be invoked with `$name`.
|
|
398
367
|
|
|
399
368
|
## FAQ
|
|
400
369
|
|
|
401
370
|
### Why use `agents` instead of `claude` / `codex` / `gemini` directly?
|
|
402
371
|
|
|
403
|
-
|
|
372
|
+
Claude Code, Codex CLI, and Gemini CLI each have their own config format, MCP setup, version management, and skill system. If you use more than one, you maintain N copies of everything. `agents` gives you one interface, one config source, and one place to pin versions -- plus features the individual CLIs don't ship: cross-agent pipelines, shared teams, unified session search, and project-pinned versions like `.nvmrc`.
|
|
373
|
+
|
|
374
|
+
### Is it free?
|
|
375
|
+
|
|
376
|
+
Yes. This developer tool is entirely free because we believe developers should have the best tools — fast and robust — so they can create the best products for their users.
|
|
377
|
+
|
|
378
|
+
### Is this like `nvm` / `mise` / `asdf` for AI agents?
|
|
379
|
+
|
|
380
|
+
For version management, yes. `agents-cli` reads `agents.yaml` from the project root, walks up the directory tree, and routes to the correct binary per project. But it also manages agent-native resources (skills, MCP servers, commands, hooks, permissions) that language version managers don't touch.
|
|
381
|
+
|
|
382
|
+
### How does version switching actually work?
|
|
383
|
+
|
|
384
|
+
Same approach as nvm, pyenv, and rbenv — battle-tested by millions of developers. When you install a version, we set up a shim script that resolves the version from `agents.yaml` and runs the right binary. Each version has an isolated config directory. No manual setup required.
|
|
385
|
+
|
|
386
|
+
### How do I share my agent setup with my team?
|
|
404
387
|
|
|
405
|
-
|
|
388
|
+
Add a `.agents/` directory at your project root with your skills, hooks, rules, and commands. Resources merge automatically: project > user (`~/.agents/`) > system (`~/.agents-system/`). Commit it with your repo and teammates get the same agent environment.
|
|
406
389
|
|
|
407
|
-
|
|
390
|
+
### Do I need to write separate rules for each agent (CLAUDE.md, GEMINI.md, etc.)?
|
|
408
391
|
|
|
409
|
-
|
|
392
|
+
No. Write one `AGENTS.md` — it's the canonical source. We automatically sync it to each agent's expected location (`CLAUDE.md` for Claude Code, `GEMINI.md` for Gemini CLI, `.cursorrules` for Cursor). Same content, zero duplication.
|
|
410
393
|
|
|
411
|
-
|
|
394
|
+
### Do agents use API keys or subscriptions?
|
|
395
|
+
|
|
396
|
+
Your choice. We hand off to the original CLI process — use your existing subscription or API key. This is intentional: subscription pricing is usually cheaper than API token pricing for individual users. Configure each agent however you want.
|
|
412
397
|
|
|
413
398
|
### Does it store my API keys or send telemetry?
|
|
414
399
|
|
|
415
|
-
No.
|
|
400
|
+
No. API keys come from your shell environment or each agent CLI's existing auth. No telemetry, no phone-home. User content lives in `~/.agents/`; operational state (versions, shims, sessions, caches) lives in `~/.agents-system/`.
|
|
401
|
+
|
|
402
|
+
### Which platforms?
|
|
403
|
+
|
|
404
|
+
macOS and Linux. Windows via WSL works but isn't first-class yet.
|
|
405
|
+
|
|
406
|
+
**macOS-only features:** Keychain-based secrets (`agents secrets`, `agents profiles login`) require macOS. On Linux, use environment variables or `.env` files for API keys. Native Linux credential store support is planned.
|
|
407
|
+
|
|
408
|
+
### Do I need Node.js?
|
|
416
409
|
|
|
417
|
-
|
|
410
|
+
The installer tries Bun first (faster), falls back to npm. Node 18+ required at runtime.
|
|
418
411
|
|
|
419
|
-
|
|
412
|
+
### Can I use it in CI?
|
|
420
413
|
|
|
421
|
-
|
|
414
|
+
Yes -- `agents run` is non-interactive by default. `--yes` auto-accepts prompts, `--json` for structured output. Pass explicit names and IDs instead of relying on interactive pickers.
|
|
422
415
|
|
|
423
|
-
|
|
416
|
+
### What happens to my config when I switch versions?
|
|
424
417
|
|
|
425
|
-
|
|
418
|
+
Each version has its own isolated config directory. Switching just repoints a symlink — your per-version config stays untouched. On first migration (if you had a real `~/.claude/` directory before using agents-cli), that gets backed up once to `~/.agents-system/backups/`.
|
|
426
419
|
|
|
427
|
-
|
|
420
|
+
### Does session search use RAG or semantic search?
|
|
428
421
|
|
|
429
|
-
|
|
422
|
+
No — it's a SQLite + FTS5 full-text index. Fast, flexible, and robust. Agents can query sessions programmatically. Most commands support `--json` output for scripting with jq.
|
|
430
423
|
|
|
431
|
-
|
|
424
|
+
### How do I use custom or local models?
|
|
425
|
+
|
|
426
|
+
Profiles (experimental — enable with `agents beta profiles enable`). Works with LiteLLM Proxy, Ollama, or any OpenAI-compatible endpoint. Drop a YAML in `~/.agents/profiles/` pointing to your endpoint.
|
|
427
|
+
|
|
428
|
+
### Can I add support for a new agent?
|
|
429
|
+
|
|
430
|
+
Agents are defined in [src/lib/agents.ts](src/lib/agents.ts) -- each is a config object declaring commands dir, rules file, and capabilities. PRs welcome.
|
|
432
431
|
|
|
433
432
|
### What's the relationship to Phoenix Labs / Rush?
|
|
434
433
|
|
|
435
|
-
`agents-cli` is an open client maintained by Phoenix Labs. Rush is a separate product
|
|
434
|
+
`agents-cli` is an open client maintained by Phoenix Labs. Rush is a separate product. No Rush account required, no upsell.
|
|
436
435
|
|
|
437
436
|
## Contributing
|
|
438
437
|
|
|
439
|
-
PRs and issues welcome. To develop locally:
|
|
440
|
-
|
|
441
438
|
```bash
|
|
442
439
|
git clone https://github.com/phnx-labs/agents-cli
|
|
443
440
|
cd agents-cli
|
|
444
|
-
bun install
|
|
445
|
-
bun run build
|
|
446
|
-
bun test
|
|
441
|
+
bun install && bun run build && bun test
|
|
447
442
|
```
|
|
448
443
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
For a full comparison with other tools in the ecosystem — Rivet, Agentloom, mise, skills.sh, cass, Microsoft APM — see [docs/04-landscape.md](docs/04-landscape.md).
|
|
444
|
+
Commands in [src/commands/](src/commands/), libraries in [src/lib/](src/lib/), tests as `*.test.ts` under vitest. [CLAUDE.md](CLAUDE.md) has the full style guide. [docs/04-landscape.md](docs/04-landscape.md) covers the competitive landscape.
|
|
452
445
|
|
|
453
446
|
## License
|
|
454
447
|
|
|
455
|
-
MIT
|
|
448
|
+
MIT -- see [LICENSE](./LICENSE).
|