@phnx-labs/agents-cli 1.22.39 → 1.22.41
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 +316 -0
- package/README.md +116 -70
- package/dist/bin/agents +0 -0
- package/dist/bootstrap.js +45 -27
- package/dist/browser.js +2 -2
- package/dist/cli/command-registry.d.ts +135 -0
- package/dist/cli/command-registry.js +259 -0
- package/dist/commands/accounts.d.ts +20 -0
- package/dist/commands/accounts.js +186 -25
- package/dist/commands/apply.d.ts +3 -3
- package/dist/commands/apply.js +20 -63
- package/dist/commands/browser.d.ts +15 -0
- package/dist/commands/browser.js +318 -131
- package/dist/commands/budget.d.ts +7 -6
- package/dist/commands/budget.js +8 -7
- package/dist/commands/cloud.js +17 -20
- package/dist/commands/commands.js +1 -1
- package/dist/commands/computer-actions.d.ts +1 -35
- package/dist/commands/computer-actions.js +13 -181
- package/dist/commands/computer.d.ts +28 -3
- package/dist/commands/computer.js +93 -65
- package/dist/commands/config.js +16 -3
- package/dist/commands/cost.d.ts +2 -1
- package/dist/commands/cost.js +7 -6
- package/dist/commands/daemon.js +151 -4
- package/dist/commands/detach.js +1 -1
- package/dist/commands/doctor.js +19 -11
- package/dist/commands/events.js +1 -1
- package/dist/commands/exec.d.ts +2 -50
- package/dist/commands/exec.js +160 -215
- package/dist/commands/factory.js +1 -1
- package/dist/commands/feed.d.ts +2 -2
- package/dist/commands/feed.js +12 -23
- package/dist/commands/fleet-capture.js +25 -27
- package/dist/commands/focus.d.ts +2 -3
- package/dist/commands/focus.js +34 -9
- package/dist/commands/go.js +15 -5
- package/dist/commands/harness.d.ts +3 -3
- package/dist/commands/harness.js +53 -5
- package/dist/commands/hooks.js +1 -1
- package/dist/commands/import.js +2 -2
- package/dist/commands/insights.d.ts +5 -5
- package/dist/commands/insights.js +15 -9
- package/dist/commands/inspect.d.ts +2 -3
- package/dist/commands/inspect.js +4 -16
- package/dist/commands/logs.d.ts +2 -2
- package/dist/commands/logs.js +9 -9
- package/dist/commands/mcp.js +2 -2
- package/dist/commands/memory.js +1 -1
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +7 -7
- package/dist/commands/mine.d.ts +11 -8
- package/dist/commands/mine.js +11 -10
- package/dist/commands/models.js +1 -1
- package/dist/commands/modes.js +1 -1
- package/dist/commands/monitors.js +23 -6
- package/dist/commands/output.d.ts +7 -6
- package/dist/commands/output.js +11 -10
- package/dist/commands/packages.js +4 -4
- package/dist/commands/perf.js +1 -1
- package/dist/commands/permissions.js +49 -32
- package/dist/commands/plugins.d.ts +1 -1
- package/dist/commands/plugins.js +3 -3
- package/dist/commands/profiles.d.ts +6 -9
- package/dist/commands/profiles.js +8 -321
- package/dist/commands/projects.d.ts +9 -0
- package/dist/commands/projects.js +140 -8
- package/dist/commands/prune.js +5 -13
- package/dist/commands/refresh-rules.js +1 -1
- package/dist/commands/repo.d.ts +5 -7
- package/dist/commands/repo.js +34 -18
- package/dist/commands/resource-view.js +4 -0
- package/dist/commands/resume.d.ts +11 -7
- package/dist/commands/resume.js +82 -98
- package/dist/commands/route.d.ts +12 -0
- package/dist/commands/route.js +261 -0
- package/dist/commands/routines.d.ts +2 -3
- package/dist/commands/routines.js +120 -145
- package/dist/commands/rules.js +1 -1
- package/dist/commands/run-account-picker.d.ts +1 -1
- package/dist/commands/run-account-picker.js +2 -2
- package/dist/commands/run-broadcast.d.ts +21 -0
- package/dist/commands/run-broadcast.js +89 -0
- package/dist/commands/run-cloud.js +1 -1
- package/dist/commands/secrets-vault.d.ts +10 -0
- package/dist/commands/{login.js → secrets-vault.js} +34 -14
- package/dist/commands/secrets.d.ts +4 -4
- package/dist/commands/secrets.js +158 -159
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-browser.d.ts +1 -1
- package/dist/commands/sessions-browser.js +9 -5
- package/dist/commands/sessions-export.js +2 -2
- package/dist/commands/sessions-inject.js +4 -5
- package/dist/commands/sessions-migrate.js +16 -27
- package/dist/commands/sessions-picker.d.ts +14 -0
- package/dist/commands/sessions-picker.js +209 -13
- package/dist/commands/sessions-resume.d.ts +7 -3
- package/dist/commands/sessions-resume.js +81 -33
- package/dist/commands/sessions-share.d.ts +25 -0
- package/dist/commands/sessions-share.js +166 -0
- package/dist/commands/sessions-stats.js +2 -2
- package/dist/commands/sessions.d.ts +75 -68
- package/dist/commands/sessions.js +144 -180
- package/dist/commands/setup-browser.js +1 -1
- package/dist/commands/setup-computer.js +1 -1
- package/dist/commands/setup-fleet.js +3 -0
- package/dist/commands/setup-mine.d.ts +7 -3
- package/dist/commands/setup-mine.js +13 -8
- package/dist/commands/setup-preferences.js +2 -2
- package/dist/commands/setup-secrets.js +2 -2
- package/dist/commands/setup-watchdog.js +2 -2
- package/dist/commands/setup.js +7 -2
- package/dist/commands/share.d.ts +65 -0
- package/dist/commands/share.js +253 -20
- package/dist/commands/skills.js +3 -3
- package/dist/commands/snapshot.d.ts +2 -2
- package/dist/commands/snapshot.js +9 -9
- package/dist/commands/ssh.d.ts +1 -1
- package/dist/commands/ssh.js +186 -64
- package/dist/commands/subagents.js +1 -1
- package/dist/commands/sync.js +24 -9
- package/dist/commands/teams.d.ts +2 -2
- package/dist/commands/teams.js +9 -18
- package/dist/commands/tmux.js +5 -1
- package/dist/commands/trash.js +1 -1
- package/dist/commands/usage.d.ts +1 -1
- package/dist/commands/usage.js +2 -2
- package/dist/commands/utils.d.ts +4 -14
- package/dist/commands/utils.js +6 -27
- package/dist/commands/versions.js +2 -2
- package/dist/commands/view.d.ts +9 -77
- package/dist/commands/view.js +23 -8
- package/dist/commands/watchdog.js +1 -1
- package/dist/commands/webhook.js +25 -34
- package/dist/commands/workflows.js +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/account-capabilities.d.ts +39 -0
- package/dist/lib/account-capabilities.js +59 -0
- package/dist/lib/account-catalog.js +1 -1
- package/dist/lib/account-registry.d.ts +66 -0
- package/dist/lib/account-registry.js +151 -5
- package/dist/lib/{rotate.d.ts → accounting/rotate.d.ts} +4 -4
- package/dist/lib/{rotate.js → accounting/rotate.js} +8 -8
- package/dist/lib/{usage.d.ts → accounting/usage.d.ts} +4 -4
- package/dist/lib/{usage.js → accounting/usage.js} +11 -11
- package/dist/lib/agent-spec/provider.js +1 -1
- package/dist/lib/agents.d.ts +72 -4
- package/dist/lib/agents.js +231 -199
- package/dist/lib/answer-router.d.ts +2 -2
- package/dist/lib/ask-classifier.d.ts +1 -1
- package/dist/lib/ask-classifier.js +1 -1
- package/dist/lib/audit/log.js +1 -1
- package/dist/lib/auth-health.d.ts +1 -1
- package/dist/lib/auth-health.js +2 -2
- package/dist/lib/brand.js +1 -1
- package/dist/lib/browser/caller-identity.d.ts +28 -0
- package/dist/lib/browser/caller-identity.js +156 -0
- package/dist/lib/browser/cdp.js +5 -1
- package/dist/lib/browser/chrome.js +12 -1
- package/dist/lib/browser/drivers/ssh.d.ts +1 -1
- package/dist/lib/browser/drivers/ssh.js +3 -2
- package/dist/lib/browser/hygiene.d.ts +10 -2
- package/dist/lib/browser/hygiene.js +7 -4
- package/dist/lib/browser/ipc.d.ts +22 -2
- package/dist/lib/browser/ipc.js +185 -21
- package/dist/lib/browser/profiles.d.ts +69 -5
- package/dist/lib/browser/profiles.js +135 -13
- package/dist/lib/browser/remote-control.d.ts +2 -2
- package/dist/lib/browser/remote-control.js +3 -3
- package/dist/lib/browser/runtime-state.d.ts +79 -0
- package/dist/lib/browser/runtime-state.js +119 -1
- package/dist/lib/browser/service.d.ts +137 -2
- package/dist/lib/browser/service.js +492 -54
- package/dist/lib/browser/sessions-list.d.ts +2 -1
- package/dist/lib/browser/sessions-list.js +4 -13
- package/dist/lib/browser/types.d.ts +19 -1
- package/dist/lib/budget/config.js +1 -1
- package/dist/lib/budget/ledger.js +1 -1
- package/dist/lib/byok-usage.js +1 -1
- package/dist/lib/capabilities.js +3 -15
- package/dist/lib/catchup.d.ts +1 -1
- package/dist/lib/catchup.js +1 -1
- package/dist/lib/cloud/dispatch.js +1 -1
- package/dist/lib/cloud/host.d.ts +3 -3
- package/dist/lib/cloud/host.js +5 -5
- package/dist/lib/cloud/rush.d.ts +9 -21
- package/dist/lib/cloud/rush.js +33 -120
- package/dist/lib/cloud/types.d.ts +2 -2
- package/dist/lib/commands.js +3 -13
- package/dist/lib/computer/actions.d.ts +36 -0
- package/dist/lib/computer/actions.js +162 -0
- package/dist/lib/computer/dispatch.d.ts +2 -2
- package/dist/lib/computer/dispatch.js +2 -2
- package/dist/lib/computer/sessions-list.d.ts +3 -3
- package/dist/lib/computer/sessions-list.js +2 -2
- package/dist/lib/config-keys.d.ts +2 -1
- package/dist/lib/config-keys.js +8 -4
- package/dist/lib/config-machine-keys.d.ts +4 -2
- package/dist/lib/config-machine-keys.js +5 -2
- package/dist/lib/crabbox/lease.js +9 -1
- package/dist/lib/crabbox/runtimes.d.ts +32 -7
- package/dist/lib/crabbox/runtimes.js +72 -30
- package/dist/lib/{daemon.d.ts → daemon/daemon.d.ts} +59 -1
- package/dist/lib/{daemon.js → daemon/daemon.js} +237 -49
- package/dist/lib/daemon-services.d.ts +1 -1
- package/dist/lib/daemon-services.js +5 -0
- package/dist/lib/daemon-ticks.d.ts +25 -0
- package/dist/lib/daemon-ticks.js +31 -1
- package/dist/lib/daemon-webhooks.d.ts +104 -0
- package/dist/lib/daemon-webhooks.js +215 -0
- package/dist/lib/device-config.d.ts +85 -75
- package/dist/lib/device-config.js +280 -142
- package/dist/lib/devices/config-migration.d.ts +29 -34
- package/dist/lib/devices/config-migration.js +209 -130
- package/dist/lib/devices/connect.d.ts +2 -2
- package/dist/lib/devices/connect.js +2 -2
- package/dist/lib/devices/discovery-policy.d.ts +30 -0
- package/dist/lib/devices/discovery-policy.js +101 -0
- package/dist/lib/devices/fleet-inventory.js +8 -3
- package/dist/lib/devices/harness-inventory.d.ts +1 -1
- package/dist/lib/devices/harness-inventory.js +12 -3
- package/dist/lib/devices/known-hosts.js +1 -1
- package/dist/lib/devices/pool.d.ts +10 -5
- package/dist/lib/devices/pool.js +5 -7
- package/dist/lib/devices/registry.d.ts +1 -1
- package/dist/lib/devices/registry.js +1 -1
- package/dist/lib/devices/resolve-profile.d.ts +2 -2
- package/dist/lib/devices/resolve-profile.js +2 -2
- package/dist/lib/devices/resolve-target.d.ts +1 -1
- package/dist/lib/devices/resolve-target.js +4 -4
- package/dist/lib/devices/self-host.d.ts +1 -1
- package/dist/lib/devices/self-host.js +3 -3
- package/dist/lib/devices/ssh-config.d.ts +1 -1
- package/dist/lib/devices/stats-cache.js +1 -1
- package/dist/lib/devices/sync.d.ts +3 -1
- package/dist/lib/devices/sync.js +3 -3
- package/dist/lib/doctor-diff.js +4 -4
- package/dist/lib/drift-sync.js +2 -2
- package/dist/lib/drift.js +2 -2
- package/dist/lib/event-families.d.ts +1 -1
- package/dist/lib/event-stream.d.ts +1 -1
- package/dist/lib/event-stream.js +2 -2
- package/dist/lib/events-ingest.js +2 -2
- package/dist/lib/exec.d.ts +4 -4
- package/dist/lib/exec.js +11 -11
- package/dist/lib/factory/snapshot.d.ts +1 -1
- package/dist/lib/factory/snapshot.js +1 -1
- package/dist/lib/{activity.d.ts → feed/activity.d.ts} +1 -1
- package/dist/lib/{activity.js → feed/activity.js} +7 -7
- package/dist/lib/{events.d.ts → feed/events.d.ts} +2 -2
- package/dist/lib/{events.js → feed/events.js} +5 -5
- package/dist/lib/{feed.js → feed/feed.js} +4 -4
- package/dist/lib/feed-outcome.d.ts +1 -1
- package/dist/lib/feed-policy.d.ts +1 -1
- package/dist/lib/feed-policy.js +1 -1
- package/dist/lib/feed-post.d.ts +1 -1
- package/dist/lib/feed-post.js +1 -1
- package/dist/lib/feed-ranking.d.ts +1 -1
- package/dist/lib/fleet/apply.d.ts +0 -6
- package/dist/lib/fleet/apply.js +18 -45
- package/dist/lib/fleet/auth-sync.d.ts +16 -35
- package/dist/lib/fleet/auth-sync.js +16 -75
- package/dist/lib/fleet/capture.js +8 -6
- package/dist/lib/fleet/manifest.js +23 -11
- package/dist/lib/fleet/types.d.ts +19 -7
- package/dist/lib/fleet-cache.d.ts +1 -1
- package/dist/lib/fleet-cache.js +1 -1
- package/dist/lib/format.d.ts +19 -0
- package/dist/lib/format.js +44 -1
- package/dist/lib/friction-heuristics.d.ts +1 -1
- package/dist/lib/git.d.ts +24 -1
- package/dist/lib/git.js +82 -38
- package/dist/lib/heal.js +3 -3
- package/dist/lib/hooks.d.ts +18 -0
- package/dist/lib/hooks.js +113 -1
- package/dist/lib/hosts/credentials.d.ts +30 -10
- package/dist/lib/hosts/credentials.js +38 -26
- package/dist/lib/hosts/dispatch.d.ts +3 -3
- package/dist/lib/hosts/dispatch.js +3 -3
- package/dist/lib/hosts/option.d.ts +3 -3
- package/dist/lib/hosts/option.js +7 -8
- package/dist/lib/hosts/passthrough.d.ts +17 -17
- package/dist/lib/hosts/passthrough.js +67 -50
- package/dist/lib/hosts/providers/devices.d.ts +1 -1
- package/dist/lib/hosts/providers/devices.js +1 -1
- package/dist/lib/hosts/reconcile.d.ts +1 -1
- package/dist/lib/hosts/reconcile.js +1 -1
- package/dist/lib/hosts/reconnect.d.ts +1 -1
- package/dist/lib/hosts/reconnect.js +2 -2
- package/dist/lib/hosts/registry.d.ts +5 -5
- package/dist/lib/hosts/registry.js +5 -5
- package/dist/lib/hosts/remote-cmd.d.ts +10 -10
- package/dist/lib/hosts/remote-cmd.js +25 -18
- package/dist/lib/hosts/remote-os.d.ts +4 -4
- package/dist/lib/hosts/remote-os.js +4 -4
- package/dist/lib/hosts/remote-session-id.d.ts +2 -2
- package/dist/lib/hosts/remote-session-id.js +2 -2
- package/dist/lib/hosts/routing-flag.d.ts +3 -3
- package/dist/lib/hosts/routing-flag.js +4 -5
- package/dist/lib/hosts/run-target.d.ts +4 -4
- package/dist/lib/hosts/run-target.js +4 -4
- package/dist/lib/hosts/session-index.d.ts +2 -2
- package/dist/lib/hosts/session-index.js +1 -1
- package/dist/lib/hosts/session-marker.d.ts +1 -1
- package/dist/lib/hosts/session-marker.js +1 -1
- package/dist/lib/hosts/types.d.ts +2 -2
- package/dist/lib/hosts/types.js +2 -2
- package/dist/lib/import.js +1 -1
- package/dist/lib/{migrate.d.ts → installations/migrate.d.ts} +13 -1
- package/dist/lib/{migrate.js → installations/migrate.js} +160 -40
- package/dist/lib/installations/resolve.js +1 -1
- package/dist/lib/installations/strategies.js +1 -1
- package/dist/lib/installations/update.js +2 -2
- package/dist/lib/{versions.d.ts → installations/versions.d.ts} +12 -3
- package/dist/lib/{versions.js → installations/versions.js} +51 -31
- package/dist/lib/isolation-boundary-report.js +1 -1
- package/dist/lib/linear-projects.d.ts +28 -0
- package/dist/lib/linear-projects.js +30 -0
- package/dist/lib/loop.js +1 -1
- package/dist/lib/mailbox-gc.js +1 -1
- package/dist/lib/mailbox.js +1 -1
- package/dist/lib/mcp-registry.d.ts +62 -0
- package/dist/lib/mcp-registry.js +177 -0
- package/dist/lib/mcp.d.ts +5 -0
- package/dist/lib/mcp.js +124 -307
- package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
- package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
- package/dist/lib/menubar/install-menubar.d.ts +7 -0
- package/dist/lib/menubar/install-menubar.js +24 -6
- package/dist/lib/menubar/snapshot.d.ts +7 -0
- package/dist/lib/menubar/snapshot.js +8 -6
- package/dist/lib/models.js +1 -1
- package/dist/lib/monitors/config.d.ts +12 -0
- package/dist/lib/monitors/config.js +3 -0
- package/dist/lib/monitors/dispatch.js +26 -5
- package/dist/lib/monitors/engine.js +10 -0
- package/dist/lib/monitors/sources/webhook.d.ts +1 -1
- package/dist/lib/monitors/state.d.ts +42 -0
- package/dist/lib/monitors/state.js +30 -0
- package/dist/lib/notify.d.ts +1 -1
- package/dist/lib/observe-aliases.d.ts +3 -3
- package/dist/lib/observe-aliases.js +3 -21
- package/dist/lib/output/git-output.js +2 -2
- package/dist/lib/overdue.d.ts +1 -1
- package/dist/lib/overdue.js +1 -1
- package/dist/lib/permissions-registry.d.ts +65 -0
- package/dist/lib/permissions-registry.js +599 -0
- package/dist/lib/permissions.d.ts +24 -13
- package/dist/lib/permissions.js +52 -271
- package/dist/lib/picker.d.ts +16 -0
- package/dist/lib/picker.js +33 -3
- package/dist/lib/placement.d.ts +1 -1
- package/dist/lib/placement.js +4 -4
- package/dist/lib/platform/paths.d.ts +8 -0
- package/dist/lib/platform/paths.js +11 -0
- package/dist/lib/platform/posixpath.js +3 -3
- package/dist/lib/{plugin-marketplace.d.ts → plugins/plugin-marketplace.d.ts} +1 -1
- package/dist/lib/{plugin-marketplace.js → plugins/plugin-marketplace.js} +2 -2
- package/dist/lib/{plugins.d.ts → plugins/plugins.d.ts} +1 -1
- package/dist/lib/{plugins.js → plugins/plugins.js} +7 -7
- package/dist/lib/{skills.d.ts → plugins/skills.d.ts} +1 -1
- package/dist/lib/{skills.js → plugins/skills.js} +7 -7
- package/dist/lib/pricing/cost.d.ts +1 -1
- package/dist/lib/pricing/cost.js +1 -1
- package/dist/lib/profiles-presets.d.ts +1 -1
- package/dist/lib/profiles-presets.js +1 -1
- package/dist/lib/profiles.js +2 -2
- package/dist/lib/project-import.js +4 -1
- package/dist/lib/project-key.js +7 -0
- package/dist/lib/project-launch.d.ts +1 -1
- package/dist/lib/project-launch.js +3 -3
- package/dist/lib/project-pull.d.ts +128 -0
- package/dist/lib/project-pull.js +384 -0
- package/dist/lib/project-root.d.ts +2 -2
- package/dist/lib/project-root.js +2 -2
- package/dist/lib/project-status.js +1 -1
- package/dist/lib/projects.d.ts +23 -0
- package/dist/lib/projects.js +29 -6
- package/dist/lib/refresh.d.ts +12 -1
- package/dist/lib/refresh.js +16 -9
- package/dist/lib/registry.d.ts +9 -2
- package/dist/lib/registry.js +11 -4
- package/dist/lib/resources.d.ts +2 -2
- package/dist/lib/resources.js +2 -2
- package/dist/lib/routers.d.ts +81 -0
- package/dist/lib/routers.js +153 -0
- package/dist/lib/routine-context.d.ts +1 -0
- package/dist/lib/routine-context.js +7 -2
- package/dist/lib/routine-notify-owner.d.ts +1 -1
- package/dist/lib/routine-notify.d.ts +1 -1
- package/dist/lib/routine-notify.js +1 -1
- package/dist/lib/routine-process-cleanup.d.ts +1 -1
- package/dist/lib/routine-readiness.d.ts +1 -1
- package/dist/lib/routine-readiness.js +11 -4
- package/dist/lib/routines-placement.d.ts +12 -2
- package/dist/lib/routines-placement.js +20 -3
- package/dist/lib/routines-project.d.ts +1 -1
- package/dist/lib/routines-project.js +1 -1
- package/dist/lib/rules/compile.d.ts +1 -0
- package/dist/lib/rules/compile.js +10 -2
- package/dist/lib/rules/rules.js +1 -1
- package/dist/lib/run-notify.js +1 -1
- package/dist/lib/runner.d.ts +80 -2
- package/dist/lib/runner.js +261 -67
- package/dist/lib/sandbox.d.ts +1 -1
- package/dist/lib/scheduler.d.ts +1 -1
- package/dist/lib/scheduler.js +1 -1
- package/dist/lib/{routines.d.ts → scheduling/routines.d.ts} +54 -9
- package/dist/lib/{routines.js → scheduling/routines.js} +173 -14
- package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
- package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
- package/dist/lib/secrets/agent.js +2 -2
- package/dist/lib/secrets/audit.js +1 -1
- package/dist/lib/secrets/bundles.d.ts +4 -4
- package/dist/lib/secrets/bundles.js +8 -8
- package/dist/lib/secrets/headless.d.ts +16 -0
- package/dist/lib/secrets/headless.js +21 -0
- package/dist/lib/secrets/index.js +1 -1
- package/dist/lib/secrets/list-filter.d.ts +1 -1
- package/dist/lib/secrets/list-filter.js +2 -2
- package/dist/lib/secrets/push.d.ts +1 -1
- package/dist/lib/secrets/push.js +10 -12
- package/dist/lib/secrets/remote.d.ts +21 -17
- package/dist/lib/secrets/remote.js +39 -23
- package/dist/lib/secrets/vault.js +2 -2
- package/dist/lib/self-heal/checks/shadowing.js +1 -1
- package/dist/lib/self-heal/checks/shims.js +1 -1
- package/dist/lib/self-update.d.ts +39 -4
- package/dist/lib/self-update.js +78 -25
- package/dist/lib/serve/control.d.ts +1 -1
- package/dist/lib/serve/control.js +4 -4
- package/dist/lib/serve/data.d.ts +1 -1
- package/dist/lib/serve/data.js +1 -1
- package/dist/lib/serve/stream.js +1 -1
- package/dist/lib/service-manifest.d.ts +29 -0
- package/dist/lib/service-manifest.js +80 -0
- package/dist/lib/session/active.d.ts +59 -7
- package/dist/lib/session/active.js +158 -17
- package/dist/lib/session/bash-command.js +1 -1
- package/dist/lib/session/claude-accounts.d.ts +1 -1
- package/dist/lib/session/claude-accounts.js +1 -1
- package/dist/lib/session/db.d.ts +10 -2
- package/dist/lib/session/db.js +25 -6
- package/dist/lib/session/discover.d.ts +77 -0
- package/dist/lib/session/discover.js +130 -25
- package/dist/lib/session/fork.js +1 -1
- package/dist/lib/session/inject.d.ts +1 -1
- package/dist/lib/session/insights.d.ts +1 -1
- package/dist/lib/session/insights.js +1 -1
- package/dist/lib/session/live-metadata.d.ts +15 -0
- package/dist/lib/session/live-metadata.js +76 -0
- package/dist/lib/session/migrate-targets.d.ts +1 -1
- package/dist/lib/session/recovery.d.ts +1 -1
- package/dist/lib/session/recovery.js +2 -2
- package/dist/lib/session/remote-active.d.ts +10 -1
- package/dist/lib/session/remote-active.js +8 -3
- package/dist/lib/session/remote-bundle.d.ts +1 -1
- package/dist/lib/session/remote-bundle.js +2 -2
- package/dist/lib/session/remote-list.d.ts +15 -4
- package/dist/lib/session/remote-list.js +40 -3
- package/dist/lib/session/remote.d.ts +5 -5
- package/dist/lib/session/remote.js +13 -17
- package/dist/lib/session/resume-command.d.ts +3 -2
- package/dist/lib/session/resume-command.js +4 -3
- package/dist/lib/session/resume-owner.d.ts +3 -3
- package/dist/lib/session/resume-owner.js +3 -3
- package/dist/lib/session/session-cache.d.ts +12 -0
- package/dist/lib/session/session-cache.js +2 -0
- package/dist/lib/session/share-html.d.ts +55 -0
- package/dist/lib/session/share-html.js +319 -0
- package/dist/lib/session/shell-programs.js +1 -1
- package/dist/lib/session/state.js +5 -5
- package/dist/lib/session/team-filter.d.ts +1 -1
- package/dist/lib/session/team-filter.js +1 -1
- package/dist/lib/session/types.d.ts +3 -3
- package/dist/lib/session/width.d.ts +2 -2
- package/dist/lib/session/width.js +2 -2
- package/dist/lib/settings-manifest.d.ts +2 -0
- package/dist/lib/settings-manifest.js +81 -3
- package/dist/lib/share/delete.d.ts +21 -0
- package/dist/lib/share/delete.js +42 -0
- package/dist/lib/share/publish.d.ts +120 -0
- package/dist/lib/share/publish.js +243 -18
- package/dist/lib/share/worker-template.js +172 -9
- package/dist/lib/shims.js +35 -7
- package/dist/lib/smart-launch.d.ts +4 -4
- package/dist/lib/smart-launch.js +6 -4
- package/dist/lib/snapshot.d.ts +4 -4
- package/dist/lib/snapshot.js +2 -2
- package/dist/lib/ssh-exec.d.ts +1 -1
- package/dist/lib/ssh-exec.js +2 -2
- package/dist/lib/ssh-tunnel.d.ts +10 -10
- package/dist/lib/ssh-tunnel.js +12 -12
- package/dist/lib/staleness/checkers/hooks.d.ts +1 -1
- package/dist/lib/staleness/checkers/hooks.js +1 -1
- package/dist/lib/staleness/detectors/permissions.js +0 -23
- package/dist/lib/staleness/detectors/plugins.js +1 -1
- package/dist/lib/staleness/fingerprint.js +1 -1
- package/dist/lib/staleness/layers.d.ts +1 -1
- package/dist/lib/staleness/layers.js +1 -1
- package/dist/lib/staleness/writers/mcp.js +3 -1
- package/dist/lib/staleness/writers/plugins.js +1 -1
- package/dist/lib/staleness/writers/types.d.ts +8 -0
- package/dist/lib/startup/command-registry.d.ts +6 -147
- package/dist/lib/startup/command-registry.js +40 -303
- package/dist/lib/startup/dev-build.d.ts +0 -21
- package/dist/lib/startup/dev-build.js +29 -8
- package/dist/lib/state.d.ts +19 -1
- package/dist/lib/state.js +120 -51
- package/dist/lib/subagents.js +1 -1
- package/dist/lib/sync-status.js +1 -1
- package/dist/lib/sync-umbrella.d.ts +6 -1
- package/dist/lib/sync-umbrella.js +9 -4
- package/dist/lib/teams/agents.js +2 -2
- package/dist/lib/teams/registry.js +1 -1
- package/dist/lib/terminal/backends/vscodium-agent.js +1 -1
- package/dist/lib/terminal/engine.js +1 -1
- package/dist/lib/terminal/index.d.ts +4 -0
- package/dist/lib/terminal/index.js +3 -0
- package/dist/lib/terminal/inject.d.ts +2 -2
- package/dist/lib/terminal/inject.js +2 -2
- package/dist/lib/terminal/transport.js +1 -1
- package/dist/lib/tmux/index.d.ts +1 -1
- package/dist/lib/tmux/index.js +1 -1
- package/dist/lib/tmux/session.d.ts +21 -5
- package/dist/lib/tmux/session.js +76 -22
- package/dist/lib/triggers/handlers.d.ts +38 -3
- package/dist/lib/triggers/handlers.js +58 -7
- package/dist/lib/triggers/webhook.d.ts +113 -5
- package/dist/lib/triggers/webhook.js +223 -44
- package/dist/lib/types.d.ts +19 -7
- package/dist/lib/usage-fleet.d.ts +1 -1
- package/dist/lib/usage-fleet.js +1 -1
- package/dist/lib/usage-refresh.d.ts +1 -1
- package/dist/lib/usage-refresh.js +3 -3
- package/dist/lib/version-duplicates.js +2 -2
- package/dist/lib/view-types.d.ts +56 -0
- package/dist/lib/view-types.js +1 -0
- package/dist/lib/watchdog/rotate.d.ts +2 -2
- package/dist/lib/watchdog/rotate.js +3 -3
- package/dist/lib/watchdog/runner.d.ts +2 -3
- package/dist/lib/watchdog/runner.js +3 -4
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/wrap.d.ts +33 -0
- package/dist/lib/wrap.js +70 -0
- package/package.json +2 -1
- package/scripts/postinstall.js +2 -2
- package/dist/commands/bench.d.ts +0 -2
- package/dist/commands/bench.js +0 -101
- package/dist/commands/cp.d.ts +0 -84
- package/dist/commands/cp.js +0 -231
- package/dist/commands/login.d.ts +0 -2
- package/dist/lib/resources/commands.d.ts +0 -46
- package/dist/lib/resources/commands.js +0 -211
- package/dist/lib/resources/hooks.d.ts +0 -16
- package/dist/lib/resources/hooks.js +0 -153
- package/dist/lib/resources/mcp.d.ts +0 -34
- package/dist/lib/resources/mcp.js +0 -250
- package/dist/lib/resources/memory.d.ts +0 -15
- package/dist/lib/resources/memory.js +0 -46
- package/dist/lib/resources/permissions.d.ts +0 -13
- package/dist/lib/resources/permissions.js +0 -202
- package/dist/lib/resources/rules.d.ts +0 -46
- package/dist/lib/resources/rules.js +0 -179
- package/dist/lib/resources/skills.d.ts +0 -37
- package/dist/lib/resources/skills.js +0 -247
- package/dist/lib/resources/subagents.d.ts +0 -46
- package/dist/lib/resources/subagents.js +0 -202
- /package/dist/lib/{feed.d.ts → feed/feed.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/logo.png" alt="
|
|
2
|
+
<img src="assets/logo.png" alt="agi-cli" width="120" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
<h1 align="center">
|
|
5
|
+
<h1 align="center">agi-cli</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
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
9
|
<a href="./LICENSE"><img src="https://img.shields.io/npm/l/@phnx-labs/agents-cli.svg?style=flat-square" alt="license" /></a>
|
|
10
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/
|
|
11
|
+
<a href="https://github.com/phnx-labs/agi-cli"><img src="https://img.shields.io/badge/github-phnx--labs%2Fagi--cli-blue?style=flat-square" alt="github" /></a>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
**A framework for running a distributed agent factory.** Dispatch Claude, Codex, Antigravity, Grok, and more across your own machines, in parallel, on your existing subscriptions. Measure every run with `agents perf` / `agents insights`, fold what you learn back into `AGENTS.md` and skills, then put the loop on a schedule with routines and monitors. Spawn parallel teams in isolated terminals or dispatch to the cloud for a PR. Watch live state across the fleet, nudge stalled runs, and message agents mid-flight. Store secrets behind Touch ID, drive real browsers and Electron apps, and steer the whole fleet from a menu bar — all from one CLI.
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
<a href="https://docs.warp.dev/reference/cli" title="Warp Agent CLI (Oz)"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/harnesses/warp.svg"><img src="assets/harnesses/warp-light.svg" height="32" alt="Warp Agent CLI" /></picture></a>
|
|
40
40
|
</p>
|
|
41
41
|
|
|
42
|
-
https://
|
|
42
|
+
https://agi-cli.sh/demo.mp4
|
|
43
43
|
|
|
44
44
|
## Quickstart
|
|
45
45
|
|
|
@@ -54,11 +54,11 @@ agents run claude "explain this repo" # run any agent on your existing subscrip
|
|
|
54
54
|
|
|
55
55
|
Full path -- installing harnesses, logging in, smoke-testing `agents teams`, and setting up your own fleet: [`apps/cli/docs/QUICKSTART.md`](apps/cli/docs/QUICKSTART.md).
|
|
56
56
|
|
|
57
|
-
**Learn (concepts):** [Loop + graph engineering](https://
|
|
57
|
+
**Learn (concepts):** [Loop + graph engineering](https://agi-cli.sh/learn/loop-and-graph-engineering) · [Teams as graph engineering](https://agi-cli.sh/learn/teams-graph-engineering) · [Sessions · index + cross-device](https://agi-cli.sh/learn/sessions-index) · [Distributed fleet execution](https://agi-cli.sh/learn/distributed-fleet). Also: [harness engineering](https://agi-cli.sh/learn/harness-engineering) · [visual longform](https://share.agents-cli.sh/muqsitnawaz/agents-loop-and-graph-engineering).
|
|
58
58
|
|
|
59
|
-
Already installed? `agents upgrade` updates
|
|
59
|
+
Already installed? `agents upgrade` updates agi-cli itself to the latest version (`agents upgrade 1.2.3` for a specific version or dist-tag, `-y` to skip the confirm prompt). The command is `upgrade` on every platform -- do not reach for `agents update`, which updates an installed **agent harness**, not agi-cli (and on macOS, `agents helper update` is a third thing: it reinstalls the keychain helper).
|
|
60
60
|
|
|
61
|
-
Source: [github.com/phnx-labs/
|
|
61
|
+
Source: [github.com/phnx-labs/agi-cli](https://github.com/phnx-labs/agi-cli)
|
|
62
62
|
|
|
63
63
|
Also available as `ag` -- all commands work with both `agents` and `ag`.
|
|
64
64
|
|
|
@@ -194,14 +194,14 @@ agents run codex@ "review this branch"
|
|
|
194
194
|
# Picks the host (14d usage affinity), the harness (installed CLIs weighted by
|
|
195
195
|
# best-account headroom), and the account (balanced) -- all three layers.
|
|
196
196
|
agents run auto "summarize recent commits"
|
|
197
|
-
agents run auto --
|
|
197
|
+
agents run auto --device yosemite-s0 "fix the flaky test" # pin the host layer
|
|
198
198
|
```
|
|
199
199
|
|
|
200
200
|
`run auto` excludes any harness whose accounts are all rate-limited or signed out, and exits nonzero with the earliest reset time when nothing anywhere is healthy.
|
|
201
201
|
|
|
202
202
|
A trailing `@` opens an account picker before either an interactive or prompt-based run. Each installed version shows its account identity, exact version, login state, plan, and every available session, weekly, or monthly limit. Logged-out, rate-limited, and out-of-credit accounts remain visible with the reason they cannot be selected; signed-in accounts whose provider does not expose quota data stay selectable and say `limits unavailable`. The choice pins only that run and does not change your default version.
|
|
203
203
|
|
|
204
|
-
Account selection is available for Claude, Codex, Gemini, Cursor, Antigravity, Grok, Kimi, Droid, and OpenCode. It requires a terminal and cannot be combined with `--resume`, `--strategy`/`--balanced`, `--lease`, or `--
|
|
204
|
+
Account selection is available for Claude, Codex, Gemini, Cursor, Antigravity, Grok, Kimi, Droid, and OpenCode. It requires a terminal and cannot be combined with `--resume`, `--strategy`/`--balanced`, `--lease`, or `--device`; profiles and workflows must use their concrete host agent instead.
|
|
205
205
|
|
|
206
206
|
### Chain agents
|
|
207
207
|
|
|
@@ -215,7 +215,7 @@ Supports plan (read-only), edit, auto, and skip modes, effort levels, JSON outpu
|
|
|
215
215
|
### What does `--mode skip` actually do?
|
|
216
216
|
|
|
217
217
|
Treat `skip` as a last-resort escape hatch. In direct-exec runs (without `--acp`),
|
|
218
|
-
|
|
218
|
+
agi-cli forwards the harness's native no-prompt flag; it does not add another
|
|
219
219
|
safety layer. Prefer `auto` where it adds a safer automatic policy (smart classifier
|
|
220
220
|
on Claude/Copilot, native high-auto mode on Droid, or interactive Kimi), or `edit`
|
|
221
221
|
everywhere else. For headless Kimi, `edit`, `auto`, and `skip` all use the same
|
|
@@ -235,7 +235,7 @@ bypass. Harnesses without a native bypass flag reject direct-exec `skip`.
|
|
|
235
235
|
| Kimi | `--yolo` interactively; no extra flag in headless `-p` runs, which already auto-approve |
|
|
236
236
|
| Droid | `--skip-permissions-unsafe` |
|
|
237
237
|
|
|
238
|
-
With `--acp`, these native flags are not used.
|
|
238
|
+
With `--acp`, these native flags are not used. agi-cli instead grants `skip`
|
|
239
239
|
permission requests at the ACP protocol layer: it selects `allow_always` when offered,
|
|
240
240
|
otherwise the first permission option offered by the server. The same last-resort
|
|
241
241
|
warning applies.
|
|
@@ -256,7 +256,7 @@ but new scripts should use the explicit `skip` name.
|
|
|
256
256
|
agents run claude "review this diff" --acp --json
|
|
257
257
|
```
|
|
258
258
|
|
|
259
|
-
`--acp` routes through the [Agent Client Protocol](https://github.com/zed-industries/agent-client-protocol) 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
|
|
259
|
+
`--acp` routes through the [Agent Client Protocol](https://github.com/zed-industries/agent-client-protocol) 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 agi-cli, which means `--mode plan` becomes a real sandbox: the write RPC is denied, not just unused.
|
|
260
260
|
|
|
261
261
|
ACP adapters are documented for claude, codex, cursor, opencode, openclaw, and grok. Other harnesses keep running on the direct-exec path.
|
|
262
262
|
|
|
@@ -285,6 +285,9 @@ agents sessions a1b2c3d4 --markdown
|
|
|
285
285
|
# Render a shareable, redacted Markdown transcript with the session preview on top
|
|
286
286
|
agents sessions render a1b2c3d4 -o session.md
|
|
287
287
|
|
|
288
|
+
# Or publish it as a link in one step (unlisted + redacted by default)
|
|
289
|
+
agents sessions share a1b2c3d4
|
|
290
|
+
|
|
288
291
|
# Just the last 3 turns, user messages only
|
|
289
292
|
agents sessions a1b2c3d4 --last 3 --include user
|
|
290
293
|
|
|
@@ -369,6 +372,8 @@ Landing on a session cold? `agents sessions <id>` prints a catch-up digest: an i
|
|
|
369
372
|
|
|
370
373
|
Sharing a session uses `agents sessions render <id> -o session.md`, not the raw harness JSONL. The document starts with that same preview, then presents user and assistant turns, fenced commands, structured tool arguments, and bounded tool output. Credential-shaped values and local home paths are redacted by default; `--no-redact` is for local-only inspection.
|
|
371
374
|
|
|
375
|
+
`agents sessions share <id>` goes one step further and publishes that document as a self-contained web page on your own share endpoint, printing the link. It is **unlisted** unless you pass `--public` — a transcript carries file paths, command output, and error text that a plan does not, so it stays out of your public gallery by default, and emails are masked on top of the render's own redaction. The slug is `session-<shortId>`, so re-sharing one session updates one URL.
|
|
376
|
+
|
|
372
377
|
### Resume anywhere — and stay resumed
|
|
373
378
|
|
|
374
379
|
Pick up any past conversation and drop it back into a terminal:
|
|
@@ -377,12 +382,12 @@ Pick up any past conversation and drop it back into a terminal:
|
|
|
377
382
|
agents sessions resume # multi-select; packs two sessions per tab
|
|
378
383
|
agents sessions resume "auth middleware" # pre-filter the pool, then choose
|
|
379
384
|
agents sessions resume --tmux # into persistent tmux — survives editor restarts
|
|
380
|
-
agents sessions resume --
|
|
381
|
-
agents resume 019fd0c8-b3e9-77a2-a1a4-444698c4d897 # original harness/version/device/mode
|
|
385
|
+
agents sessions resume --device zion --tmux # resume on another machine over SSH
|
|
386
|
+
agents sessions resume 019fd0c8-b3e9-77a2-a1a4-444698c4d897 # original harness/version/device/mode
|
|
382
387
|
agents run auto --resume 019fd0c8-b3e9-77a2-a1a4-444698c4d897 # adapt if its account is unavailable
|
|
383
388
|
```
|
|
384
389
|
|
|
385
|
-
`agents sessions resume` reopens several sessions in whatever terminal you're in -- auto-detected across iTerm, Ghostty, tmux, and the VSCodium agent-terminal, or forced with `--iterm` / `--ghostty` / `--tmux` / `--vscodium`. `agents resume <id>` resumes one session without requiring you to name its harness: exact IDs take a local SQLite fast path, then resolve fleet-wide and recover on the source device. If the origin version is installed, signed in, healthy, and still owns the indexed transcript, its isolated home performs native resume. Claude launches that native resume from the original project directory recorded before the first turn, so its `projects/<cwd-key>` lookup reaches the conversation even when the session later changed directories. Otherwise a healthy version of the **same harness** starts with `/continue <id>`, which reads the indexed transcript even when the old version home is retained under version trash or the same version number was reinstalled into a new home. It never native-resumes from a different isolated home. Back them with **tmux** and the runs turn durable: detach, close your editor, reboot the GUI -- the session is still alive to `agents tmux attach`. The whole `agents tmux` subsystem (persistent multiplexer sessions that survive editor restarts and can be shared with other tools) sits underneath.
|
|
390
|
+
`agents sessions resume` reopens several sessions in whatever terminal you're in -- auto-detected across iTerm, Ghostty, tmux, and the VSCodium agent-terminal, or forced with `--iterm` / `--ghostty` / `--tmux` / `--vscodium`. `agents sessions resume <id>` resumes one session without requiring you to name its harness: exact IDs take a local SQLite fast path, then resolve fleet-wide and recover on the source device. If the origin version is installed, signed in, healthy, and still owns the indexed transcript, its isolated home performs native resume. Claude launches that native resume from the original project directory recorded before the first turn, so its `projects/<cwd-key>` lookup reaches the conversation even when the session later changed directories. Otherwise a healthy version of the **same harness** starts with `/continue <id>`, which reads the indexed transcript even when the old version home is retained under version trash or the same version number was reinstalled into a new home. It never native-resumes from a different isolated home. Back them with **tmux** and the runs turn durable: detach, close your editor, reboot the GUI -- the session is still alive to `agents tmux attach`. The whole `agents tmux` subsystem (persistent multiplexer sessions that survive editor restarts and can be shared with other tools) sits underneath.
|
|
386
391
|
|
|
387
392
|
### Send an agent to the background — and bring it back
|
|
388
393
|
|
|
@@ -419,7 +424,7 @@ agents message tester "also cover the null case"
|
|
|
419
424
|
```bash
|
|
420
425
|
agents feed # grouped by outcome (ticket/PR/worktree) across the fleet
|
|
421
426
|
agents feed --flat # one row per agent (legacy)
|
|
422
|
-
agents feed --
|
|
427
|
+
agents feed --device mac-mini # scope the view to one or more hosts
|
|
423
428
|
agents feed --local # skip the SSH fan-out
|
|
424
429
|
agents feed --json # blocks stamped with their outcome key
|
|
425
430
|
agents feed post --title "Halfway done" "CI green, watching merge" # title + body
|
|
@@ -445,11 +450,11 @@ A stalled session whose tail shows a hard account limit ("You've hit your weekly
|
|
|
445
450
|
## Sync the fleet
|
|
446
451
|
|
|
447
452
|
<p align="center">
|
|
448
|
-
<img src="assets/fleet-sync.svg" alt="agents apply: reconcile every device to one profile from agents.yaml — install missing agents
|
|
453
|
+
<img src="assets/fleet-sync.svg" alt="agents apply: reconcile every device to one profile from agents.yaml — install missing agents and sync config. Native logins stay on the machine that minted them." width="100%" />
|
|
449
454
|
</p>
|
|
450
455
|
|
|
451
456
|
|
|
452
|
-
One machine is set up the way you like it. Make every other machine match -- same agents installed, same config
|
|
457
|
+
One machine is set up the way you like it. Make every other machine match -- same agents installed, same config -- in one command. Native OAuth logins stay on the box that minted them; portable provider accounts move only via `agents accounts sync`.
|
|
453
458
|
|
|
454
459
|
```yaml
|
|
455
460
|
# agents.yaml -- add a fleet: block
|
|
@@ -458,7 +463,7 @@ fleet:
|
|
|
458
463
|
defaults:
|
|
459
464
|
agents: [claude@latest, codex@latest, antigravity@latest]
|
|
460
465
|
sync: [user] # config scopes to reconcile
|
|
461
|
-
login: sync #
|
|
466
|
+
login: sync # surface needs-login; never copies native OAuth
|
|
462
467
|
```
|
|
463
468
|
|
|
464
469
|
```bash
|
|
@@ -469,7 +474,7 @@ agents apply --only agents,config # limit dimensions (agents, config, login)
|
|
|
469
474
|
agents apply --no-login # skip login propagation
|
|
470
475
|
```
|
|
471
476
|
|
|
472
|
-
`agents apply` (`ag apply`) probes every target over the existing SSH transport, then reconciles it to the profile: installs missing agents, upgrades `
|
|
477
|
+
`agents apply` (`ag apply`) probes every target over the existing SSH transport, then reconciles it to the profile: installs missing agents, upgrades `agi-cli`, syncs the named config scopes, and **propagates logins** so a host signed in once seeds the fleet -- turning "6 hosts x 8 harnesses = 48 OAuth flows" into one. Portable credential files (claude, codex, grok, kimi, opencode, droid, antigravity) stream to each target over encrypted SSH stdin, never shell-interpolated, and land at `0600`. **Honest boundary:** macOS keychain-bound tokens (claude, antigravity on a Mac target) can't be extracted -- those surface as a one-time manual login, never faked. `--plan` / `--dry-run` shows the full matrix without touching anything.
|
|
473
478
|
|
|
474
479
|
See [docs/fleet.md](apps/cli/docs/fleet.md) for the manifest schema and reconcile semantics.
|
|
475
480
|
|
|
@@ -516,7 +521,7 @@ Multiple provider accounts to juggle? See [Accounts](#accounts) below.
|
|
|
516
521
|
```bash
|
|
517
522
|
# Kimi K2.5 responding inside Claude Code's UI, tools, and skills.
|
|
518
523
|
# No proxy server. No LiteLLM. One OpenRouter key, stored in Keychain.
|
|
519
|
-
agents
|
|
524
|
+
agents harness add kimi
|
|
520
525
|
agents run kimi "refactor this file"
|
|
521
526
|
```
|
|
522
527
|
|
|
@@ -545,7 +550,30 @@ auth:
|
|
|
545
550
|
keychainItem: agents-cli.ollama.token
|
|
546
551
|
```
|
|
547
552
|
|
|
548
|
-
Profile YAML has no secrets -- safe to `agents repo push` to a shared repo. `agents
|
|
553
|
+
Profile YAML has no secrets -- safe to `agents repo push` to a shared repo. `agents harness list` lists the full catalog.
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
## Named routers
|
|
558
|
+
|
|
559
|
+
A **router** is a reusable, task-typed allowlist -- which harnesses, which models/tiers per harness, and which linked accounts a task may be routed to. It's a generalization of a profile: a profile is a router pinned to one harness and one account.
|
|
560
|
+
|
|
561
|
+
```bash
|
|
562
|
+
# Scope a router to two harnesses, capped at a tier
|
|
563
|
+
agents route create research --harness gemini,kimi --tier cheap,default
|
|
564
|
+
|
|
565
|
+
# Narrow one harness's model set
|
|
566
|
+
agents route allow research kimi kimi-k2
|
|
567
|
+
|
|
568
|
+
# Only these accounts are eligible when routing under this router
|
|
569
|
+
agents route link-account research gemini personal
|
|
570
|
+
agents route link-account research kimi work
|
|
571
|
+
|
|
572
|
+
agents route show research
|
|
573
|
+
agents route list --json
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
Router YAML has no secrets -- safe to `agents repo push` to a shared repo. Harness ids and model/tier tokens are validated on `create`/`allow`: an unknown harness or an unverifiable model id fails loud and writes nothing. Routers resolve as a layered resource (project > user > system, same as profiles).
|
|
549
577
|
|
|
550
578
|
---
|
|
551
579
|
|
|
@@ -561,24 +589,24 @@ Dispatch any read-only or config command -- and `agents run` itself -- to anothe
|
|
|
561
589
|
```bash
|
|
562
590
|
# Enroll a machine (from ~/.ssh/config, or inline with user@address)
|
|
563
591
|
agents hosts add gpu-box
|
|
564
|
-
agents hosts check gpu-box # reachable? which
|
|
592
|
+
agents hosts check gpu-box # reachable? which agi-cli version?
|
|
565
593
|
|
|
566
594
|
# Run there instead of locally
|
|
567
|
-
agents run claude --
|
|
568
|
-
agents run claude --
|
|
569
|
-
agents
|
|
595
|
+
agents run claude --device gpu-box "profile this build" # headless: follows live by default
|
|
596
|
+
agents run claude --device gpu-box # no prompt → interactive TTY over SSH (tmux-backed)
|
|
597
|
+
agents accounts sync work --device gpu-box # portable provider account only; native OAuth stays local
|
|
570
598
|
agents run claude --device auto "…" # affinity-pick host from 14d usage (harness stays claude)
|
|
571
|
-
agents run claude --
|
|
599
|
+
agents run claude --device auto "…" # same — auto is a host value, not a harness name
|
|
572
600
|
agents view kimi --device all # fan out across every registered device (grouped-by-OS roster)
|
|
573
|
-
agents output --device all
|
|
601
|
+
agents insights output --device all # per-device burn vs shipped output across the fleet
|
|
574
602
|
agents view --device all --json # machine-readable fleet inventory
|
|
575
603
|
agents hosts ps # list dispatched runs + terminal status
|
|
576
604
|
agents hosts stop <id> # terminate a hung/detached run (alias: kill)
|
|
577
|
-
agents logs --
|
|
605
|
+
agents logs --device gpu-box # pick a dispatched run — concise summary by default
|
|
578
606
|
agents logs <id> --full # the full raw transcript / stdout (token-heavy)
|
|
579
607
|
agents logs <id> -f # re-attach to a running one and follow
|
|
580
|
-
agents view claude --
|
|
581
|
-
agents sync --
|
|
608
|
+
agents view claude --device gpu-box # inspect the remote install
|
|
609
|
+
agents sync --device gpu-box # make the remote machine current
|
|
582
610
|
agents doctor claude # diagnose every installed claude version
|
|
583
611
|
agents doctor claude@latest # diagnose only the newest installed version
|
|
584
612
|
agents doctor claude@oldest # diagnose only the oldest installed version
|
|
@@ -600,25 +628,29 @@ agents doctor --check --devices # CI drift gate across every registered
|
|
|
600
628
|
|
|
601
629
|
# Your Tailscale fleet, auto-discovered
|
|
602
630
|
agents devices sync # ingest `tailscale status`
|
|
631
|
+
agents devices ignore ipad # sync the dismissal via agents.yaml fleet.discovery
|
|
632
|
+
agents repo push user # carry device decisions to the other machines
|
|
633
|
+
agents repo pull user # pull and reconcile them into this machine's registry
|
|
603
634
|
agents devices list # fleet + headroom: load, mem, idle/busy — which box has room (cache-first)
|
|
604
635
|
agents devices list --live # force a live probe of every device (alias of --refresh)
|
|
605
636
|
agents devices list --full # add per-device cores and free/total RAM
|
|
606
637
|
agents devices list --no-stats # instant: names/addresses only, skip the probe
|
|
607
638
|
agents devices config zion interactive.host zion # the device agents show YOU artifacts on (★ in the list)
|
|
608
|
-
agents devices config mac-mini agents.max-concurrent 4 # per-device settings (
|
|
639
|
+
agents devices config mac-mini agents.max-concurrent 4 # per-device settings (tracked devices/<name>/agents.yaml)
|
|
609
640
|
agents devices config mac-mini scheduler.enabled off # bare `devices config <name>` opens a settings menu (TTY)
|
|
641
|
+
agents devices config --fleet agents.max-concurrent 2 # fleet-wide default every device inherits
|
|
610
642
|
agents devices config mac-mini notes "runs the releases — don't reboot" # operator notes, repeat to append
|
|
611
643
|
agents ssh mac-mini # hardened SSH: fails fast if offline,
|
|
612
644
|
# PowerShell on Windows, password-from-Keychain,
|
|
613
645
|
# auto-syncs your terminfo (Ghostty/kitty/…) so
|
|
614
646
|
# backspace, colors & clear work on the remote
|
|
615
|
-
|
|
616
|
-
|
|
647
|
+
scp mac-mini:/abs/log.json /tmp/ # fleet file transfer; host:path or abs local
|
|
648
|
+
scp -r /tmp/src/ yosemite-s0:~/dst/ # ~ and $HOME expand on the REMOTE, never locally
|
|
617
649
|
agents hosts list # devices show up here too (one host pool)
|
|
618
|
-
agents hosts add mac-mini --cap gpu # tag a device for capability routing (
|
|
650
|
+
agents hosts add mac-mini --cap gpu # tag a device for capability routing (`--device` + `--cap gpu`)
|
|
619
651
|
|
|
620
652
|
# Hosts as a task backend + scheduled placement
|
|
621
|
-
agents cloud run "nightly benchmark" --
|
|
653
|
+
agents cloud run "nightly benchmark" --device gpu-box --agent claude # task in cloud ps AND hosts ps
|
|
622
654
|
agents routines add nightly -s "0 2 * * *" -a claude -p "run the sweep" --run-on gpu-box
|
|
623
655
|
```
|
|
624
656
|
|
|
@@ -659,9 +691,9 @@ email) and naming which harnesses use it — the fast way to see which accounts
|
|
|
659
691
|
and healthy across every machine. Scope either with `--agents <csv>` / `--device <csv>`, and
|
|
660
692
|
add `--json` for the machine-readable per-host rows.
|
|
661
693
|
|
|
662
|
-
**Hosts** (`agents hosts`) are git-synced dispatch targets in `agents.yaml`; **devices** (`agents devices`) are your Tailscale machines in a local registry. Both ride SSH and feed one host pool: devices appear in `agents hosts list` and capability routing without a second enrollment. On `--
|
|
694
|
+
**Hosts** (`agents hosts`) are git-synced dispatch targets in `agents.yaml`; **devices** (`agents devices`) are your Tailscale machines in a local registry. Both ride SSH and feed one host pool: devices appear in `agents hosts list` and capability routing without a second enrollment. On `--device` runs every `agents run` option is either forwarded (`--effort --env --timeout --loop …`), rejected loud (`--secrets` never crosses SSH implicitly), or consumed locally — nothing silently drops. See [docs/concepts.md](apps/cli/docs/concepts.md#devices--hosts).
|
|
663
695
|
|
|
664
|
-
Every `--
|
|
696
|
+
Every `--device` command rides one multiplexed SSH engine, tuned for driving a fleet from a small laptop: the first call to a machine opens a control socket and every later call reuses it (no repeat TCP+auth handshake), connections carry keepalive so a dropped link dies in ~45 s instead of zombying, and following a remote run polls in a single round-trip per cycle. Measured against a Tailscale-relayed host: repeated calls **~6–7× faster**, dispatch readiness **~2×**, and the follow loop **~21× faster with 50% fewer local ssh spawns**. Design: [docs/ssh-transport.md](apps/cli/docs/ssh-transport.md) · reproduce: `node scripts/bench-ssh.mjs <host>`.
|
|
665
697
|
|
|
666
698
|
---
|
|
667
699
|
|
|
@@ -692,7 +724,7 @@ Team state is observable via `agents teams list --json` / `agents teams status -
|
|
|
692
724
|
|
|
693
725
|
## Cloud
|
|
694
726
|
|
|
695
|
-
Some work shouldn't tie up your laptop. `agents cloud run` hands a task to a managed provider that clones the repo, plans, implements, tests, and opens a PR -- while your terminal stays free. The `host` provider dispatches the same way onto machines you own: `agents cloud run "…" --
|
|
727
|
+
Some work shouldn't tie up your laptop. `agents cloud run` hands a task to a managed provider that clones the repo, plans, implements, tests, and opens a PR -- while your terminal stays free. The `host` provider dispatches the same way onto machines you own: `agents cloud run "…" --device gpu-box` (tasks track in `agents cloud ps` and `agents hosts ps` alike).
|
|
696
728
|
|
|
697
729
|
<p align="center">
|
|
698
730
|
<img src="assets/cloud.svg" alt="agents cloud run dispatches one prompt to a managed provider (Rush, Codex, Cursor, Factory, or Antigravity) that runs while you keep working" width="100%" />
|
|
@@ -721,7 +753,7 @@ Five managed backends behind one interface (`agents cloud providers`):
|
|
|
721
753
|
|
|
722
754
|
Auto-routes each `--agent` to its native cloud, or pin the backend with `--provider`. Instead of dispatching now, register a run as an **event trigger** with `--on pull_request` (also `push`, `issue_comment`, `workflow_run`) -- it persists as a trigger-bound routine that fires on the event. `--json` on every subcommand for scripting.
|
|
723
755
|
|
|
724
|
-
The same dispatch is a placement on `agents run`: `agents run claude "fix the flaky e2e" --cloud --repo acme/api` routes through the identical provider registry and tracks in `agents cloud list/status/logs` alike. `--cloud` sits alongside `--
|
|
756
|
+
The same dispatch is a placement on `agents run`: `agents run claude "fix the flaky e2e" --cloud --repo acme/api` routes through the identical provider registry and tracks in `agents cloud list/status/logs` alike. `--cloud` sits alongside `--device`/`--lease` as one of three placements (local, machine, cloud) and is mutually exclusive with them; `--where cloud[:provider]` is the one-door spelling. Agents without a native cloud fail loud unless `--provider` is given.
|
|
725
757
|
|
|
726
758
|
---
|
|
727
759
|
|
|
@@ -814,11 +846,11 @@ A plugin is a directory with a manifest:
|
|
|
814
846
|
permissions/ # optional — executable surface
|
|
815
847
|
```
|
|
816
848
|
|
|
817
|
-
On sync,
|
|
849
|
+
On sync, agi-cli copies the plugin into each version home's marketplace (`<home>/.claude/plugins/marketplaces/agents-cli/plugins/<name>/`), registers the synthetic marketplace, and flips `settings.json#enabledPlugins[<name>@agents-cli] = true` so Claude / OpenClaw load it.
|
|
818
850
|
|
|
819
851
|
### Executable-surface gate
|
|
820
852
|
|
|
821
|
-
Plugins that ship `hooks/`, `.mcp.json`, `bin/`, `scripts/`, `settings.json` (non-permissions), or `permissions/` can execute code on session events.
|
|
853
|
+
Plugins that ship `hooks/`, `.mcp.json`, `bin/`, `scripts/`, `settings.json` (non-permissions), or `permissions/` can execute code on session events. agi-cli requires explicit consent before flipping `enabledPlugins`:
|
|
822
854
|
|
|
823
855
|
```bash
|
|
824
856
|
# Hooks-bearing plugins copy in but stay disabled by default
|
|
@@ -839,22 +871,22 @@ Plugins live in the user repo (`~/.agents/plugins/`), not inside any single vers
|
|
|
839
871
|
|
|
840
872
|
## Make it yours
|
|
841
873
|
|
|
842
|
-
White-label the CLI. `agents setup mine` mints a **personally-named binary** — `jack` instead of `agents` — that _is_
|
|
874
|
+
White-label the CLI. `agents setup mine` mints a **personally-named binary** — `jack` instead of `agents` — that _is_ agi-cli: same tool, your name, running the exact feature set you choose. Anyone can mint their own; Jack and Pranjal each get an independent brand.
|
|
843
875
|
|
|
844
876
|
```bash
|
|
845
877
|
agents setup mine # wizard: pick a name, check off what to disable
|
|
846
|
-
agents mine init jack --disable teams cloud # or non-interactively
|
|
878
|
+
agents setup mine init jack --disable teams cloud # or non-interactively
|
|
847
879
|
|
|
848
880
|
jack run claude "hello" # every agents verb, under your name
|
|
849
881
|
jack --help # help, version, and errors all read "jack"
|
|
850
882
|
```
|
|
851
883
|
|
|
852
|
-
Manage brands with `agents mine list | toggle | remove`:
|
|
884
|
+
Manage brands with `agents setup mine list | toggle | remove`:
|
|
853
885
|
|
|
854
886
|
```bash
|
|
855
|
-
agents mine toggle jack --disable-plugin rush --disable-skill deploy
|
|
856
|
-
agents mine toggle jack --enable teams
|
|
857
|
-
agents mine remove jack --purge
|
|
887
|
+
agents setup mine toggle jack --disable-plugin rush --disable-skill deploy
|
|
888
|
+
agents setup mine toggle jack --enable teams
|
|
889
|
+
agents setup mine remove jack --purge
|
|
858
890
|
```
|
|
859
891
|
|
|
860
892
|
Under the hood, `init` drops a pure pass-through shim in `~/.agents/.cache/shims/<name>` (already on `PATH`) that sets `AGENTS_BRAND` and forwards every argument to the same binary — nothing is copied or forked. The brand's config lives in `~/.agents/agents.yaml` (`brands.<name>`), so it rides `agents repo push/pull` across your fleet. Disabling a command hides it **only** under that brand; plain `agents` / `ag` keep every command. Curated skills/plugins/MCP ride a per-brand [resource profile](apps/cli/docs/profiles.md). Full reference: [Make it yours](apps/cli/docs/mine.md).
|
|
@@ -977,12 +1009,12 @@ agents accounts add deepinfra --provider deepinfra --auth api-key
|
|
|
977
1009
|
agents accounts set-default claude work # claude uses `work` when --account is omitted
|
|
978
1010
|
agents accounts sync work --device yosemite-s0 # explicitly copy the bundle to a worker device
|
|
979
1011
|
agents run claude --account work
|
|
980
|
-
agents
|
|
1012
|
+
agents harness add deepinfra --account deepinfra
|
|
981
1013
|
```
|
|
982
1014
|
|
|
983
1015
|
One provider account **is** one `agents secrets` bundle -- `agents accounts add` creates it with secrets policy `never`, so a background agent launch on that account never raises Touch ID. `agents accounts` (no subcommand) lists provider bundles next to harness-native signed-in identities so you see both kinds of credential together; `accounts list` / `inspect <name>` / `set-key <name>` (rotate) / `rename` / `remove` manage a bundle by its stable id, independent of its current label.
|
|
984
1016
|
|
|
985
|
-
Harness-native OAuth logins (Claude Code's own `/login`, `codex login`, and so on) stay exactly where the harness put them --
|
|
1017
|
+
Harness-native OAuth logins (Claude Code's own `/login`, `codex login`, and so on) stay exactly where the harness put them -- agi-cli discovers and displays them but never copies, renames, or converts them into a provider bundle. `accounts sync <name> --device <device>` is the only way a provider account crosses machines, and it's explicit: nothing syncs automatically. Selection order for a run is explicit `--account`, then `accounts set-default` for that harness, then the harness's native/balanced account behavior.
|
|
986
1018
|
|
|
987
1019
|
---
|
|
988
1020
|
|
|
@@ -1002,7 +1034,7 @@ agents run claude "charge a test card" --secrets prod-stripe
|
|
|
1002
1034
|
```
|
|
1003
1035
|
|
|
1004
1036
|
<p align="center">
|
|
1005
|
-
<img src="assets/secrets.svg" alt="How
|
|
1037
|
+
<img src="assets/secrets.svg" alt="How agi-cli secrets work: bundle definitions live in the macOS Keychain alongside their values, agi-cli resolves at runtime and injects the env into the child process" width="100%" />
|
|
1006
1038
|
</p>
|
|
1007
1039
|
|
|
1008
1040
|
Merge order: profile env < `--secrets` < `--env K=V`. A missing keychain item aborts before the child starts.
|
|
@@ -1061,14 +1093,14 @@ agents routines add nightly-drain --schedule "0 3 * * *" --agent claude \
|
|
|
1061
1093
|
--prompt "Drain the local work queue"
|
|
1062
1094
|
|
|
1063
1095
|
agents routines devices nightly-drain --set yosemite-s0 # one schedule owner
|
|
1064
|
-
agents routines list --
|
|
1096
|
+
agents routines list --device yosemite-s0 # query another device
|
|
1065
1097
|
|
|
1066
1098
|
# Signed webhook trigger: Linear issue labeled "agent" fires a routine
|
|
1067
1099
|
agents routines add agent-labeled-issue --on linear:Issue --action update \
|
|
1068
1100
|
--team-key RUSH --label agent --agent claude \
|
|
1069
1101
|
--cwd '~' \
|
|
1070
1102
|
--prompt "Work the Linear issue that was just labeled agent"
|
|
1071
|
-
agents
|
|
1103
|
+
agents daemon webhooks add --secrets-bundle webhooks --port 8787 # supervised receiver: /hooks/linear, /hooks/github
|
|
1072
1104
|
agents daemon funnel up yosemite-s0 --local-port 8787 --port 443 # public HTTPS ingress
|
|
1073
1105
|
```
|
|
1074
1106
|
|
|
@@ -1160,7 +1192,10 @@ Sources: a command's stdout (`--watch` / `--poll`), an HTTP endpoint (`--poll-ht
|
|
|
1160
1192
|
# Publish an HTML artifact to a public link on your own Cloudflare R2 (~$0).
|
|
1161
1193
|
agents artifacts setup # once: provision bucket + Worker on your CF
|
|
1162
1194
|
agents artifacts share plan.html --slug fleet --expire 30d # → https://<base>/fleet
|
|
1195
|
+
agents artifacts share plan.html --label "Q3 fleet plan" --meta kind=plan # human title + structured metadata
|
|
1163
1196
|
agents artifacts share plan.html --json # URL object for plan-render hooks
|
|
1197
|
+
agents artifacts share list --agent claude # everything published, filterable
|
|
1198
|
+
agents artifacts share revisions fleet # prior versions kept under a slug
|
|
1164
1199
|
agents artifacts share status # show the endpoint
|
|
1165
1200
|
agents unshare fleet # take a published link (+ its OG cover) down
|
|
1166
1201
|
```
|
|
@@ -1177,8 +1212,19 @@ this is effectively free.
|
|
|
1177
1212
|
**Fleet mode:** provision one endpoint, then every fleet / cloud / ephemeral agent
|
|
1178
1213
|
publishes through it with a shared write token — `agents artifacts share join <baseUrl>` uses an
|
|
1179
1214
|
existing endpoint with no provisioning. `--expire 30d|12h|<date>` auto-expires a link.
|
|
1180
|
-
`--json` emits `{ url, coverUrl, expiresAt }` so plan-render automation can
|
|
1181
|
-
rendered HTML and post the returned link without scraping terminal text.
|
|
1215
|
+
`--json` emits `{ url, coverUrl, expiresAt, label, labelSource }` so plan-render automation can
|
|
1216
|
+
publish the rendered HTML and post the returned link without scraping terminal text.
|
|
1217
|
+
|
|
1218
|
+
**Every share carries provenance and a title.** Agent/session/host/repo/date are
|
|
1219
|
+
captured automatically from the exec env and git — never invented, only sent when
|
|
1220
|
+
present. `--label`/`--title` names a share (else one is derived from the HTML
|
|
1221
|
+
`<title>`, frontmatter, or filename, with a nudge — never a blocking prompt); `--meta
|
|
1222
|
+
key=value` attaches structured metadata (`kind`, `project`, `ticket`, `status`, ...).
|
|
1223
|
+
`agents artifacts share list --agent <name> | --session <id> | --label-contains <substr>` filters
|
|
1224
|
+
by any of it, so the listing is a real "what have I shared" gallery, not just slugs.
|
|
1225
|
+
Republishing an existing slug keeps the prior version as a revision by default
|
|
1226
|
+
(`--no-revision` to skip); `agents artifacts share revisions <slug>` shows the retained
|
|
1227
|
+
history, newest first.
|
|
1182
1228
|
|
|
1183
1229
|
`agents artifacts share delete <targets...>` (alias `agents unshare`) takes a page down — pass a
|
|
1184
1230
|
full URL, `<user>/<slug>`, or a bare slug (resolved against your own namespace); several
|
|
@@ -1227,7 +1273,7 @@ Two repos with the same shape, different roles:
|
|
|
1227
1273
|
|
|
1228
1274
|
| Repo | Role | Owner |
|
|
1229
1275
|
|---|---|---|
|
|
1230
|
-
| `~/.agents-system/` | **System repo** — core/built-in skills, commands, hooks, rules, MCP configs, permissions, and profiles that ship with `
|
|
1276
|
+
| `~/.agents-system/` | **System repo** — core/built-in skills, commands, hooks, rules, MCP configs, permissions, and profiles that ship with `agi-cli`. The defaults every install gets. | Maintained upstream at [phnx-labs/.agents-system](https://github.com/phnx-labs/.agents-system) |
|
|
1231
1277
|
| `~/.agents/` | **User repo** — your personal additions and overrides. This is what `agents repo push`/`pull` syncs. | You |
|
|
1232
1278
|
|
|
1233
1279
|
**Version pinning:** `agents.yaml` at project root pins which agent version to use (like `.nvmrc` for Node).
|
|
@@ -1236,13 +1282,13 @@ Two repos with the same shape, different roles:
|
|
|
1236
1282
|
|
|
1237
1283
|
See [docs/concepts.md](apps/cli/docs/concepts.md) for the full mental model: DotAgents repos, resource kinds, and how resolution works end-to-end.
|
|
1238
1284
|
|
|
1239
|
-
Other useful commands: `agents doctor` checks CLI availability and resource sync drift, `agents usage` shows available quota/rate-limit data for installed agents, `agents budget` shows cross-vendor spend caps and current spend-to-cap (and enforces pre-flight estimates + a hard-cap kill-switch on every run — see [docs/observability.md](apps/cli/docs/observability.md#budget-guardrails-agents-budget)), `agents import` adopts an existing unmanaged install, `agents trash` lists and restores soft-deleted version directories, and `agents subagents` installs reusable subagent definitions for parent-agent workflows.
|
|
1285
|
+
Other useful commands: `agents doctor` checks CLI availability and resource sync drift, `agents usage` shows available quota/rate-limit data for installed agents, `agents config budget` shows cross-vendor spend caps and current spend-to-cap (and enforces pre-flight estimates + a hard-cap kill-switch on every run — see [docs/observability.md](apps/cli/docs/observability.md#budget-guardrails-agents-budget)), `agents import` adopts an existing unmanaged install, `agents trash` lists and restores soft-deleted version directories, and `agents subagents` installs reusable subagent definitions for parent-agent workflows.
|
|
1240
1286
|
|
|
1241
1287
|
---
|
|
1242
1288
|
|
|
1243
1289
|
## Menu bar
|
|
1244
1290
|
|
|
1245
|
-
On macOS, `
|
|
1291
|
+
On macOS, `agi-cli` puts a status item in your menu bar -- a live glance at what your agents are doing, plus a Spotlight-style bar for filing work without breaking focus.
|
|
1246
1292
|
|
|
1247
1293
|
```bash
|
|
1248
1294
|
agents menubar setup # configure end-to-end: one instance, started at login
|
|
@@ -1292,7 +1338,7 @@ Extras clone into `~/.agents-system/.repos/<alias>/` and ship the same layout as
|
|
|
1292
1338
|
|
|
1293
1339
|
## Security & Privacy
|
|
1294
1340
|
|
|
1295
|
-
**The CLI binary has no built-in telemetry or phone-home path.** Routine commands run locally; explicit features such as cloud dispatch and iCloud Keychain sync send only the data needed for the action you invoke. Here's exactly what `
|
|
1341
|
+
**The CLI binary has no built-in telemetry or phone-home path.** Routine commands run locally; explicit features such as cloud dispatch and iCloud Keychain sync send only the data needed for the action you invoke. Here's exactly what `agi-cli` stores locally and why.
|
|
1296
1342
|
|
|
1297
1343
|
### Event log
|
|
1298
1344
|
|
|
@@ -1361,7 +1407,7 @@ By default, secrets sync via iCloud Keychain to your other Macs. With `--no-iclo
|
|
|
1361
1407
|
|
|
1362
1408
|
Which DotAgents resources each agent CLI can load. Source of truth: [src/lib/agents.ts](apps/cli/src/lib/agents.ts) (`capabilities`); gates use `supports(agent, cap, version)` from [src/lib/capabilities.ts](apps/cli/src/lib/capabilities.ts). Full matrix also in [docs/concepts.md](apps/cli/docs/concepts.md).
|
|
1363
1409
|
|
|
1364
|
-
> **Gemini CLI is hard-deprecated.** Google retired it for free, Pro, and Ultra tiers on **June 18, 2026** (announced at Google I/O 2026); the `gemini` command no longer serves requests on those tiers.
|
|
1410
|
+
> **Gemini CLI is hard-deprecated.** Google retired it for free, Pro, and Ultra tiers on **June 18, 2026** (announced at Google I/O 2026); the `gemini` command no longer serves requests on those tiers. agi-cli keeps the legacy `gemini` id only so old sessions/config can still be read. `agents add gemini`, `agents import gemini`, and `agents sync gemini` fail and point to **Antigravity CLI** (`antigravity`), Google's official successor — see [the transition notice](https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/).
|
|
1365
1411
|
|
|
1366
1412
|
| Agent | Versions | Hooks | MCP | Permissions | Skills | Commands | Plugins | Subagents | Rules | Workflows |
|
|
1367
1413
|
|-------|----------|-------|-----|-------------|--------|----------|---------|-----------|-------|-----------|
|
|
@@ -1383,7 +1429,7 @@ Which DotAgents resources each agent CLI can load. Source of truth: [src/lib/age
|
|
|
1383
1429
|
|
|
1384
1430
|
**Host CLIs** (`agents cli`) are separate: YAML manifests under `~/.agents/cli/` install binaries onto your PATH (`gh`, `higgsfield`, etc.). They are not copied into per-agent version homes.
|
|
1385
1431
|
|
|
1386
|
-
###
|
|
1432
|
+
### agi-cli features (not agent-native resources)
|
|
1387
1433
|
|
|
1388
1434
|
| Agent | Routines | Teams | Session index |
|
|
1389
1435
|
|-------|----------|-------|---------------|
|
|
@@ -1409,7 +1455,7 @@ Which DotAgents resources each agent CLI can load. Source of truth: [src/lib/age
|
|
|
1409
1455
|
| File-based commands | Codex | < 0.117.0 (0.117+ uses command-as-skill) |
|
|
1410
1456
|
| Plugins | Codex | >= 0.128.0 |
|
|
1411
1457
|
|
|
1412
|
-
Codex `0.117.0+` no longer reads `.codex/prompts/`;
|
|
1458
|
+
Codex `0.117.0+` no longer reads `.codex/prompts/`; agi-cli converts slash commands into skills so they stay invocable as `$name`. OpenCode's plugin-based hook system is on the roadmap; hooks stay `no` until a writer ships.
|
|
1413
1459
|
|
|
1414
1460
|
Slash commands can declare per-agent/version targeting in frontmatter (`agents:`, `since:`, `until:`). Gating applies when syncing from `~/.agents/commands/` (user/system) into version homes — project `.agents/commands/` files are read in place and are not filtered by `agents:`.
|
|
1415
1461
|
|
|
@@ -1425,7 +1471,7 @@ Yes. This developer tool is entirely free because we believe developers should h
|
|
|
1425
1471
|
|
|
1426
1472
|
### Is this like `nvm` / `mise` / `asdf` for AI agents?
|
|
1427
1473
|
|
|
1428
|
-
For version management, yes. `
|
|
1474
|
+
For version management, yes. `agi-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.
|
|
1429
1475
|
|
|
1430
1476
|
### How does version switching actually work?
|
|
1431
1477
|
|
|
@@ -1447,13 +1493,13 @@ Your choice. We hand off to the original CLI process — use your existing subsc
|
|
|
1447
1493
|
|
|
1448
1494
|
**No CLI telemetry or phone-home.** API keys come from your shell environment or each agent CLI's existing auth, and remote calls only happen when you invoke a feature that requires them, such as cloud dispatch.
|
|
1449
1495
|
|
|
1450
|
-
For full transparency: `
|
|
1496
|
+
For full transparency: `agi-cli` keeps a local event log at `~/.agents/.cache/logs/` so you can see exactly what agents did on your machine. Logs are owner-readable only (0600) and auto-prune after 7 days. Set `AGENTS_DISABLE_EVENT_LOG=1` to disable. See [Security & Privacy](#security--privacy) for details.
|
|
1451
1497
|
|
|
1452
1498
|
### Which platforms?
|
|
1453
1499
|
|
|
1454
1500
|
macOS and Linux. Windows via WSL works but isn't first-class yet.
|
|
1455
1501
|
|
|
1456
|
-
**macOS-only features:** Keychain-based secrets (`agents secrets`, `agents
|
|
1502
|
+
**macOS-only features:** Keychain-based secrets (`agents secrets`, `agents harness login`) require macOS. Default iCloud sync for bundles requires macOS + iCloud Keychain enabled; use `--no-icloud-sync` for device-local bundles. On Linux, use environment variables or `.env` files for API keys. Native Linux credential store support is planned.
|
|
1457
1503
|
|
|
1458
1504
|
Interactive tmux-backed runs require tmux 3.2 or newer.
|
|
1459
1505
|
|
|
@@ -1467,13 +1513,13 @@ Yes -- `agents run` is non-interactive by default. `--yes` auto-accepts prompts,
|
|
|
1467
1513
|
|
|
1468
1514
|
The auto-update prompt is suppressed automatically when stdin or stdout isn't a TTY. For headless environments where TTY detection misfires (k8s pods that allocate a PTY for stdout, cloud sandbox factories), set `AGENTS_CLI_DISABLE_AUTO_UPDATE=1` to skip the update check entirely -- no prompt, no network call.
|
|
1469
1515
|
|
|
1470
|
-
|
|
1516
|
+
agi-cli also prints a one-time "star us on GitHub" line after your first successful `agents run`/`agents teams`. It's already skipped in CI, non-TTY, `--json`, and `--quiet` runs; set `AGENTS_NO_NUDGE=1` to suppress it everywhere.
|
|
1471
1517
|
|
|
1472
1518
|
To update on demand instead of waiting for the prompt, run `agents upgrade` (add `-y` to skip the confirmation, or pass a version/dist-tag to install something other than latest).
|
|
1473
1519
|
|
|
1474
1520
|
### What happens to my config when I switch versions?
|
|
1475
1521
|
|
|
1476
|
-
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
|
|
1522
|
+
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 agi-cli), that gets backed up once to `~/.agents-system/backups/`.
|
|
1477
1523
|
|
|
1478
1524
|
### Does session search use RAG or semantic search?
|
|
1479
1525
|
|
|
@@ -1489,7 +1535,7 @@ Agents are defined in [src/lib/agents.ts](apps/cli/src/lib/agents.ts) -- each is
|
|
|
1489
1535
|
|
|
1490
1536
|
### What's the relationship to Phoenix Labs / Rush?
|
|
1491
1537
|
|
|
1492
|
-
`
|
|
1538
|
+
`agi-cli` is an open client maintained by Phoenix Labs. Rush is a separate product. No Rush account required, no upsell.
|
|
1493
1539
|
|
|
1494
1540
|
## This monorepo also contains
|
|
1495
1541
|
|
|
@@ -1505,8 +1551,8 @@ Agents are defined in [src/lib/agents.ts](apps/cli/src/lib/agents.ts) -- each is
|
|
|
1505
1551
|
## Contributing
|
|
1506
1552
|
|
|
1507
1553
|
```bash
|
|
1508
|
-
git clone https://github.com/phnx-labs/
|
|
1509
|
-
cd
|
|
1554
|
+
git clone https://github.com/phnx-labs/agi-cli
|
|
1555
|
+
cd agi-cli/apps/cli
|
|
1510
1556
|
bun install && bun run build && bun test
|
|
1511
1557
|
```
|
|
1512
1558
|
|
package/dist/bin/agents
CHANGED
|
Binary file
|