@candledottv/cli 0.6.1 → 0.7.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.
Files changed (3) hide show
  1. package/README.md +51 -4
  2. package/dist/index.js +14935 -199
  3. package/package.json +4 -2
package/README.md CHANGED
@@ -7,11 +7,23 @@ health from the terminal. Zero runtime dependencies; the whole thing is one self
7
7
  ## Quick start
8
8
 
9
9
  ```
10
- npx @candledottv/cli auth login
10
+ Install the Candle CLI (macOS or Linux):
11
+
12
+ curl -fsSL https://candle.tv/install.sh | bash
13
+
14
+ or with Homebrew:
15
+
16
+ brew install candledottv/tap/candle
17
+
18
+ Then: candle setup
11
19
  ```
12
20
 
13
- This runs `auth login`, which opens your browser to approve this device. Install it permanently
14
- with `npm install -g @candledottv/cli` and the command is just `candle`.
21
+ `candle setup` authorizes this device from your browser, shows the agent wallets as funding
22
+ destinations, prints the skill and MCP install lines, and runs a full health check. `candle auth
23
+ login` on its own does just the authorization step.
24
+
25
+ The npm package `@candledottv/cli` stays published for CI, programmatic use, and Windows until
26
+ `install.ps1` ships; `npx -y @candledottv/cli@latest <command>` runs it once without installing.
15
27
 
16
28
  ### No-npm fallback
17
29
 
@@ -50,7 +62,7 @@ node packages/cli/dist/index.js auth login
50
62
  | `candle profile use <name>` | Makes a profile the active one. |
51
63
  | `candle profile rename <old> <new>` | Renames a profile. |
52
64
  | `candle profile remove <name> --yes` | Deletes a profile and its stored credentials. |
53
- | `candle mcp [--tools <a,b,c>] [--read-only] [--print-config]` | Runs the Candle MCP server (`npx @candledottv/mcp`) with this CLI's stored API key and API URL in its environment, so an MCP client config is just `{"mcpServers": {"candle": {"command": "/Users/you/.local/bin/candle", "args": ["mcp"]}}}` -- the absolute path, because GUI hosts launch servers with the app's environment and never see your PATH. Run `--print-config` to print that block filled in for this install. `--read-only` starts it with no key and only the four keyless read tools; `--tools` pins an explicit allowlist. |
65
+ | `candle mcp [--tools <a,b,c>] [--read-only] [--print-config]` | Runs the Candle MCP server (built into this binary) with this CLI's stored API key and API URL in its environment, so an MCP client config is just `{"mcpServers": {"candle": {"command": "/Users/you/.local/bin/candle", "args": ["mcp"]}}}` -- the absolute path, because GUI hosts launch servers with the app's environment and never see your PATH. Run `--print-config` to print that block filled in for this install. `--read-only` starts it with no key and only the four keyless read tools; `--tools` pins an explicit allowlist. The server is bundled into the binary, so the host needs nothing else installed. |
54
66
  | `candle doctor` | Runs a full health check (runtime, backend, credentials, API reachability, credential validity, wallet delegation) as a PASS/FAIL/SKIP table. Exits nonzero on any FAIL. |
55
67
  | `candle verify <file> --bundle <path> [--identity <uri>] [--issuer <url>]` | Verifies a release asset's Sigstore bundle against the trusted root compiled into this binary. No network, no credentials, and nothing else installed: the bundle carries the certificate and the transparency-log entry. `--identity` defaults to the release identity for the version in a `latest.json` sitting beside the bundle; `--issuer` defaults to GitHub Actions'. Prints `verified: <identity>` and exits 0, or the reason on stderr and exits 1. |
56
68
  | `candle update [--check] [--to <tag>]` | Replaces this binary with the latest signed release. The download is renamed over the running binary only after its SHA-256 matches both SHA256SUMS and `latest.json` AND its Sigstore bundle verifies in process against that exact version's release workflow. `--check` reports what is available and installs nothing; `--to <tag>` pins a release (an older one installs, with a warning). A Homebrew or npm install is left alone, with the command that owns it printed instead. |
@@ -66,6 +78,40 @@ Every command accepts these global options:
66
78
  | `--help`, `-h` | Prints usage. |
67
79
  | `--version`, `-v` | Prints the CLI version. |
68
80
 
81
+ ## Verify a release
82
+
83
+ Every release on https://github.com/candledottv/agentic/releases is built and signed by that
84
+ repository's `release.yaml` workflow, and `install.sh` and `candle update` already check this for
85
+ you. To check a download by hand, three commands, in increasing strength:
86
+
87
+ ```
88
+ curl -fsSLO https://github.com/candledottv/agentic/releases/download/cli-v0.6.1/SHA256SUMS
89
+ curl -fsSLO https://github.com/candledottv/agentic/releases/download/cli-v0.6.1/candle-darwin-arm64
90
+ grep candle-darwin-arm64 SHA256SUMS | shasum -a 256 -c
91
+ ```
92
+
93
+ ```
94
+ gh attestation verify candle-darwin-arm64 --repo candledottv/agentic \
95
+ --signer-workflow candledottv/agentic/.github/workflows/release.yaml
96
+ ```
97
+
98
+ ```
99
+ curl -fsSLO https://github.com/candledottv/agentic/releases/download/cli-v0.6.1/candle-darwin-arm64.sigstore.json
100
+ cosign verify-blob --new-bundle-format --bundle candle-darwin-arm64.sigstore.json \
101
+ --certificate-identity-regexp '^https://github.com/candledottv/agentic/\.github/workflows/release\.yaml@refs/tags/cli-v' \
102
+ --certificate-oidc-issuer https://token.actions.githubusercontent.com \
103
+ candle-darwin-arm64
104
+ ```
105
+
106
+ `--new-bundle-format` (cosign 2.2 or newer) says "expect a Sigstore bundle", which is what releases
107
+ from 0.6.1 onward are signed as; without it cosign also accepts an older bundle format of its own,
108
+ which `candle verify` cannot read.
109
+
110
+ No cosign or gh installed? `candle verify <file> --bundle <path>` (this CLI's own command, see the
111
+ table above) runs the same check against the trusted root compiled into the binary, no network
112
+ call required. Full walkthrough, including the installer script's own signature and the
113
+ transparency log: [Verify a Candle release](https://docs.candle.tv/developers/verify-a-candle-release).
114
+
69
115
  ## The `--json` contract
70
116
 
71
117
  For agents and scripts, `--json` guarantees: **stdout carries exactly one JSON value** -- the
@@ -172,6 +218,7 @@ the profile they were migrated into.
172
218
  | `CANDLE_PROFILE` | Selects the profile when `--profile` is not given. |
173
219
  | `CANDLE_KEYRING_PASSPHRASE` | The passphrase for the encrypted-file backend. Without it, a non-interactive process (no TTY) fails with a clear error rather than falling back to writing plaintext; an interactive session is prompted instead. |
174
220
  | `CANDLE_CONFIG_DIR` | Overrides where the CLI keeps its config and encrypted-file credentials (default `~/.config/candle`). Mainly a testing seam. |
221
+ | `CANDLE_ALLOW_INSECURE_HTTP` | Allows an `http://` API URL pointing at a non-loopback host. The CLI attaches a device token or API key to nearly every request, so it refuses cleartext by default. Loopback (`localhost`, `127.0.0.0/8`, `::1`) is always allowed and needs no opt-in; set this only for a trusted local endpoint that is not loopback, such as a devcontainer reaching its host. |
175
222
 
176
223
  `CANDLE_DEVICE_TOKEN` and `CANDLE_API_KEY` together mean CI needs no storage backend at all: set
177
224
  both and every command works without ever touching a keychain or the encrypted file.