@phnx-labs/agents-cli 0.1.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 +283 -372
- 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 +8 -1
- package/dist/commands/cloud.js +108 -22
- 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 +96 -27
- 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 +16 -4
- 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 +9 -1
- package/dist/commands/profiles.js +56 -7
- 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 +58 -128
- 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 +8 -1
- package/dist/commands/secrets.js +235 -63
- 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 +188 -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 +317 -24
- package/dist/index.d.ts +7 -2
- package/dist/index.js +172 -34
- 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 +197 -21
- 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 +9 -3
- package/dist/lib/cloud/codex.js +53 -13
- package/dist/lib/cloud/factory.d.ts +8 -3
- package/dist/lib/cloud/factory.js +19 -3
- package/dist/lib/cloud/registry.d.ts +10 -1
- package/dist/lib/cloud/registry.js +14 -3
- package/dist/lib/cloud/rush.d.ts +63 -3
- package/dist/lib/cloud/rush.js +273 -20
- package/dist/lib/cloud/store.d.ts +13 -1
- package/dist/lib/cloud/store.js +23 -4
- package/dist/lib/cloud/stream.d.ts +6 -1
- package/dist/lib/cloud/stream.js +95 -39
- package/dist/lib/cloud/types.d.ts +153 -8
- package/dist/lib/cloud/types.js +34 -2
- 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 +23 -6
- package/dist/lib/exec.js +53 -17
- 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 +119 -101
- 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 +10 -4
- package/dist/lib/models.js +36 -15
- 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 +10 -1
- package/dist/lib/profiles-presets.js +9 -1
- package/dist/lib/profiles.d.ts +35 -1
- package/dist/lib/profiles.js +36 -15
- 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 +40 -13
- package/dist/lib/rotate.js +238 -40
- 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 → secrets/bundles.d.ts} +12 -2
- package/dist/lib/{secrets-bundles.js → secrets/bundles.js} +38 -17
- 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 +12 -1
- package/dist/lib/session/artifacts.js +25 -5
- 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 +16 -2
- package/dist/lib/session/types.js +10 -2
- package/dist/lib/shims.d.ts +64 -5
- package/dist/lib/shims.js +309 -47
- 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 +112 -27
- package/dist/lib/state.js +320 -148
- 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 +32 -1
- package/dist/lib/usage.js +70 -6
- package/dist/lib/version-duplicates.d.ts +21 -0
- package/dist/lib/version-duplicates.js +90 -0
- package/dist/lib/versions.d.ts +33 -4
- package/dist/lib/versions.js +376 -108
- package/package.json +32 -17
- 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/cloud.d.ts.map +0 -1
- package/dist/commands/cloud.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/profiles.d.ts.map +0 -1
- package/dist/commands/profiles.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/secrets.d.ts.map +0 -1
- package/dist/commands/secrets.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 -239
- package/dist/lib/__tests__/models.test.js.map +0 -1
- package/dist/lib/__tests__/rotate.test.d.ts +0 -2
- package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
- package/dist/lib/__tests__/rotate.test.js +0 -80
- package/dist/lib/__tests__/rotate.test.js.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
- package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
- package/dist/lib/__tests__/secrets.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets.test.js +0 -90
- package/dist/lib/__tests__/secrets.test.js.map +0 -1
- package/dist/lib/__tests__/shims.test.d.ts +0 -2
- package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
- package/dist/lib/__tests__/shims.test.js +0 -39
- package/dist/lib/__tests__/shims.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 -220
- package/dist/lib/__tests__/usage.test.js.map +0 -1
- package/dist/lib/__tests__/versions.test.d.ts +0 -2
- package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
- package/dist/lib/__tests__/versions.test.js +0 -63
- package/dist/lib/__tests__/versions.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/cloud/codex.d.ts.map +0 -1
- package/dist/lib/cloud/codex.js.map +0 -1
- package/dist/lib/cloud/factory.d.ts.map +0 -1
- package/dist/lib/cloud/factory.js.map +0 -1
- package/dist/lib/cloud/registry.d.ts.map +0 -1
- package/dist/lib/cloud/registry.js.map +0 -1
- package/dist/lib/cloud/rush.d.ts.map +0 -1
- package/dist/lib/cloud/rush.js.map +0 -1
- package/dist/lib/cloud/store.d.ts.map +0 -1
- package/dist/lib/cloud/store.js.map +0 -1
- package/dist/lib/cloud/stream.d.ts.map +0 -1
- package/dist/lib/cloud/stream.js.map +0 -1
- package/dist/lib/cloud/types.d.ts.map +0 -1
- package/dist/lib/cloud/types.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/profiles-keychain.d.ts +0 -3
- package/dist/lib/profiles-keychain.d.ts.map +0 -1
- package/dist/lib/profiles-keychain.js +0 -10
- package/dist/lib/profiles-keychain.js.map +0 -1
- package/dist/lib/profiles-presets.d.ts.map +0 -1
- package/dist/lib/profiles-presets.js.map +0 -1
- package/dist/lib/profiles.d.ts.map +0 -1
- package/dist/lib/profiles.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/rotate.d.ts.map +0 -1
- package/dist/lib/rotate.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/secrets-bundles.d.ts.map +0 -1
- package/dist/lib/secrets-bundles.js.map +0 -1
- package/dist/lib/secrets.d.ts +0 -27
- package/dist/lib/secrets.d.ts.map +0 -1
- package/dist/lib/secrets.js +0 -127
- package/dist/lib/secrets.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/artifacts.d.ts.map +0 -1
- package/dist/lib/session/artifacts.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,537 +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
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
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)
|
|
32
55
|
- [Compatibility](#compatibility)
|
|
33
56
|
- [FAQ](#faq)
|
|
34
|
-
- [Contributing](#contributing)
|
|
35
|
-
- [License](#license)
|
|
36
57
|
|
|
37
58
|
---
|
|
38
59
|
|
|
39
|
-
##
|
|
60
|
+
## Pin versions per project
|
|
40
61
|
|
|
41
62
|
```bash
|
|
42
|
-
|
|
43
|
-
agents
|
|
44
|
-
|
|
63
|
+
# This project needs claude@2.0.65 -- newer versions changed tool calling.
|
|
64
|
+
agents use claude@2.0.65 -p
|
|
65
|
+
|
|
66
|
+
# The monorepo uses codex@0.116.0 across the team.
|
|
67
|
+
agents use codex@0.116.0 -p
|
|
45
68
|
```
|
|
46
69
|
|
|
47
|
-
|
|
70
|
+
This creates an `agents.yaml` at the project root:
|
|
48
71
|
|
|
49
|
-
|
|
72
|
+
```yaml
|
|
73
|
+
# agents.yaml (commit this to your repo)
|
|
74
|
+
agents:
|
|
75
|
+
claude: "2.0.65"
|
|
76
|
+
codex: "0.116.0"
|
|
77
|
+
```
|
|
50
78
|
|
|
51
|
-
|
|
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.
|
|
52
80
|
|
|
53
81
|
```bash
|
|
54
|
-
#
|
|
55
|
-
agents
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
# Same pipeline, different project -- different agent versions, same commands
|
|
59
|
-
cd ../other-project
|
|
60
|
-
agents run claude "Review all PRs merged this week, summarize risks"
|
|
61
|
-
# ^ 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
|
|
62
85
|
```
|
|
63
86
|
|
|
64
|
-
Supports plan (read-only) and edit modes, effort levels that map to the right model per agent, and JSON output for scripting.
|
|
65
|
-
|
|
66
87
|
---
|
|
67
88
|
|
|
68
|
-
##
|
|
89
|
+
## One config, every agent
|
|
69
90
|
|
|
70
|
-
|
|
91
|
+
```bash
|
|
92
|
+
# Set up the Notion MCP server once.
|
|
93
|
+
agents install mcp:com.notion/mcp
|
|
94
|
+
|
|
95
|
+
# It's now registered with Claude Code, Codex, Gemini CLI, and Cursor.
|
|
96
|
+
agents mcp list
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Skills, slash commands, rules, hooks, and permissions work the same way -- install once in `~/.agents/`, synced to every agent's native format automatically.
|
|
71
100
|
|
|
72
101
|
```bash
|
|
73
|
-
agents
|
|
74
|
-
agents
|
|
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
|
|
75
106
|
```
|
|
76
107
|
|
|
77
|
-
|
|
108
|
+
Write one `AGENTS.md`. It becomes `CLAUDE.md` for Claude Code, `GEMINI.md` for Gemini CLI, `.cursorrules` for Cursor.
|
|
78
109
|
|
|
79
|
-
|
|
80
|
-
|---|---|---|
|
|
81
|
-
| `kimi` | `moonshotai/kimi-k2.5` | #1 HumanEval (99%), top Kimi. Reasoning — interactive only. |
|
|
82
|
-
| `kimi-chat` | `moonshotai/kimi-k2-0905` | Non-reasoning, print-safe for `agents run`. |
|
|
83
|
-
| `minimax` | `minimax/minimax-m2.5` | #1 SWE-bench Verified (80.2%). Reasoning. |
|
|
84
|
-
| `glm` | `z-ai/glm-5` | #1 Chatbot Arena among open-weight (1451 ELO). |
|
|
85
|
-
| `qwen` | `qwen/qwen3-coder-next` | Latest coding Qwen, sparse MoE 80B/3B active. Print-safe. |
|
|
86
|
-
| `deepseek` | `deepseek/deepseek-chat-v3-0324` | Latest non-reasoning DeepSeek Chat. Print-safe. |
|
|
110
|
+
---
|
|
87
111
|
|
|
88
|
-
|
|
112
|
+
## Run any agent
|
|
89
113
|
|
|
90
|
-
|
|
114
|
+
```bash
|
|
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"
|
|
118
|
+
```
|
|
91
119
|
|
|
92
|
-
|
|
120
|
+
Each resolves to the project-pinned version with skills, MCP servers, and permissions already synced.
|
|
93
121
|
|
|
94
|
-
|
|
122
|
+
### Rate-limited? Keep working.
|
|
95
123
|
|
|
96
|
-
```
|
|
97
|
-
#
|
|
98
|
-
|
|
99
|
-
host: { agent: claude }
|
|
100
|
-
env:
|
|
101
|
-
ANTHROPIC_BASE_URL: https://ollama.internal
|
|
102
|
-
ANTHROPIC_MODEL: qwen3.6:35b
|
|
103
|
-
ANTHROPIC_SMALL_FAST_MODEL: qwen3.6:35b
|
|
104
|
-
auth:
|
|
105
|
-
envVar: ANTHROPIC_AUTH_TOKEN
|
|
106
|
-
keychainItem: agents-cli.ollama.token
|
|
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
|
|
107
127
|
```
|
|
108
128
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
**Note on `--print` and reasoning models:** Claude Code's `--print` mode consolidates response text, but returns empty when the response contains `thinking` blocks. Models flagged REASONING in the preset descriptions work fine interactively (plain `claude` launch with the same env) but not with `agents run --print`. Use the non-reasoning `-chat` variant for scripting.
|
|
129
|
+
### Multiple accounts? Spread the load.
|
|
112
130
|
|
|
113
|
-
|
|
131
|
+
```bash
|
|
132
|
+
# Picks the signed-in account you haven't used recently.
|
|
133
|
+
agents run claude "summarize recent commits" --rotate
|
|
134
|
+
```
|
|
114
135
|
|
|
115
|
-
|
|
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.
|
|
116
137
|
|
|
117
|
-
|
|
138
|
+
### Chain agents
|
|
118
139
|
|
|
119
140
|
```bash
|
|
120
|
-
agents
|
|
121
|
-
agents
|
|
122
|
-
agents secrets set prod-stripe TEST_CARD_NUMBER # prompts, stores in keychain
|
|
123
|
-
agents secrets set prod-stripe STRIPE_API_VERSION --value "2024-06-20"
|
|
124
|
-
agents secrets set prod-stripe GITHUB_TOKEN --env GH_TOKEN # read from parent shell
|
|
125
|
-
agents secrets set prod-stripe GCP_CREDS --file ~/.config/gcloud/creds.json
|
|
126
|
-
|
|
127
|
-
agents run claude "charge a test card" --secrets prod-stripe
|
|
141
|
+
agents run claude "Review PRs merged this week, summarize risks" \
|
|
142
|
+
| agents run codex "Write regression tests for the top 3 risks"
|
|
128
143
|
```
|
|
129
144
|
|
|
130
|
-
|
|
145
|
+
Supports plan (read-only) and edit modes, effort levels, JSON output for scripting, and timeout limits.
|
|
131
146
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
STRIPE_API_VERSION: { value: "2024-06-20" }
|
|
138
|
-
GITHUB_TOKEN: env:GH_TOKEN
|
|
139
|
-
GCP_CREDS: file:~/.config/gcloud/creds.json
|
|
147
|
+
### One protocol, every harness
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Typed event stream instead of raw stdout. Same command, any supported agent.
|
|
151
|
+
agents run claude "review this diff" --acp --json
|
|
140
152
|
```
|
|
141
153
|
|
|
142
|
-
|
|
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.
|
|
155
|
+
|
|
156
|
+
Works today with claude, codex, gemini, cursor, opencode, openclaw. Other harnesses keep running on the direct-exec path.
|
|
143
157
|
|
|
144
158
|
---
|
|
145
159
|
|
|
146
|
-
##
|
|
160
|
+
## Sessions across agents
|
|
147
161
|
|
|
148
|
-
|
|
162
|
+
When you run multiple agents, conversations scatter across tools. Session search brings them together.
|
|
149
163
|
|
|
150
164
|
```bash
|
|
151
|
-
|
|
165
|
+
# Where was that auth conversation? Search Claude Code, Codex, Gemini CLI, OpenCode at once.
|
|
166
|
+
agents sessions "auth middleware"
|
|
152
167
|
|
|
153
|
-
|
|
154
|
-
agents
|
|
155
|
-
agents
|
|
168
|
+
# Filter by agent, project, or time window
|
|
169
|
+
agents sessions --agent codex --since 7d
|
|
170
|
+
agents sessions --project my-app
|
|
156
171
|
|
|
157
|
-
|
|
158
|
-
agents
|
|
159
|
-
agents teams disband auth-feature # stop everyone, clean up
|
|
160
|
-
```
|
|
172
|
+
# Read a full conversation
|
|
173
|
+
agents sessions a1b2c3d4 --markdown
|
|
161
174
|
|
|
162
|
-
|
|
175
|
+
# Just the last 3 turns, user messages only
|
|
176
|
+
agents sessions a1b2c3d4 --last 3 --include user
|
|
177
|
+
```
|
|
163
178
|
|
|
164
|
-
|
|
165
|
-
- `--after name1,name2` stages a teammate as pending. `teams start` fires the ones whose blockers are `completed`. Cycles rejected at add time; a failed blocker keeps its dependents pending so you decide what to do.
|
|
166
|
-
- For Claude teammates, `agent_id` IS the Claude session UUID -- `agents sessions <agent_id> --markdown` opens the full conversation.
|
|
167
|
-
- Modes match `exec`: `plan | edit | full`. `--model`, `--env KEY=VALUE`, `--cwd` all passthroughs too.
|
|
168
|
-
- `teams ls` filters: substring query, `--agent claude[@version]`, `--status working|done|failed|empty`, `--since 2h --until 30d`.
|
|
169
|
-
- Non-TTY output is valid JSON by default, with a `cursor` field in every `status` response for efficient delta polling (`--since <cursor>`).
|
|
179
|
+
Interactive picker when you're in a terminal. Structured output (`--json`, `--markdown`, filtered by role or turn count) when piped.
|
|
170
180
|
|
|
171
|
-
|
|
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.
|
|
172
182
|
|
|
173
183
|
---
|
|
174
184
|
|
|
175
|
-
##
|
|
185
|
+
## Run open models through Claude Code (experimental)
|
|
176
186
|
|
|
177
|
-
|
|
187
|
+
> **Note:** Profiles are experimental. Enable with `agents beta profiles enable`.
|
|
178
188
|
|
|
179
189
|
```bash
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
agents
|
|
183
|
-
agents
|
|
184
|
-
agents install ./team-agent-pack --agents codex@0.113.0
|
|
185
|
-
agents mcp add postgres --agents claude@2.1.79 -- npx -y @modelcontextprotocol/server-postgres
|
|
186
|
-
agents mcp register postgres
|
|
187
|
-
agents sessions <session-id> --markdown
|
|
188
|
-
agents routines view <job-name>
|
|
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"
|
|
189
194
|
```
|
|
190
195
|
|
|
191
|
-
|
|
196
|
+
Built-in presets (all via OpenRouter, one shared key):
|
|
192
197
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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. |
|
|
198
205
|
|
|
199
|
-
|
|
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.
|
|
200
207
|
|
|
201
|
-
|
|
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
|
+
```
|
|
220
|
+
|
|
221
|
+
Profile YAML has no secrets -- safe to `agents repo push` to a shared repo. `agents profiles presets` lists the full catalog.
|
|
202
222
|
|
|
203
|
-
|
|
223
|
+
---
|
|
204
224
|
|
|
205
|
-
|
|
225
|
+
## Teams
|
|
206
226
|
|
|
207
227
|
```bash
|
|
208
|
-
agents
|
|
209
|
-
agents sessions --agent codex
|
|
210
|
-
agents sessions --project agents-cli
|
|
211
|
-
agents sessions --agent gemini "session discovery"
|
|
212
|
-
```
|
|
228
|
+
agents teams create auth-feature
|
|
213
229
|
|
|
214
|
-
|
|
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
|
|
215
234
|
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
|
|
219
|
-
- Account email
|
|
220
|
-
- Agent name or version
|
|
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
|
|
237
|
+
```
|
|
221
238
|
|
|
222
|
-
|
|
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`.
|
|
223
240
|
|
|
224
|
-
|
|
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).
|
|
225
242
|
|
|
226
243
|
---
|
|
227
244
|
|
|
228
|
-
##
|
|
245
|
+
## Secrets
|
|
229
246
|
|
|
230
247
|
```bash
|
|
231
|
-
|
|
232
|
-
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
|
|
233
255
|
```
|
|
234
256
|
|
|
235
|
-
|
|
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>
|
|
236
260
|
|
|
237
|
-
|
|
261
|
+
Merge order: profile env < `--secrets` < `--env K=V`. A missing keychain item aborts before the child starts.
|
|
238
262
|
|
|
239
263
|
---
|
|
240
264
|
|
|
241
|
-
##
|
|
242
|
-
|
|
243
|
-
### Skills
|
|
244
|
-
|
|
245
|
-
Skills are reusable knowledge packs -- rules, patterns, and expertise that make your agents better at specific tasks. Install once, available everywhere.
|
|
265
|
+
## Routines
|
|
246
266
|
|
|
247
267
|
```bash
|
|
248
|
-
|
|
249
|
-
agents
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
A skill is a directory with a `SKILL.md` and optional rule files:
|
|
268
|
+
# Claude Code reviews PRs every weekday at 9 AM. Scheduler auto-starts.
|
|
269
|
+
agents routines add daily-digest \
|
|
270
|
+
--schedule "0 9 * * 1-5" \
|
|
271
|
+
--agent claude \
|
|
272
|
+
--prompt "Review yesterday's PRs and summarize key changes"
|
|
255
273
|
|
|
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
|
|
256
277
|
```
|
|
257
|
-
python-expert/
|
|
258
|
-
SKILL.md # Metadata + description
|
|
259
|
-
rules/
|
|
260
|
-
type-hints.md # Individual rules your agents follow
|
|
261
|
-
error-handling.md
|
|
262
|
-
testing.md
|
|
263
|
-
```
|
|
264
278
|
|
|
265
|
-
|
|
279
|
+
Jobs run sandboxed -- agents only see directories and tools you explicitly allow.
|
|
280
|
+
|
|
281
|
+
---
|
|
266
282
|
|
|
267
|
-
|
|
283
|
+
## PTY
|
|
268
284
|
|
|
269
285
|
```bash
|
|
270
|
-
agents
|
|
271
|
-
agents
|
|
272
|
-
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
|
|
273
292
|
```
|
|
274
293
|
|
|
275
|
-
|
|
294
|
+
A sidecar server holds sessions alive between CLI calls. `screen` renders via xterm-headless. Sessions auto-clean after 30 minutes idle.
|
|
276
295
|
|
|
277
|
-
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Portable setup
|
|
278
299
|
|
|
279
300
|
```bash
|
|
280
|
-
|
|
281
|
-
agents
|
|
282
|
-
|
|
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.
|
|
306
|
+
|
|
307
|
+
agents repo push # Snapshot your config to git
|
|
283
308
|
```
|
|
284
309
|
|
|
285
|
-
|
|
310
|
+
### How config is layered
|
|
286
311
|
|
|
287
|
-
|
|
312
|
+
Two repos with the same shape, different roles:
|
|
288
313
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
agents
|
|
292
|
-
|
|
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 |
|
|
293
318
|
|
|
294
|
-
|
|
319
|
+
**Version pinning:** `agents.yaml` at project root pins which agent version to use (like `.nvmrc` for Node).
|
|
295
320
|
|
|
296
|
-
|
|
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.
|
|
297
322
|
|
|
298
|
-
|
|
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.
|
|
299
324
|
|
|
300
|
-
|
|
301
|
-
SID=$(agents pty start) # Start a session
|
|
302
|
-
agents pty exec $SID "python3" # Launch Python REPL
|
|
303
|
-
agents pty screen $SID # See what's on screen
|
|
304
|
-
agents pty write $SID "print('hello')\n" # Type into it
|
|
305
|
-
agents pty screen $SID # See the result
|
|
306
|
-
agents pty write $SID "exit()\n" # Quit
|
|
307
|
-
agents pty stop $SID # Clean up
|
|
308
|
-
```
|
|
325
|
+
---
|
|
309
326
|
|
|
310
|
-
|
|
327
|
+
## Private skills
|
|
311
328
|
|
|
312
|
-
|
|
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.
|
|
313
330
|
|
|
314
331
|
```bash
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
--agent claude \
|
|
318
|
-
--prompt "Review yesterday's PRs and summarize key changes"
|
|
319
|
-
# The scheduler auto-starts on first add — no separate daemon command needed.
|
|
332
|
+
# Add a private repo for work-only skills
|
|
333
|
+
agents repo add gh:yourname/.agents-work
|
|
320
334
|
|
|
321
|
-
|
|
322
|
-
agents
|
|
323
|
-
|
|
335
|
+
# Add with a custom alias
|
|
336
|
+
agents repo add git@github.com:acme/team-skills.git --as acme
|
|
337
|
+
|
|
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
|
|
324
342
|
```
|
|
325
343
|
|
|
326
|
-
|
|
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.
|
|
327
345
|
|
|
328
|
-
|
|
346
|
+
---
|
|
329
347
|
|
|
330
|
-
|
|
348
|
+
## Compatibility
|
|
331
349
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
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 | -- | -- | -- | -- | -- |
|
|
337
363
|
|
|
338
|
-
|
|
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.
|
|
339
365
|
|
|
340
|
-
|
|
341
|
-
agents hooks list # Show lifecycle hooks
|
|
342
|
-
agents hooks add gh:team/hooks # Install hook scripts
|
|
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`.
|
|
343
367
|
|
|
344
|
-
|
|
345
|
-
agents permissions add ./perms # Install permission groups
|
|
346
|
-
```
|
|
368
|
+
## FAQ
|
|
347
369
|
|
|
348
|
-
|
|
370
|
+
### Why use `agents` instead of `claude` / `codex` / `gemini` directly?
|
|
349
371
|
|
|
350
|
-
|
|
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`.
|
|
351
373
|
|
|
352
|
-
|
|
374
|
+
### Is it free?
|
|
353
375
|
|
|
354
|
-
|
|
355
|
-
# Agent versions
|
|
356
|
-
agents add claude@latest # Install agent CLI
|
|
357
|
-
agents remove codex@0.5.0 # Remove specific version
|
|
358
|
-
agents use claude@2.0.0 # Set global default
|
|
359
|
-
agents use claude@2.0.0 -p # Pin to this project
|
|
360
|
-
agents list # Show all installed versions
|
|
361
|
-
agents view claude # Show version details + resources
|
|
362
|
-
|
|
363
|
-
# Skills
|
|
364
|
-
agents skills list # List installed skills
|
|
365
|
-
agents skills add <source> # Install from git/local
|
|
366
|
-
agents skills remove <name> # Remove a skill
|
|
367
|
-
agents skills view <name> # View skill details
|
|
368
|
-
|
|
369
|
-
# Commands
|
|
370
|
-
agents commands list # List slash commands
|
|
371
|
-
agents commands add <source> # Install commands
|
|
372
|
-
agents commands view <name> # View command content
|
|
373
|
-
|
|
374
|
-
# Rules / Instructions
|
|
375
|
-
agents rules list # List per-agent instruction files
|
|
376
|
-
agents rules add <source> # Install from git/local
|
|
377
|
-
agents rules remove <agent> # Remove rule file
|
|
378
|
-
agents rules view <agent> # View rule file content
|
|
379
|
-
|
|
380
|
-
# MCP servers
|
|
381
|
-
agents search <query> # Find in registry
|
|
382
|
-
agents install mcp:<name> # Install + register
|
|
383
|
-
agents mcp list # Show registered servers
|
|
384
|
-
agents mcp add <name> <cmd> # Register manually
|
|
385
|
-
|
|
386
|
-
# Secrets (keychain-backed env bundles, injected at run time)
|
|
387
|
-
agents secrets list # Show all bundles
|
|
388
|
-
agents secrets add <name> # Create an empty bundle
|
|
389
|
-
agents secrets set <bundle> <KEY> # Prompt, store in keychain, write ref
|
|
390
|
-
agents secrets set <bundle> <KEY> --value <v> # Store as YAML literal
|
|
391
|
-
agents secrets set <bundle> <KEY> --env <VAR> # Inherit from parent shell
|
|
392
|
-
agents secrets set <bundle> <KEY> --file <path> # Read from a file at run time
|
|
393
|
-
agents secrets view <name> [--reveal] # Show bundle (masked by default)
|
|
394
|
-
agents secrets import <name> --from .env # Import a dotenv file into keychain
|
|
395
|
-
agents secrets rm <name> # Delete bundle and purge keychain
|
|
396
|
-
agents run <agent> "..." --secrets <name> # Inject a bundle (repeatable)
|
|
397
|
-
|
|
398
|
-
# Sync
|
|
399
|
-
agents pull [source] # Sync from repo
|
|
400
|
-
agents push # Push changes back
|
|
401
|
-
|
|
402
|
-
# Drive
|
|
403
|
-
agents drive remote <user@host> # Set sync target
|
|
404
|
-
agents drive pull # Pull sessions from remote
|
|
405
|
-
agents drive push # Push sessions to remote
|
|
406
|
-
agents drive attach # Use drive as active agent home
|
|
407
|
-
agents drive detach # Restore to version home
|
|
408
|
-
agents drive status # Show drive state
|
|
409
|
-
|
|
410
|
-
# Execution
|
|
411
|
-
agents run <agent> <prompt> # Run agent
|
|
412
|
-
agents sessions <id> --markdown # Read a session by exact ID
|
|
413
|
-
agents sessions --agent codex # Interactive filtered session search
|
|
414
|
-
agents sessions --project agents # Interactive project-scoped session search
|
|
415
|
-
agents routines add <name> # Schedule a job (scheduler auto-starts)
|
|
416
|
-
agents routines list # Show all jobs
|
|
417
|
-
agents routines status # Check scheduler status + upcoming runs
|
|
418
|
-
|
|
419
|
-
# Teams (orchestrate multiple agents on a shared task)
|
|
420
|
-
agents teams create <team> # Start a new team
|
|
421
|
-
agents teams add <team> <agent> <task> # Add a teammate (runs immediately)
|
|
422
|
-
--name alice # give them a handle
|
|
423
|
-
--after alice,bob # stage as pending until deps complete
|
|
424
|
-
--mode plan|edit|full # permissions
|
|
425
|
-
--model <model> --env K=V # same passthroughs as exec
|
|
426
|
-
agents teams start <team> # Launch pending teammates whose deps are done
|
|
427
|
-
agents teams status <team> # Team standup (pass --since <cursor> for deltas)
|
|
428
|
-
agents teams ls # List teams (--agent, --status, --since filters)
|
|
429
|
-
agents teams remove <team> <teammate> # Let one teammate go (name or UUID prefix)
|
|
430
|
-
agents teams disband <team> # Stop everyone, remove the team
|
|
431
|
-
agents teams logs <teammate> # Read their raw log
|
|
432
|
-
agents teams doctor # Check which agents can join a team
|
|
433
|
-
|
|
434
|
-
# PTY sessions
|
|
435
|
-
agents pty start # Start a PTY session (returns ID)
|
|
436
|
-
agents pty exec <id> <command> # Run a command in the session
|
|
437
|
-
agents pty screen <id> # Render terminal as clean text
|
|
438
|
-
agents pty write <id> <input> # Send keystrokes (\n \t \e \xHH)
|
|
439
|
-
agents pty read <id> # Read raw output
|
|
440
|
-
agents pty signal <id> INT # Send signal
|
|
441
|
-
agents pty list # Show active sessions
|
|
442
|
-
agents pty stop <id> # Kill a session
|
|
443
|
-
agents pty server status # Check sidecar server
|
|
444
|
-
```
|
|
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.
|
|
445
377
|
|
|
446
|
-
|
|
378
|
+
### Is this like `nvm` / `mise` / `asdf` for AI agents?
|
|
447
379
|
|
|
448
|
-
|
|
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.
|
|
449
381
|
|
|
450
|
-
|
|
382
|
+
### How does version switching actually work?
|
|
451
383
|
|
|
452
|
-
|
|
453
|
-
---
|
|
454
|
-
name: python-expert
|
|
455
|
-
description: Python code analysis, type hints, and testing patterns
|
|
456
|
-
author: Your Name
|
|
457
|
-
version: 1.0.0
|
|
458
|
-
keywords: [python, testing, types]
|
|
459
|
-
---
|
|
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.
|
|
460
385
|
|
|
461
|
-
|
|
386
|
+
### How do I share my agent setup with my team?
|
|
462
387
|
|
|
463
|
-
|
|
464
|
-
```
|
|
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.
|
|
465
389
|
|
|
466
|
-
|
|
390
|
+
### Do I need to write separate rules for each agent (CLAUDE.md, GEMINI.md, etc.)?
|
|
467
391
|
|
|
468
|
-
|
|
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.
|
|
469
393
|
|
|
470
|
-
|
|
394
|
+
### Do agents use API keys or subscriptions?
|
|
471
395
|
|
|
472
|
-
|
|
473
|
-
|-------|----------|-----|----------|--------|-------|-------|-------------|----------|-------|
|
|
474
|
-
| Claude | yes | yes | yes | yes | CLAUDE.md | yes | yes | yes | yes |
|
|
475
|
-
| Codex | yes | yes | yes | yes | AGENTS.md | yes | yes | yes | yes |
|
|
476
|
-
| Gemini | yes | yes | yes | yes | GEMINI.md | yes | -- | yes | yes |
|
|
477
|
-
| Cursor | yes | yes | yes | yes | .cursorrules | -- | -- | -- | yes |
|
|
478
|
-
| OpenCode | yes | yes | yes | yes | AGENTS.md | yes | yes | -- | yes |
|
|
479
|
-
| OpenClaw | yes | yes | -- | yes | workspace/AGENTS.md | yes | -- | -- | -- |
|
|
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.
|
|
480
397
|
|
|
481
|
-
|
|
398
|
+
### Does it store my API keys or send telemetry?
|
|
482
399
|
|
|
483
|
-
|
|
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/`.
|
|
484
401
|
|
|
485
|
-
|
|
402
|
+
### Which platforms?
|
|
486
403
|
|
|
487
|
-
|
|
404
|
+
macOS and Linux. Windows via WSL works but isn't first-class yet.
|
|
488
405
|
|
|
489
|
-
|
|
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.
|
|
490
407
|
|
|
491
|
-
###
|
|
408
|
+
### Do I need Node.js?
|
|
492
409
|
|
|
493
|
-
|
|
410
|
+
The installer tries Bun first (faster), falls back to npm. Node 18+ required at runtime.
|
|
494
411
|
|
|
495
|
-
###
|
|
412
|
+
### Can I use it in CI?
|
|
496
413
|
|
|
497
|
-
|
|
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.
|
|
498
415
|
|
|
499
|
-
###
|
|
416
|
+
### What happens to my config when I switch versions?
|
|
500
417
|
|
|
501
|
-
|
|
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/`.
|
|
502
419
|
|
|
503
|
-
###
|
|
420
|
+
### Does session search use RAG or semantic search?
|
|
504
421
|
|
|
505
|
-
|
|
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.
|
|
506
423
|
|
|
507
|
-
###
|
|
424
|
+
### How do I use custom or local models?
|
|
508
425
|
|
|
509
|
-
|
|
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.
|
|
510
427
|
|
|
511
|
-
### Can I add support for a new agent
|
|
428
|
+
### Can I add support for a new agent?
|
|
512
429
|
|
|
513
|
-
|
|
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.
|
|
514
431
|
|
|
515
432
|
### What's the relationship to Phoenix Labs / Rush?
|
|
516
433
|
|
|
517
|
-
`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.
|
|
518
435
|
|
|
519
436
|
## Contributing
|
|
520
437
|
|
|
521
|
-
PRs and issues welcome. To develop locally:
|
|
522
|
-
|
|
523
438
|
```bash
|
|
524
439
|
git clone https://github.com/phnx-labs/agents-cli
|
|
525
440
|
cd agents-cli
|
|
526
|
-
bun install
|
|
527
|
-
bun run build
|
|
528
|
-
bun test
|
|
441
|
+
bun install && bun run build && bun test
|
|
529
442
|
```
|
|
530
443
|
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
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.
|
|
534
445
|
|
|
535
446
|
## License
|
|
536
447
|
|
|
537
|
-
MIT
|
|
448
|
+
MIT -- see [LICENSE](./LICENSE).
|