@crvouga/dev-fleet 0.0.0-stage → 0.2.0
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/.mise/locks/aws-cdk/2.1146.1/aube-lock.yaml +24 -0
- package/.mise/locks/aws-cdk/2.1146.1/package.json +7 -0
- package/.mise/locks/azure-cli/2.91.0~a837e014/pyproject.toml +5 -0
- package/.mise/locks/azure-cli/2.91.0~a837e014/uv.lock +2794 -0
- package/.mise/locks/gemini/0.66.0~84aac8e6/aube-lock.yaml +123 -0
- package/.mise/locks/gemini/0.66.0~84aac8e6/package.json +12 -0
- package/.mise/locks/npm-devcontainers-cli/0.90.0/aube-lock.yaml +24 -0
- package/.mise/locks/npm-devcontainers-cli/0.90.0/package.json +7 -0
- package/.mise/locks/npm-modelcontextprotocol-inspector/2.13.0~4c109bea/aube-lock.yaml +1432 -0
- package/.mise/locks/npm-modelcontextprotocol-inspector/2.13.0~4c109bea/package.json +7 -0
- package/.mise/locks/npm-vercel/65.8.0/aube-lock.yaml +3595 -0
- package/.mise/locks/npm-vercel/65.8.0/package.json +7 -0
- package/.mise/locks/npm-wrangler/4.156.0/aube-lock.yaml +895 -0
- package/.mise/locks/npm-wrangler/4.156.0/package.json +7 -0
- package/.mise/locks/npm-yarnpkg-cli-dist/4.18.1/aube-lock.yaml +24 -0
- package/.mise/locks/npm-yarnpkg-cli-dist/4.18.1/package.json +7 -0
- package/LICENSE +21 -0
- package/README.md +357 -2
- package/agents/antigravity-proxy.ts +3 -0
- package/agents/audit.md +89 -0
- package/agents/claude-proxy +5 -0
- package/agents/claude-proxy.ts +3 -0
- package/agents/codex-proxy.ts +3 -0
- package/agents/grok-proxy.ts +3 -0
- package/agents/managed-proxy.ts +55 -0
- package/agents/opencode-proxy.ts +3 -0
- package/agents/registry.json +209 -0
- package/agents/registry.schema.json +149 -0
- package/agents/setup.md +158 -0
- package/agents/t3.json +40 -0
- package/ansible/macos/manager.yml +30 -0
- package/ansible/macos/policy.json +9 -0
- package/ansible/monitoring/README.md +215 -0
- package/ansible/monitoring/agent-darwin.yml +198 -0
- package/ansible/monitoring/agent.yml +172 -0
- package/ansible/monitoring/beszel-agent.service +42 -0
- package/ansible/monitoring/compose.yml +74 -0
- package/ansible/monitoring/hub-darwin.yml +102 -0
- package/ansible/monitoring/hub-route-darwin.yml +51 -0
- package/ansible/monitoring/lock.json +16 -0
- package/ansible/net/remote-probe.sh +13 -0
- package/ansible/pyproject.toml +12 -0
- package/ansible/ubuntu/authorize-sudo.sh +51 -0
- package/ansible/ubuntu/baseline.yml +89 -0
- package/ansible/ubuntu/disk-gc.py +336 -0
- package/ansible/ubuntu/disk-guard.py +104 -0
- package/ansible/ubuntu/policy.json +52 -0
- package/ansible/ubuntu/recovery.yml +15 -0
- package/ansible/ubuntu/t3/policy.json +7 -0
- package/ansible/ubuntu/t3-desktop.yml +220 -0
- package/ansible/ubuntu/t3-health.sh +33 -0
- package/ansible/ubuntu/t3-policy.yml +76 -0
- package/ansible/ubuntu/t3-route.yml +28 -0
- package/ansible/ubuntu/tailscale.yml +78 -0
- package/ansible/ubuntu/tasks/credentials.yml +47 -0
- package/ansible/ubuntu/tasks/docker.yml +31 -0
- package/ansible/ubuntu/tasks/packages.yml +56 -0
- package/ansible/ubuntu/tasks/power.yml +51 -0
- package/ansible/ubuntu/tasks/recovery.yml +39 -0
- package/ansible/ubuntu/tasks/resources.yml +312 -0
- package/ansible/ubuntu/tasks/services.yml +31 -0
- package/ansible/ubuntu/tasks/ssh.yml +71 -0
- package/ansible/ubuntu/tasks/user.yml +120 -0
- package/ansible/uv.lock +190 -0
- package/bin/devfleet.mjs +36 -0
- package/bootstrap/bootstrap.ps1 +50 -0
- package/bootstrap/bootstrap.sh +80 -0
- package/bootstrap/devfleet +7 -0
- package/bootstrap/docker-desktop.sh +33 -0
- package/bootstrap/doctor.ts +234 -0
- package/bootstrap/fleet-manager-run.sh +103 -0
- package/bootstrap/fleet-remote-bootstrap.sh +258 -0
- package/bootstrap/global-config.ts +171 -0
- package/bootstrap/install-launcher.sh +10 -0
- package/bootstrap/native-aws.ts +86 -0
- package/bootstrap/native-t3.ts +154 -0
- package/bootstrap/npm.ts +358 -0
- package/bootstrap/release-version.ts +157 -0
- package/bootstrap/setup-status.ts +51 -0
- package/bootstrap/setup.ts +88 -0
- package/bootstrap/shell-path.ts +105 -0
- package/bootstrap/verify-t3-archive.py +49 -0
- package/bootstrap/worker-auth.ts +65 -0
- package/bootstrap/worker-github.ts +47 -0
- package/bootstrap/worker-tools.ts +24 -0
- package/cliproxy/AGENTS.md +11 -0
- package/cliproxy/README.md +269 -0
- package/cliproxy/clients/bootstrap.py +143 -0
- package/cliproxy/clients/launcher.py +57 -0
- package/cliproxy/compose.yaml +90 -0
- package/cliproxy/config.template.yaml +70 -0
- package/cliproxy/docs/cloud-adoption.md +16 -0
- package/cliproxy/docs/deployment.png +0 -0
- package/cliproxy/docs/deployment.svg +109 -0
- package/cliproxy/docs/health-workflow.example.yml +185 -0
- package/cliproxy/docs/migration.md +131 -0
- package/cliproxy/docs/model-health-report.schema.json +364 -0
- package/cliproxy/docs/model-health.md +393 -0
- package/cliproxy/image.lock.json +5 -0
- package/cliproxy/launchd/dev.devfleet.cliproxy-backup-check.plist +38 -0
- package/cliproxy/launchd/dev.devfleet.cliproxy-backup.plist +48 -0
- package/cliproxy/launchd/dev.devfleet.cliproxy-fleet.plist +32 -0
- package/cliproxy/launchd/dev.devfleet.cliproxy-gc.plist +38 -0
- package/cliproxy/launchd/dev.devfleet.cliproxy-monitor.plist +29 -0
- package/cliproxy/launchd/dev.devfleet.cliproxy-vault-renew.plist +31 -0
- package/cliproxy/models.json +1618 -0
- package/cliproxy/requirements.lock +78 -0
- package/cliproxy/scripts/accounts.py +38 -0
- package/cliproxy/scripts/audit.py +123 -0
- package/cliproxy/scripts/backup +234 -0
- package/cliproxy/scripts/check.py +34 -0
- package/cliproxy/scripts/checkpoint.py +226 -0
- package/cliproxy/scripts/cli.py +64 -0
- package/cliproxy/scripts/cliproxy_host.py +257 -0
- package/cliproxy/scripts/cloud_state.py +150 -0
- package/cliproxy/scripts/container-health +6 -0
- package/cliproxy/scripts/docker +24 -0
- package/cliproxy/scripts/external-health.py +79 -0
- package/cliproxy/scripts/fleet_config.py +43 -0
- package/cliproxy/scripts/fleet_sync.py +274 -0
- package/cliproxy/scripts/initialize +84 -0
- package/cliproxy/scripts/install-dependencies +48 -0
- package/cliproxy/scripts/install.py +406 -0
- package/cliproxy/scripts/model_health.py +16 -0
- package/cliproxy/scripts/modelhealth/__init__.py +5 -0
- package/cliproxy/scripts/modelhealth/checks.py +429 -0
- package/cliproxy/scripts/modelhealth/cli.py +117 -0
- package/cliproxy/scripts/modelhealth/config.py +186 -0
- package/cliproxy/scripts/modelhealth/emulator.py +536 -0
- package/cliproxy/scripts/modelhealth/expect.py +88 -0
- package/cliproxy/scripts/modelhealth/findings.py +183 -0
- package/cliproxy/scripts/modelhealth/protocol.py +330 -0
- package/cliproxy/scripts/modelhealth/redact.py +28 -0
- package/cliproxy/scripts/modelhealth/report.py +150 -0
- package/cliproxy/scripts/modelhealth/runner.py +390 -0
- package/cliproxy/scripts/modelhealth/scenario.py +131 -0
- package/cliproxy/scripts/modelhealth/schema.py +63 -0
- package/cliproxy/scripts/modelhealth/simulate.py +111 -0
- package/cliproxy/scripts/modelhealth/transport.py +213 -0
- package/cliproxy/scripts/monitor +68 -0
- package/cliproxy/scripts/ops +527 -0
- package/cliproxy/scripts/public-endpoint +127 -0
- package/cliproxy/scripts/recover_node.py +177 -0
- package/cliproxy/scripts/restore-verify +60 -0
- package/cliproxy/scripts/retention.py +144 -0
- package/cliproxy/scripts/service-start +7 -0
- package/cliproxy/scripts/validate-config +56 -0
- package/cliproxy/scripts/vault-access.py +57 -0
- package/cliproxy/scripts/vault-backup-login +55 -0
- package/cliproxy/scripts/vault-recovery +56 -0
- package/cliproxy/scripts/vault-renew +30 -0
- package/cliproxy/systemd/cliproxy-backup-check.service +10 -0
- package/cliproxy/systemd/cliproxy-backup-check.timer +8 -0
- package/cliproxy/systemd/cliproxy-backup.service +13 -0
- package/cliproxy/systemd/cliproxy-backup.timer +8 -0
- package/cliproxy/systemd/cliproxy-fleet.service +17 -0
- package/cliproxy/systemd/cliproxy-gc.service +13 -0
- package/cliproxy/systemd/cliproxy-gc.timer +8 -0
- package/cliproxy/systemd/cliproxy-monitor.service +8 -0
- package/cliproxy/systemd/cliproxy-monitor.timer +7 -0
- package/cliproxy/systemd/cliproxy-vault-renew.service +8 -0
- package/cliproxy/systemd/cliproxy-vault-renew.timer +7 -0
- package/cliproxy/vendor/LICENSE +22 -0
- package/cliproxy/vendor/config.upstream.yaml +1349 -0
- package/docs/consumer-setup.md +408 -0
- package/docs/declared.md +89 -0
- package/docs/machine-setup.md +399 -0
- package/docs/operations.md +276 -0
- package/docs/releasing.md +103 -0
- package/docs/state.md +254 -0
- package/docs/topology.md +67 -0
- package/docs/ubuntu-sync.md +351 -0
- package/docs/worker-contract.md +67 -0
- package/examples/fleet.json +100 -0
- package/examples/roster.json +13 -0
- package/llms.txt +35 -0
- package/mise.lock +1521 -0
- package/mise.toml +110 -0
- package/package.json +74 -4
- package/schema/fleet.schema.json +420 -0
- package/schema/roster.schema.json +77 -0
- package/src/agents/account-relay.ts +111 -0
- package/src/agents/accounts.ts +85 -0
- package/src/agents/audit.ts +77 -0
- package/src/agents/cli.ts +13 -0
- package/src/agents/command.ts +204 -0
- package/src/agents/converge.ts +123 -0
- package/src/agents/doctor.ts +107 -0
- package/src/agents/errors.ts +2 -0
- package/src/agents/files.ts +73 -0
- package/src/agents/fleet-verify.ts +165 -0
- package/src/agents/launch.ts +290 -0
- package/src/agents/native-verify.ts +371 -0
- package/src/agents/provider-errors.ts +57 -0
- package/src/agents/registry.ts +61 -0
- package/src/agents/render.ts +110 -0
- package/src/agents/round-trip.ts +192 -0
- package/src/agents/secrets.ts +13 -0
- package/src/agents/toolchain.ts +34 -0
- package/src/agents/verify-cache.ts +103 -0
- package/src/agents/verify.ts +127 -0
- package/src/auth-checks.ts +163 -0
- package/src/cli/agent-guide.ts +129 -0
- package/src/cli/app.ts +122 -0
- package/src/cli/cli.ts +28 -0
- package/src/cli/command-index.ts +57 -0
- package/src/cli/contracts.ts +25 -0
- package/src/cli/fleet-reference.ts +17 -0
- package/src/cli/fleet-state.ts +499 -0
- package/src/cli/fleet-sync-checkout.ts +130 -0
- package/src/cli/fleet-sync-enrollment.ts +140 -0
- package/src/cli/fleet-sync-forward.ts +134 -0
- package/src/cli/fleet-sync-manager.ts +249 -0
- package/src/cli/fleet-sync-monitoring.ts +185 -0
- package/src/cli/fleet-sync-output.ts +317 -0
- package/src/cli/fleet-sync-privilege.ts +27 -0
- package/src/cli/fleet-sync-progress.ts +109 -0
- package/src/cli/fleet-sync-remote.ts +242 -0
- package/src/cli/fleet-sync-report.ts +26 -0
- package/src/cli/fleet-sync-schedule.ts +138 -0
- package/src/cli/fleet-sync-state.ts +86 -0
- package/src/cli/fleet-sync-vault.ts +166 -0
- package/src/cli/fleet-sync.ts +375 -0
- package/src/cli/fleet.ts +165 -0
- package/src/cli/managed-health.ts +219 -0
- package/src/cli/node-deployment.ts +34 -0
- package/src/cli/node-sync.ts +121 -0
- package/src/cli/node-t3.ts +31 -0
- package/src/cli/options.ts +141 -0
- package/src/cli/probe-source.ts +7 -0
- package/src/cli/program.ts +185 -0
- package/src/cli/project.ts +51 -0
- package/src/cli/register-fleet.ts +296 -0
- package/src/cli/registry.ts +185 -0
- package/src/cli/repair-apply.ts +67 -0
- package/src/cli/repair-guard.ts +11 -0
- package/src/cli/repair-inspect.ts +150 -0
- package/src/cli/repair-script.ts +76 -0
- package/src/cli/repair.ts +209 -0
- package/src/cli/roster.ts +105 -0
- package/src/cli/search.ts +35 -0
- package/src/cli/settings.ts +67 -0
- package/src/cli/source-operations.ts +102 -0
- package/src/cli/t3/command.ts +90 -0
- package/src/cli/t3/register.ts +55 -0
- package/src/cli/tailnet.ts +127 -0
- package/src/cli/ui-actions.ts +133 -0
- package/src/cli/ui-controller.ts +113 -0
- package/src/cli/ui-data.ts +106 -0
- package/src/cli/ui-execute.ts +163 -0
- package/src/cli/ui-repairs.ts +34 -0
- package/src/cli/ui-reports.ts +211 -0
- package/src/cli/ui-targets.ts +100 -0
- package/src/cli/ui-terminal.ts +109 -0
- package/src/cli/ui-types.ts +49 -0
- package/src/cli/ui-wizard.ts +101 -0
- package/src/cli/ui.ts +9 -0
- package/src/cli/worker-health-output.ts +37 -0
- package/src/config.ts +186 -0
- package/src/configure.ts +255 -0
- package/src/definition.ts +290 -0
- package/src/diagnostics.ts +92 -0
- package/src/doctor-check.ts +10 -0
- package/src/errors.ts +1 -0
- package/src/fingerprint.ts +120 -0
- package/src/fleet-config.ts +174 -0
- package/src/input-hashes.ts +73 -0
- package/src/machine/local-source.ts +52 -0
- package/src/machine/lock-error.ts +2 -0
- package/src/machine/platform.ts +44 -0
- package/src/machine/source.ts +68 -0
- package/src/machine/state.ts +173 -0
- package/src/machine-health.ts +95 -0
- package/src/managed-source.ts +47 -0
- package/src/manager-failure.ts +48 -0
- package/src/manager-sync.ts +405 -0
- package/src/manager.ts +62 -0
- package/src/monitoring/agent-evidence.ts +146 -0
- package/src/monitoring/apply.ts +183 -0
- package/src/monitoring/beszel.ts +198 -0
- package/src/monitoring/enroll.ts +111 -0
- package/src/monitoring/hub-access.ts +114 -0
- package/src/monitoring/hub-backup.ts +121 -0
- package/src/monitoring/hub-viewer.ts +142 -0
- package/src/monitoring/hub.ts +93 -0
- package/src/monitoring/manager-agent.ts +73 -0
- package/src/monitoring/manager-hub.ts +248 -0
- package/src/monitoring/remote.ts +65 -0
- package/src/network-definition.ts +83 -0
- package/src/node-converge-linux.ts +374 -0
- package/src/node-converge-shared.ts +83 -0
- package/src/node-converge.ts +40 -0
- package/src/onboard.ts +35 -0
- package/src/package-info.ts +45 -0
- package/src/platform/ansible-receipt.ts +128 -0
- package/src/platform/ansible.ts +66 -0
- package/src/platform/darwin.ts +203 -0
- package/src/platform/detect.ts +11 -0
- package/src/platform/fallback.ts +110 -0
- package/src/platform/index.ts +38 -0
- package/src/platform/launchd.ts +98 -0
- package/src/platform/linux.ts +139 -0
- package/src/platform/ps.ts +45 -0
- package/src/platform/resource-verify.ts +132 -0
- package/src/platform/systemd-user.ts +95 -0
- package/src/platform/t3-policy.ts +137 -0
- package/src/platform/t3-route.ts +68 -0
- package/src/platform/t3-service.ts +75 -0
- package/src/platform/types.ts +123 -0
- package/src/platform/ubuntu-audit.ts +66 -0
- package/src/platform/ubuntu-verify.ts +105 -0
- package/src/platform/windows.ts +148 -0
- package/src/power-recovery.ts +55 -0
- package/src/probe.ts +51 -0
- package/src/protocol.ts +119 -0
- package/src/proxy-converge.ts +85 -0
- package/src/remote-bootstrap.ts +210 -0
- package/src/remote-entry.ts +89 -0
- package/src/remote-lock.ts +12 -0
- package/src/repair-catalog.ts +206 -0
- package/src/repair-plan.ts +78 -0
- package/src/repair-runner.ts +84 -0
- package/src/report.ts +71 -0
- package/src/runner.ts +104 -0
- package/src/secrets.ts +169 -0
- package/src/service-auth.ts +115 -0
- package/src/ssh.ts +135 -0
- package/src/state/bucket.ts +208 -0
- package/src/state/check.ts +74 -0
- package/src/state/connection.ts +92 -0
- package/src/state/enrollment.ts +45 -0
- package/src/state/legacy.ts +89 -0
- package/src/state/litestream.ts +143 -0
- package/src/state/operator.ts +20 -0
- package/src/state/paths.ts +40 -0
- package/src/state/roster.ts +62 -0
- package/src/state/store.ts +169 -0
- package/src/state/sync.ts +352 -0
- package/src/sync.ts +104 -0
- package/src/t3/accounts.ts +81 -0
- package/src/t3/desired.ts +165 -0
- package/src/t3/files.ts +81 -0
- package/src/t3/names-check.ts +53 -0
- package/src/t3/names.ts +155 -0
- package/src/t3/plan.ts +82 -0
- package/src/t3/providers.ts +74 -0
- package/src/t3/reconcile.ts +123 -0
- package/src/t3-endpoint.ts +104 -0
- package/src/t3-linked-check.ts +123 -0
- package/src/tailnet-health.ts +231 -0
- package/src/tailnet-matching.ts +37 -0
- package/src/tailscale.ts +141 -0
- package/src/toolchain-checks.ts +108 -0
- package/src/topology.ts +24 -0
- package/src/transport.ts +122 -0
- package/src/types.ts +99 -0
- package/src/vault-config.ts +38 -0
- package/src/worker-access-checks.ts +168 -0
- package/src/worker-capacity.ts +34 -0
- package/src/worker-host-checks.ts +181 -0
- package/src/worker-policy.ts +64 -0
- package/src/worker-readiness.ts +64 -0
- package/src/workstation-checks.ts +29 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./registry.schema.json",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"defaults": {
|
|
5
|
+
"codex": {
|
|
6
|
+
"model": "gpt-6.1-sol"
|
|
7
|
+
},
|
|
8
|
+
"claude": {
|
|
9
|
+
"model": "sonnet"
|
|
10
|
+
},
|
|
11
|
+
"opencode": {
|
|
12
|
+
"model": "openrouter/auto"
|
|
13
|
+
},
|
|
14
|
+
"gemini": {
|
|
15
|
+
"model": "auto"
|
|
16
|
+
},
|
|
17
|
+
"grok": {
|
|
18
|
+
"model": "grok-4.7"
|
|
19
|
+
},
|
|
20
|
+
"antigravity": {
|
|
21
|
+
"model": "gemini-3.8-flash"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"proxy": {
|
|
25
|
+
"models": {
|
|
26
|
+
"codex": "gpt-6.1-sol",
|
|
27
|
+
"claude": "claude-sonnet-4-6",
|
|
28
|
+
"opencode": "gpt-6.1-sol",
|
|
29
|
+
"gemini": "gemini-3-flash",
|
|
30
|
+
"grok": "grok-4.7",
|
|
31
|
+
"antigravity": "gemini-3.8-flash"
|
|
32
|
+
},
|
|
33
|
+
"accounts": {
|
|
34
|
+
"claude": {
|
|
35
|
+
"provider": "claude",
|
|
36
|
+
"models": ["claude-opus-5-5", "claude-sonnet-5-5", "claude-haiku-5-5"]
|
|
37
|
+
},
|
|
38
|
+
"codex": {
|
|
39
|
+
"provider": "codex",
|
|
40
|
+
"models": ["gpt-6.1-sol"]
|
|
41
|
+
},
|
|
42
|
+
"opencode": {
|
|
43
|
+
"provider": "antigravity",
|
|
44
|
+
"models": ["gemini-3.8-flash"]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"routes": {
|
|
48
|
+
"claude": {
|
|
49
|
+
"model": "claude-sonnet-4-6",
|
|
50
|
+
"native": "claude",
|
|
51
|
+
"harness": "opencode"
|
|
52
|
+
},
|
|
53
|
+
"codex": {
|
|
54
|
+
"model": "gpt-6.1-sol",
|
|
55
|
+
"native": "codex",
|
|
56
|
+
"harness": "opencode"
|
|
57
|
+
},
|
|
58
|
+
"gemini": {
|
|
59
|
+
"model": "gemini-3-flash",
|
|
60
|
+
"native": "gemini",
|
|
61
|
+
"harness": "opencode"
|
|
62
|
+
},
|
|
63
|
+
"grok": {
|
|
64
|
+
"model": "grok-4.7",
|
|
65
|
+
"native": "grok",
|
|
66
|
+
"harness": "opencode"
|
|
67
|
+
},
|
|
68
|
+
"muse": {
|
|
69
|
+
"model": "devin/muse-wonder-1-0",
|
|
70
|
+
"native": null,
|
|
71
|
+
"harness": "opencode"
|
|
72
|
+
},
|
|
73
|
+
"antigravity": {
|
|
74
|
+
"model": "gemini-3.8-flash",
|
|
75
|
+
"native": "antigravity",
|
|
76
|
+
"harness": "opencode"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"nodes": {},
|
|
81
|
+
"tools": {
|
|
82
|
+
"codex": {
|
|
83
|
+
"binary": "codex",
|
|
84
|
+
"config": "CODEX_HOME/config.toml",
|
|
85
|
+
"authentication": "Independent codex login for direct; Vault environment key for proxy",
|
|
86
|
+
"proxy": "responses",
|
|
87
|
+
"source": "https://learn.chatgpt.com/docs/config-file/config-reference",
|
|
88
|
+
"directEndpoint": "Native vendor/account configuration; no portable endpoint override is applied",
|
|
89
|
+
"capabilities": {
|
|
90
|
+
"streaming": "unverified on fleet nodes",
|
|
91
|
+
"toolCalls": "unverified on fleet nodes",
|
|
92
|
+
"usageTracking": "independent native/runtime state",
|
|
93
|
+
"unattendedProfile": true
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"claude": {
|
|
97
|
+
"binary": "claude",
|
|
98
|
+
"config": "--settings FILE",
|
|
99
|
+
"authentication": "Independent claude auth login for direct; ANTHROPIC_AUTH_TOKEN for proxy",
|
|
100
|
+
"proxy": "messages",
|
|
101
|
+
"source": "https://code.claude.com/docs/en/llm-gateway-connect",
|
|
102
|
+
"directEndpoint": "Native vendor/account configuration; no portable endpoint override is applied",
|
|
103
|
+
"capabilities": {
|
|
104
|
+
"streaming": "unverified on fleet nodes",
|
|
105
|
+
"toolCalls": "unverified on fleet nodes",
|
|
106
|
+
"usageTracking": "independent native/runtime state",
|
|
107
|
+
"unattendedProfile": true
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"opencode": {
|
|
111
|
+
"binary": "opencode",
|
|
112
|
+
"config": "OPENCODE_CONFIG",
|
|
113
|
+
"authentication": "Existing dev-fleet opencode sync/Vault; runtime environment key for proxy",
|
|
114
|
+
"proxy": "responses",
|
|
115
|
+
"source": "https://opencode.ai/docs/config/",
|
|
116
|
+
"directEndpoint": "Existing dev-fleet OpenCode provider catalog and OpenRouter auto policy",
|
|
117
|
+
"capabilities": {
|
|
118
|
+
"streaming": "unverified on fleet nodes",
|
|
119
|
+
"toolCalls": "unverified on fleet nodes",
|
|
120
|
+
"usageTracking": "independent native/runtime state",
|
|
121
|
+
"unattendedProfile": true
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"gemini": {
|
|
125
|
+
"binary": "gemini",
|
|
126
|
+
"config": "GEMINI_CLI_HOME/.gemini/settings.json",
|
|
127
|
+
"authentication": "Native Google login for direct; supported gateway authentication with runtime Vault key for proxy",
|
|
128
|
+
"proxy": "generateContent",
|
|
129
|
+
"source": "https://github.com/google-gemini/gemini-cli/blob/v0.66.0/packages/core/src/core/contentGenerator.ts",
|
|
130
|
+
"directEndpoint": "Native vendor/account configuration; no portable endpoint override is applied",
|
|
131
|
+
"capabilities": {
|
|
132
|
+
"streaming": "unverified on fleet nodes",
|
|
133
|
+
"toolCalls": "unverified on fleet nodes",
|
|
134
|
+
"usageTracking": "independent native/runtime state",
|
|
135
|
+
"unattendedProfile": true
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"t3": {
|
|
139
|
+
"binary": "t3",
|
|
140
|
+
"config": "T3CODE_HOME/userdata/settings.json providerInstances",
|
|
141
|
+
"authentication": "Independent t3 up --connect and peer pairing",
|
|
142
|
+
"proxy": null,
|
|
143
|
+
"source": "Installed T3 contracts/settings.ts and providerInstance.ts; see audit.md",
|
|
144
|
+
"directEndpoint": "Native vendor/account configuration; no portable endpoint override is applied",
|
|
145
|
+
"capabilities": {
|
|
146
|
+
"streaming": "unverified on fleet nodes",
|
|
147
|
+
"toolCalls": "unverified on fleet nodes",
|
|
148
|
+
"usageTracking": "independent native/runtime state",
|
|
149
|
+
"unattendedProfile": false
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"cursor": {
|
|
153
|
+
"binary": "cursor",
|
|
154
|
+
"config": "OS-specific Cursor User/settings.json and .cursor/mcp.json",
|
|
155
|
+
"authentication": "Interactive Cursor Settings > Models; credentials stay in application storage",
|
|
156
|
+
"proxy": null,
|
|
157
|
+
"source": "https://prod.cursor.com/help/models-and-usage/api-keys",
|
|
158
|
+
"directEndpoint": "Native vendor/account configuration; no portable endpoint override is applied",
|
|
159
|
+
"capabilities": {
|
|
160
|
+
"streaming": "unverified on fleet nodes",
|
|
161
|
+
"toolCalls": "unverified on fleet nodes",
|
|
162
|
+
"usageTracking": "independent native/runtime state",
|
|
163
|
+
"unattendedProfile": false
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"antigravity": {
|
|
167
|
+
"binary": "antigravity",
|
|
168
|
+
"config": "Profile --gemini-dir (antigravity-cli/settings.json, modelProvider gemini)",
|
|
169
|
+
"authentication": "Shared CLI proxy: GEMINI_API_KEY (Vault) with GOOGLE_GEMINI_BASE_URL; no Google sign-in",
|
|
170
|
+
"proxy": "generateContent",
|
|
171
|
+
"source": "https://antigravity.google/docs/install/",
|
|
172
|
+
"directEndpoint": "Native vendor/account configuration; no portable endpoint override is applied",
|
|
173
|
+
"capabilities": {
|
|
174
|
+
"streaming": "unverified on fleet nodes",
|
|
175
|
+
"toolCalls": "unverified on fleet nodes",
|
|
176
|
+
"usageTracking": "independent native/runtime state",
|
|
177
|
+
"unattendedProfile": true
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"copilot": {
|
|
181
|
+
"binary": "copilot",
|
|
182
|
+
"config": "Native config and repository .github/copilot-instructions.md",
|
|
183
|
+
"authentication": "Independent native GitHub login",
|
|
184
|
+
"proxy": null,
|
|
185
|
+
"source": "https://docs.github.com/en/copilot/how-tos/copilot-cli",
|
|
186
|
+
"directEndpoint": "Native vendor/account configuration; no portable endpoint override is applied",
|
|
187
|
+
"capabilities": {
|
|
188
|
+
"streaming": "unverified on fleet nodes",
|
|
189
|
+
"toolCalls": "unverified on fleet nodes",
|
|
190
|
+
"usageTracking": "independent native/runtime state",
|
|
191
|
+
"unattendedProfile": false
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"grok": {
|
|
195
|
+
"binary": "grok",
|
|
196
|
+
"config": "GROK_HOME/config.toml",
|
|
197
|
+
"authentication": "Shared CLI proxy: custom [model.*] entry with env_key CLIPROXY_API_KEY (Vault); no grok login",
|
|
198
|
+
"proxy": "chat_completions",
|
|
199
|
+
"source": "https://docs.x.ai/build/settings/reference",
|
|
200
|
+
"directEndpoint": "Native vendor/account configuration; no portable endpoint override is applied",
|
|
201
|
+
"capabilities": {
|
|
202
|
+
"streaming": "unverified on fleet nodes",
|
|
203
|
+
"toolCalls": "unverified on fleet nodes",
|
|
204
|
+
"usageTracking": "independent native/runtime state",
|
|
205
|
+
"unattendedProfile": true
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Personal portable agent registry",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["version", "defaults", "proxy", "nodes", "tools"],
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": {
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"version": {
|
|
12
|
+
"const": 1
|
|
13
|
+
},
|
|
14
|
+
"defaults": {
|
|
15
|
+
"type": "object"
|
|
16
|
+
},
|
|
17
|
+
"proxy": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"required": ["models"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"models": {
|
|
22
|
+
"type": "object"
|
|
23
|
+
},
|
|
24
|
+
"accounts": {
|
|
25
|
+
"description": "Tools T3 offers once per signed-in proxy account. Accounts are never listed here: they are discovered from the proxy's model list. provider is the proxy credential type that serves the tool; models are preferred defaults (Claude: opus, sonnet, haiku).",
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"required": ["provider", "models"],
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"properties": {
|
|
32
|
+
"provider": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"pattern": "^[a-z][a-z0-9]{0,30}$"
|
|
35
|
+
},
|
|
36
|
+
"models": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"minItems": 1,
|
|
39
|
+
"items": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^[a-zA-Z0-9_.:+-]+$"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"nodes": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"propertyNames": {
|
|
52
|
+
"pattern": "^[a-z0-9][a-z0-9-]{0,62}$"
|
|
53
|
+
},
|
|
54
|
+
"additionalProperties": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"additionalProperties": false,
|
|
57
|
+
"properties": {
|
|
58
|
+
"codex": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"additionalProperties": false,
|
|
61
|
+
"properties": {
|
|
62
|
+
"direct": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
65
|
+
},
|
|
66
|
+
"proxy": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"claude": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"properties": {
|
|
76
|
+
"direct": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
79
|
+
},
|
|
80
|
+
"proxy": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"opencode": {
|
|
87
|
+
"type": "object",
|
|
88
|
+
"additionalProperties": false,
|
|
89
|
+
"properties": {
|
|
90
|
+
"direct": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
93
|
+
},
|
|
94
|
+
"proxy": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"gemini": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"additionalProperties": false,
|
|
103
|
+
"properties": {
|
|
104
|
+
"direct": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
107
|
+
},
|
|
108
|
+
"proxy": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"grok": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"additionalProperties": false,
|
|
117
|
+
"properties": {
|
|
118
|
+
"direct": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
121
|
+
},
|
|
122
|
+
"proxy": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"antigravity": {
|
|
129
|
+
"type": "object",
|
|
130
|
+
"additionalProperties": false,
|
|
131
|
+
"properties": {
|
|
132
|
+
"direct": {
|
|
133
|
+
"type": "string",
|
|
134
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
135
|
+
},
|
|
136
|
+
"proxy": {
|
|
137
|
+
"type": "string",
|
|
138
|
+
"pattern": "^[a-zA-Z0-9_./:+-]+$"
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"tools": {
|
|
146
|
+
"type": "object"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
package/agents/setup.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Bugs and feature requests
|
|
2
|
+
|
|
3
|
+
This file ships inside the dev-fleet package. If you are an agent working in
|
|
4
|
+
another project and dev-fleet is wrong or lacks something, do not edit it
|
|
5
|
+
here, in a clone or on a machine. Raise an issue in the dev-fleet repository;
|
|
6
|
+
`devfleet --help` prints the address and `devfleet commands --json` carries
|
|
7
|
+
the rule under `agent.support`.
|
|
8
|
+
|
|
9
|
+
# Manager-led Ubuntu fleet setup
|
|
10
|
+
|
|
11
|
+
For the enrolled Ubuntu development fleet, run on the designated manager:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
devfleet fleet-sync
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Read the [Fleet operator guide](../../fleet/docs/ubuntu-sync.md) for enrollment,
|
|
18
|
+
approved revisions, bootstrap, provider checks and unresolved release gates.
|
|
19
|
+
Routine fleet updates do not require a command sequence on individual nodes.
|
|
20
|
+
The legacy local commands below retain their existing behavior for compatibility.
|
|
21
|
+
|
|
22
|
+
# Developer fleet configuration setup
|
|
23
|
+
|
|
24
|
+
Use **personal** for node and T3 configuration. Workstation and fleet are internal
|
|
25
|
+
implementation packages; neither exports its own executable.
|
|
26
|
+
|
|
27
|
+
`fleet-sync` installs the `devfleet` launcher on every machine it converges,
|
|
28
|
+
linked to the fleet-owned checkout of the applied revision. On such a machine:
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
devfleet fleet-status
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`fleet-node-sync` reconciles one machine from a checkout of dev-fleet
|
|
35
|
+
(`--workspace PATH` or `PERSONAL_WORKSPACE` names it). It is for development:
|
|
36
|
+
run from the published package it is refused, because `fleet-sync` does the
|
|
37
|
+
same from a checkout it owns.
|
|
38
|
+
Each machine still needs its own authorized Vault session, SSH keys and T3 pairing.
|
|
39
|
+
The sync never copies them or provisions infrastructure.
|
|
40
|
+
|
|
41
|
+
## Reconciliation
|
|
42
|
+
|
|
43
|
+
`fleet-node-sync` applies by invocation. It reconciles the locked toolchain, installs
|
|
44
|
+
one `personal` launcher, retires the repository-owned `ws` launcher, upserts the
|
|
45
|
+
Codex proxy profile, and reconciles T3 provider instances. `--dry-run` lists these
|
|
46
|
+
steps without writing or installing. The default node ID is the normalized hostname;
|
|
47
|
+
use `--id NAME` to retain an existing node's registry overrides.
|
|
48
|
+
|
|
49
|
+
The selected revision defaults to checkout HEAD. `--revision FULL_SHA` pins a
|
|
50
|
+
reviewed commit already fetched into that checkout. Deployment uses a clean Git
|
|
51
|
+
worktree and preserves developer edits. For whole-fleet maintenance, use the manager command above; this legacy local route does not orchestrate other nodes. A failed step stops later steps and reports
|
|
52
|
+
partial progress; it never claims authentication or inference was verified.
|
|
53
|
+
|
|
54
|
+
Portable models live in `agents/registry.json`; T3 desired provider instances live
|
|
55
|
+
in `agents/t3.json`. Edit these tracked definitions and deploy a reviewed revision.
|
|
56
|
+
New sessions use the updated configuration. Running sessions are not restarted.
|
|
57
|
+
|
|
58
|
+
## T3 plan, apply, import and cleanup
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
devfleet t3-apply --dry-run --json
|
|
62
|
+
devfleet t3-apply
|
|
63
|
+
devfleet t3-status
|
|
64
|
+
devfleet t3-cleanup --dry-run
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Plans show create/update/delete/unchanged/conflict by instance ID, with no settings
|
|
68
|
+
values or credentials. `devfleet t3-apply --plan-hash HASH` binds apply to the exact
|
|
69
|
+
settings, ownership state, desired definitions and destination reviewed in a plan.
|
|
70
|
+
A stale plan fails. A second apply with identical inputs performs no settings write.
|
|
71
|
+
|
|
72
|
+
A provider instance becomes managed when created by personal, or explicitly imported:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
devfleet t3-apply --import personal_grok_proxy
|
|
76
|
+
devfleet t3-apply
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Import grants ownership of the entire named provider instance. It does not change
|
|
80
|
+
its settings immediately. Subsequent applies reconcile that instance to the tracked
|
|
81
|
+
definition, including removal of extra fields. Existing unowned instances cause a
|
|
82
|
+
conflict, even when their names match. Unrelated instances and settings are preserved.
|
|
83
|
+
|
|
84
|
+
Removing an instance from the desired definition removes it on the next apply.
|
|
85
|
+
`devfleet t3-cleanup` removes **all owned provider instances** while retaining
|
|
86
|
+
threads, projects, pairing, native provider instances, credentials and profile files.
|
|
87
|
+
It does not delete T3's data directory or secret store. Historical threads may need
|
|
88
|
+
a replacement provider selected after their managed instance is removed.
|
|
89
|
+
|
|
90
|
+
`--t3-home PATH` selects a T3 base directory (otherwise T3CODE_HOME or ~/.t3).
|
|
91
|
+
`--definition FILE` selects a version-1 desired definition. Supported interpolation
|
|
92
|
+
is `${workspace}`, `${agents}` and `${node}`. The current schema deliberately supports
|
|
93
|
+
the verified Codex proxy adapter fields; it rejects inline credential definitions.
|
|
94
|
+
T3 proxy execution requires macOS/Linux/WSL; native Windows execution is unverified.
|
|
95
|
+
|
|
96
|
+
## State and concurrency
|
|
97
|
+
|
|
98
|
+
T3 owns `userdata/settings.json`. Personal merges only its declared instances and
|
|
99
|
+
stores IDs in `userdata/personal-managed.json`, with mode 0600. Private settings and
|
|
100
|
+
state backups sit beside that file. They may contain existing secret references or
|
|
101
|
+
values and must never enter Git or reports. Symlink/malformed destinations fail.
|
|
102
|
+
|
|
103
|
+
Personal operations use an exclusive lock, atomic replacement, pre-write freshness
|
|
104
|
+
checks and post-write verification. T3's own theme CLI uses the same optimistic
|
|
105
|
+
external-file update pattern; T3 does not honor personal's lock. Avoid concurrent
|
|
106
|
+
Settings edits during apply: there is no cross-process atomic compare-and-swap with
|
|
107
|
+
T3. No strict transaction across application and ownership files is claimed. Ownership
|
|
108
|
+
intent is saved before settings so interrupted creates/removals can be retried.
|
|
109
|
+
Inspect interrupted operations before removing a stale `.lock` directory.
|
|
110
|
+
|
|
111
|
+
T3's installed server source at revision
|
|
112
|
+
`322f6544dfad0a3c8a0c8cbecf2c7f7874b14268` was inspected for provider-instance shape,
|
|
113
|
+
external settings watch/reload, and optimistic CLI writes. Future T3 schema changes
|
|
114
|
+
require adapter verification. A disk-level success is not a live inference test.
|
|
115
|
+
|
|
116
|
+
## Supported alternatives
|
|
117
|
+
|
|
118
|
+
`PROVIDER_PROTOCOL_INCOMPATIBLE` means the gateway answered that it has no
|
|
119
|
+
endpoint, method or media type for the protocol a route speaks (HTTP 404, 405,
|
|
120
|
+
415 or 501). The route as declared cannot work, so the check fails and the
|
|
121
|
+
sync exits nonzero; signing in again or retrying changes nothing. Nothing on
|
|
122
|
+
the machine is changed to work around it.
|
|
123
|
+
|
|
124
|
+
The protocol a tool speaks to the proxy is its `proxy` field in
|
|
125
|
+
`agents/registry.json` (`responses`, `messages`, `generateContent` or
|
|
126
|
+
`chat_completions`). The supported alternatives, in this order:
|
|
127
|
+
|
|
128
|
+
1. A model the proxy lists at `/v1/models` for the same protocol: change the
|
|
129
|
+
tool's model in `agents/registry.json`.
|
|
130
|
+
2. Another protocol the tool's own CLI speaks and the pinned proxy serves.
|
|
131
|
+
`chat_completions` is served for OpenAI-compatible clients such as
|
|
132
|
+
OpenCode and Grok.
|
|
133
|
+
3. The tool's direct profile, signed in natively on that machine, instead of
|
|
134
|
+
the shared proxy.
|
|
135
|
+
|
|
136
|
+
Each is a reviewed change to a tracked file, followed by `devfleet
|
|
137
|
+
fleet-sync`. A newer CLIProxyAPI is a reviewed change to
|
|
138
|
+
`cliproxy/image.lock.json`; a sync never upgrades it to get around a failure.
|
|
139
|
+
|
|
140
|
+
A model that is merely missing from the catalog is `PROVIDER_MODEL_UNAVAILABLE`
|
|
141
|
+
instead: a warning, because it is usually the provider account's (billing or
|
|
142
|
+
access), not the route's.
|
|
143
|
+
|
|
144
|
+
## Other local operations
|
|
145
|
+
|
|
146
|
+
All former workstation operations are available through `dev-fleet`:
|
|
147
|
+
|
|
148
|
+
```sh
|
|
149
|
+
dev-fleet tools check --json
|
|
150
|
+
bun src/agents/cli.ts agents verify --node NODE --tool codex --profile proxy --json
|
|
151
|
+
dev-fleet opencode sync
|
|
152
|
+
dev-fleet net check
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
`devfleet fleet-status` diagnoses the manager and registered remote nodes.
|
|
156
|
+
`devfleet fleet-discover` lists visible Tailscale computers. The local SSH roster
|
|
157
|
+
still requires real aliases and checkout paths; discovery never guesses these.
|
|
158
|
+
Use `personal commands --json` to discover the complete interface.
|
package/agents/t3.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"instances": {
|
|
4
|
+
"personal_gateway_models": {
|
|
5
|
+
"driver": "opencode",
|
|
6
|
+
"displayName": "OpenCode CLI Proxy",
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"config": {
|
|
9
|
+
"binaryPath": "${workspace}/agents/opencode-proxy.ts"
|
|
10
|
+
},
|
|
11
|
+
"environment": [
|
|
12
|
+
{
|
|
13
|
+
"name": "WS_AGENT_NODE",
|
|
14
|
+
"value": "${node}",
|
|
15
|
+
"sensitive": false
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"personal_grok_proxy": {
|
|
20
|
+
"driver": "grok",
|
|
21
|
+
"displayName": "Grok CLI Proxy",
|
|
22
|
+
"enabled": true,
|
|
23
|
+
"config": {
|
|
24
|
+
"binaryPath": "${workspace}/agents/grok-proxy.ts"
|
|
25
|
+
},
|
|
26
|
+
"environment": [
|
|
27
|
+
{
|
|
28
|
+
"name": "WS_AGENT_NODE",
|
|
29
|
+
"value": "${node}",
|
|
30
|
+
"sensitive": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "XAI_API_KEY",
|
|
34
|
+
"value": "fleet-cli-proxy",
|
|
35
|
+
"sensitive": false
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Manager power policy. Workers depend on the manager's singleton services
|
|
3
|
+
# (CLI proxy, Beszel hub), so the manager never sleeps on AC power. Sleep on
|
|
4
|
+
# battery is left to the human. The settings are the `pmset` object in
|
|
5
|
+
# policy.json; fleet-sync measures the same object as manager:power. Changing
|
|
6
|
+
# them needs an administrator: ansible-playbook -K manager.yml
|
|
7
|
+
- name: Keep the fleet manager awake on AC power
|
|
8
|
+
hosts: localhost
|
|
9
|
+
connection: local
|
|
10
|
+
become: true
|
|
11
|
+
gather_facts: false
|
|
12
|
+
vars_files:
|
|
13
|
+
- policy.json
|
|
14
|
+
tasks:
|
|
15
|
+
- name: Inspect effective power management settings
|
|
16
|
+
ansible.builtin.command:
|
|
17
|
+
argv: [/usr/bin/pmset, -g, custom]
|
|
18
|
+
changed_when: false
|
|
19
|
+
register: pmset_custom
|
|
20
|
+
- name: Apply the declared AC power settings
|
|
21
|
+
ansible.builtin.command:
|
|
22
|
+
argv: [/usr/bin/pmset, -c, '{{ item.key }}', '{{ item.value }}']
|
|
23
|
+
loop: '{{ pmset | dict2items }}'
|
|
24
|
+
loop_control:
|
|
25
|
+
label: '{{ item.key }}'
|
|
26
|
+
vars:
|
|
27
|
+
ac_section: "{{ pmset_custom.stdout.split('AC Power:') | last }}"
|
|
28
|
+
observed: "{{ ac_section | regex_findall('^\\s*' ~ item.key ~ '\\s+(\\S+)', multiline=True) | first | default('') }}"
|
|
29
|
+
when: observed != item.value
|
|
30
|
+
changed_when: true
|