@crvouga/personal 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -3
- package/cli.mjs +2174 -294
- package/commands.json +264 -0
- package/package.json +3 -3
- package/probe.mjs +561 -30
- package/releasing.md +6 -5
- package/schema.json +11 -1
package/README.md
CHANGED
|
@@ -1,4 +1,45 @@
|
|
|
1
|
-
# Personal
|
|
1
|
+
# Personal CLI
|
|
2
|
+
|
|
3
|
+
Use the installed `personal` executable for routine work. `npx @crvouga/personal`
|
|
4
|
+
is the same CLI when it is not installed.
|
|
5
|
+
|
|
6
|
+
```sh
|
|
7
|
+
personal fleet-node-sync
|
|
8
|
+
personal fleet-status
|
|
9
|
+
personal fleet-discover
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`fleet-node-sync` reconciles locked tools, installs the public launcher, removes
|
|
13
|
+
owned legacy `ws` launchers, upserts the Codex proxy profile, and reconciles declared
|
|
14
|
+
T3 provider instances. It applies by invocation; `--dry-run` previews. Run in the
|
|
15
|
+
personal checkout or use `--workspace PATH`. Node ID defaults to hostname; `--id`
|
|
16
|
+
overrides it. Revision defaults to checkout HEAD; `--revision FULL_SHA` pins it.
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
personal t3-plan --json
|
|
20
|
+
personal t3-apply
|
|
21
|
+
personal t3-status
|
|
22
|
+
personal t3-cleanup --dry-run
|
|
23
|
+
personal t3-import --instance EXISTING_ID
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Tracked `packages/workstation/agents/t3.json` is desired state. Apply creates and
|
|
27
|
+
updates declared instances and removes previously owned instances absent from the
|
|
28
|
+
definition. Cleanup removes only owned instances. Import is explicit ownership of
|
|
29
|
+
an existing instance. `--plan-hash HASH` rejects stale plans. Secrets and unrelated
|
|
30
|
+
settings are omitted from reports and preserved in the configuration.
|
|
31
|
+
|
|
32
|
+
All former workstation commands now use `personal workstation …`; there is no `ws`
|
|
33
|
+
package executable. The source installer migrates recognized legacy launchers.
|
|
34
|
+
Native Windows should use the npm executable; proxy adapter execution requires
|
|
35
|
+
macOS/Linux/WSL. Pairing and provider authentication remain per-machine prerequisites.
|
|
36
|
+
|
|
37
|
+
Read the [node/T3 reconciliation runbook](../workstation/agents/setup.md) for state,
|
|
38
|
+
concurrency, recovery, rollout and precise ownership boundaries. The public package
|
|
39
|
+
needs a local checkout and its shared toolchain for workstation operations; the T3
|
|
40
|
+
reconciler itself runs on Node without Bun or access to live credentials.
|
|
41
|
+
|
|
42
|
+
## Detailed command reference
|
|
2
43
|
|
|
3
44
|
Public npm distribution: **`@crvouga/personal`**, executable **`personal`**.
|
|
4
45
|
The source workspace `@pkgs/personal-cli` stays private; its build bundles the
|
|
@@ -10,7 +51,7 @@ Requires Node **22.13+ on the 22.x line, or 23.5+** with npm.
|
|
|
10
51
|
npx --yes @crvouga/personal
|
|
11
52
|
```
|
|
12
53
|
|
|
13
|
-
The terminal application has a searchable command palette
|
|
54
|
+
The terminal application has a flat searchable command palette sorted A–Z with group prefixes,
|
|
14
55
|
descriptions, target selection, progress indicators, result summaries, searchable
|
|
15
56
|
node/status/check drill-downs, remedies, retry/back navigation, and an add-node
|
|
16
57
|
wizard. It shows the equivalent noninteractive command before running anything.
|
|
@@ -40,9 +81,50 @@ global flags; `agent --json` documents the output/safety contract; `fleet schema
|
|
|
40
81
|
exposes the roster schema. JSON error messages never contain raw subprocess
|
|
41
82
|
output, environment variables, authentication responses or exception messages.
|
|
42
83
|
|
|
84
|
+
## Check every Tailscale computer
|
|
85
|
+
|
|
86
|
+
```sh
|
|
87
|
+
npx --yes @crvouga/personal@latest fleet discover --json
|
|
88
|
+
npx --yes @crvouga/personal@latest fleet health --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
`discover` reads the signed-in local Tailscale daemon, includes offline computers
|
|
92
|
+
and excludes iOS, Android and tvOS devices. `health` checks every visible computer,
|
|
93
|
+
including this controller. It pings online peers, checks registered computers over
|
|
94
|
+
fresh verified SSH sessions, compares checkout/toolchain input hashes, checks each
|
|
95
|
+
pinned tool version and Docker runtime, and runs the existing read-only `personal workstation doctor`
|
|
96
|
+
for managed links, PATH and workstation configuration.
|
|
97
|
+
|
|
98
|
+
Register remote computers with their existing SSH aliases and actual checkout paths.
|
|
99
|
+
DNS names, Tailscale addresses and resolved SSH aliases are matched exactly. Missing,
|
|
100
|
+
ambiguous, offline or no-longer-visible registrations produce explicit failures;
|
|
101
|
+
the command never guesses a username/path or silently reduces the checked fleet.
|
|
102
|
+
`fleet nodes` before registration shows an empty list and setup guidance.
|
|
103
|
+
|
|
104
|
+
Authentication checks cover Codex, Claude Code, GitHub, Vault, T3, Railway, Vercel,
|
|
105
|
+
Cloudflare, AWS's active profile and npm. Their status/identity commands run on each
|
|
106
|
+
computer as its SSH user; browser login on another computer does not authenticate
|
|
107
|
+
that session. Credential values and account responses are withheld. Codex/Claude
|
|
108
|
+
status reports do not prove quotas, model access or a live billable request.
|
|
109
|
+
Gemini, Copilot and OpenCode provider access are explicitly **unverified** until a
|
|
110
|
+
supported noninteractive adapter can verify them; saved keys alone never count.
|
|
111
|
+
|
|
112
|
+
Health uses strict coverage: warnings and skipped checks return exit **1**, as do
|
|
113
|
+
failures. It cannot certify devices hidden by Tailscale ACLs, other accounts/tailnets,
|
|
114
|
+
all-pairs connectivity, every application, or operator-only T3/VS Code connection
|
|
115
|
+
flows. Those limits remain visible in the report. Per-node health probes default
|
|
116
|
+
to five minutes, overridable with `--timeout`; concurrency is bounded to four.
|
|
117
|
+
Commands only diagnose; they never log in, install tools, rewrite configuration,
|
|
118
|
+
or repair machines automatically. Use `--workspace` to select the reference checkout.
|
|
119
|
+
|
|
120
|
+
The palette lists all commands directly, for example **Fleet: Check all Tailscale
|
|
121
|
+
computers**, **Fleet: Discover Tailscale computers** and **Session: Workspace / config**.
|
|
122
|
+
Node lists and the first checks needing attention display immediately; detailed
|
|
123
|
+
reports remain available without navigating category submenus.
|
|
124
|
+
|
|
43
125
|
## Register actual computers
|
|
44
126
|
|
|
45
|
-
Use the interactive **Fleet
|
|
127
|
+
Use the interactive **Fleet: Register a developer computer** action, or preview first:
|
|
46
128
|
|
|
47
129
|
```sh
|
|
48
130
|
personal fleet add --id dev-linux --ssh dev-linux --path /home/dev/workspace --json
|
|
@@ -103,3 +185,54 @@ bun run personal:build
|
|
|
103
185
|
|
|
104
186
|
See [releasing.md](releasing.md) for automatic CI releases, credential sources,
|
|
105
187
|
first-publish bootstrap, packed-consumer verification and recovery.
|
|
188
|
+
|
|
189
|
+
## Preview and apply repairs
|
|
190
|
+
|
|
191
|
+
```sh
|
|
192
|
+
personal fleet repairs --json
|
|
193
|
+
personal fleet repair --json # all visible Tailscale computers
|
|
194
|
+
personal fleet repair --local --json # this computer only
|
|
195
|
+
personal fleet repair --node dev-linux --json # selected registered computer
|
|
196
|
+
personal fleet repair --local --repair workspace --json
|
|
197
|
+
# Copy planHash from the reviewed preview; it rejects changed plans:
|
|
198
|
+
personal fleet repair --local --repair workspace --plan-hash REVIEWED_SHA256 --apply --yes --json
|
|
199
|
+
personal fleet repair --local --repair providers --apply --yes --json
|
|
200
|
+
personal fleet repair --local --script # emit a POSIX script; never execute it here
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
The flat palette includes **Fleet: Explore repairs and login commands** and
|
|
204
|
+
**Fleet: Repair tools and configuration**. Applying from the palette carries the
|
|
205
|
+
reviewed plan hash. Plan previews exit 0 even when `healthOk` is false: a valid
|
|
206
|
+
plan is not a healthy computer. `--repair` selects from `workspace`, `workstation`
|
|
207
|
+
and `providers`; omitted selection includes the eligible owner actions identified
|
|
208
|
+
by the failed checks. Explicit selection also supports rerunning an owner action.
|
|
209
|
+
|
|
210
|
+
`workspace` uses existing mise/shared setup and frozen dependencies. `workstation`
|
|
211
|
+
uses `personal:install --yes` and can update launcher/PATH, managed links, notifications
|
|
212
|
+
and provider configuration. `providers` uses the existing strict Vault-backed
|
|
213
|
+
workstation provider sync. Each computer uses its own Vault authorization; the
|
|
214
|
+
controller never transfers credential files, tokens, SSH agents or keychains.
|
|
215
|
+
Native login recipes are operator steps and are commented in generated scripts.
|
|
216
|
+
Use an intended Vault project/config for runtime access, for example
|
|
217
|
+
`vault run --config dev -- personal fleet health --json`, only when those secrets
|
|
218
|
+
are needed by that process.
|
|
219
|
+
|
|
220
|
+
Only registered, successfully probed remote machines are eligible for automatic
|
|
221
|
+
repairs. SSH host trust, unavailable computers, conflicting Git changes, native
|
|
222
|
+
account approvals, service permissions and manual end-to-end tests stay explicit
|
|
223
|
+
operator work. Unknown future checks also receive an operator step rather than
|
|
224
|
+
being omitted. A successful repair command is followed by fresh checks; remaining
|
|
225
|
+
failures, warnings or skips return exit 1. Reports separate `executionOk`,
|
|
226
|
+
`healthOk`, completed owner commands, and remaining steps. Actions run serially;
|
|
227
|
+
a failure stops later actions on that computer. Partial changes are possible.
|
|
228
|
+
|
|
229
|
+
Generated scripts require a POSIX shell and are for review in the operator's own
|
|
230
|
+
terminal. They use existing checkout tooling; they do not require a globally
|
|
231
|
+
installed `personal` on remote machines. They are point-in-time scripts without
|
|
232
|
+
CLI plan-hash enforcement. Prefer the guarded CLI apply path and obtain a fresh
|
|
233
|
+
whole-tailnet health report afterward.
|
|
234
|
+
|
|
235
|
+
See [fleet access and repair research](../fleet/docs/access-and-repair-research.md)
|
|
236
|
+
for the comparison of mise, OpenBao, Bitwarden, 1Password, Tailscale SSH, chezmoi,
|
|
237
|
+
Teleport, Ansible and Syncthing, plus existing password-manager onboarding and
|
|
238
|
+
the distinction between shared service secrets and per-machine logins.
|