@llamaventures/cli 1.17.1 → 1.17.3

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/AGENT_BRIEFING.md CHANGED
@@ -8,6 +8,7 @@ You are not just an AI assistant. You're an **extension of a team member** — w
8
8
 
9
9
  - **Your access scope is whatever your token allows.** Run `llama auth status` first; the response shows your role, identity, and active token source.
10
10
  - **All your writes are logged.** `auth_events` and `deal_events` capture everything. Pipeline data can always be traced back to who/what changed it.
11
+ - **Public surfaces stay clean.** Anything that leaves the workspace — public repos, npm packages, external artifacts, shared links — must not leak internal people, deals, private URLs, or workflow nuance.
11
12
  - **Be direct, terse, action-oriented.** Save your words for the genuine judgment calls.
12
13
  - **Critical when thinking, helpful when executing.** Push back on weak logic, then ship the work cleanly.
13
14
 
package/CHANGELOG.md CHANGED
@@ -6,6 +6,33 @@ this project adheres to [Semantic Versioning](https://semver.org).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.17.3] - 2026-07-01
10
+
11
+ ### Changed
12
+ - README (en + zh) condensed to the essentials — install, auth, AI-system
13
+ integration, CLI/MCP quick reference, external pitch; removed the
14
+ architecture diagram and marketing filler.
15
+ - Security reporting now goes through GitHub private vulnerability reporting
16
+ instead of a personal email (README, SECURITY.md, CONTRIBUTING.md).
17
+ - npm tarball trimmed to runtime files (bin/, lib/, agent briefing,
18
+ changelog, READMEs, license) — repo docs and CI test assets are no longer
19
+ published. 18 → 14 files.
20
+
21
+ ## [1.17.2] - 2026-07-01
22
+
23
+ ### Changed
24
+ - README (en + zh): new "Integrate your AI system" section — the recommended
25
+ path for wiring external agents/LLM apps through the CLI/MCP layer instead
26
+ of the raw HTTP API; corrected tool count (58) and command count (100+);
27
+ de-duplicated the CLI tour examples; removed an obsolete migration note;
28
+ the zh auth section now documents `llama auth login` (OAuth) as the
29
+ recommended method, matching en.
30
+ - MCP tool descriptions now defer server-configured option lists to runtime
31
+ discovery via `agent_bootstrap` instead of hardcoding them in tool text.
32
+ - Agent briefing: added a public-surfaces hygiene rule from the server-owned
33
+ contract.
34
+ - CI/publish pipeline: additional automated release-gate checks.
35
+
9
36
  ## [1.17.1] - 2026-06-29
10
37
 
11
38
  ### Changed
package/README.md CHANGED
@@ -6,17 +6,15 @@
6
6
 
7
7
  <p align="center">
8
8
  <strong>The Llama Ventures CLI &amp; MCP server.</strong><br/>
9
- One <code>npm install</code>, one auth chain, two interfaces — humans and AI agents
10
- talk to <a href="https://command.llamaventures.vc">command.llamaventures.vc</a>
11
- through the same client.
9
+ One package, two binaries: <code>llama</code> the CLI for humans and scripts
10
+ and <code>llama-mcp</code> — a stdio MCP server with 58 typed tools for any
11
+ MCP-native agent. Both share the same auth chain, HTTP client, and error
12
+ format, and talk to <a href="https://command.llamaventures.vc">command.llamaventures.vc</a>.
12
13
  </p>
13
14
 
14
15
  <p align="center">
15
16
  <a href="https://www.npmjs.com/package/@llamaventures/cli"><img alt="npm" src="https://img.shields.io/npm/v/@llamaventures/cli?label=npm&color=cb3837&logo=npm&logoColor=white"></a>
16
17
  <a href="https://github.com/Llama-Ventures/llama-cli/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/Llama-Ventures/llama-cli/actions/workflows/ci.yml/badge.svg"></a>
17
- <a href="https://docs.npmjs.com/trusted-publishers"><img alt="Provenance" src="https://img.shields.io/badge/provenance-signed-2e8b57?logo=npm"></a>
18
- <a href="https://nodejs.org/"><img alt="Node" src="https://img.shields.io/node/v/@llamaventures/cli?color=339933&logo=nodedotjs&logoColor=white"></a>
19
- <a href="https://modelcontextprotocol.io"><img alt="MCP 2024-11-05" src="https://img.shields.io/badge/MCP-2024--11--05-7d3aed"></a>
20
18
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
21
19
  </p>
22
20
 
@@ -27,285 +25,110 @@
27
25
  <p align="center">
28
26
  <a href="#install">Install</a> ·
29
27
  <a href="#authenticate">Authenticate</a> ·
30
- <a href="#cli-tour">CLI</a> ·
28
+ <a href="#integrate-your-ai-system">Integrate your AI</a> ·
29
+ <a href="#cli">CLI</a> ·
31
30
  <a href="#mcp-server">MCP</a> ·
32
- <a href="#external-pitch-no-llama-account-required">External pitch</a> ·
33
- <a href="AGENT_BRIEFING.md">Agent briefing</a> ·
34
- <a href="SECURITY.md">Security</a> ·
31
+ <a href="#external-pitch--no-llama-account-required">External pitch</a> ·
35
32
  <a href="CHANGELOG.md">Changelog</a>
36
33
  </p>
37
34
 
38
- > **Public source for low-friction install. Not an open-source product.**
39
- > Most operations require a Llama Ventures team account
40
- > ([gavin@llamaventures.vc](mailto:gavin@llamaventures.vc) mints tokens). The one
41
- > exception is the **public `pitch`** family — see
42
- > [External pitch](#external-pitch-no-llama-account-required).
43
-
44
- ---
45
-
46
- ## What's in the box
47
-
48
- ```
49
- @llamaventures/cli
50
- ├── bin/llama interactive CLI for humans + bash
51
- └── bin/llama-mcp stdio MCP server, 56 typed tools — for any MCP-native agent
52
- ```
53
-
54
- Both binaries share `lib/client.mjs` — the **same** auth chain, **same** HTTP
55
- client, **same** error format. CLI and MCP can never drift on transport or
56
- identity. Zero runtime dependencies for the CLI itself; the bundled MCP
57
- server depends only on `@modelcontextprotocol/sdk` (Anthropic-maintained,
58
- pinned exact).
59
-
60
- ```mermaid
61
- flowchart LR
62
- Human([🧑‍💻 Human]) --> CLI[bin/llama<br/>argv parser]
63
- Agent([🤖 MCP-native agent]) --> MCP[bin/llama-mcp<br/>stdio JSON-RPC]
64
- CLI --> Client[lib/client.mjs<br/>auth · fetch · errors]
65
- MCP --> Client
66
- Client -- HTTPS --> API[(command.llamaventures.vc)]
67
- classDef src fill:#dcfce7,stroke:#166534,color:#14532d
68
- classDef edge fill:#dbeafe,stroke:#1e40af,color:#1e3a8a
69
- class Human,Agent edge
70
- class CLI,MCP,Client src
71
- ```
72
-
73
- ---
35
+ > **Public source for low-friction install not an open-source product.**
36
+ > Most operations require a Llama Ventures team account (tokens are minted by
37
+ > the team admin at `/settings/tokens`). The one exception is the public
38
+ > [`pitch`](#external-pitch--no-llama-account-required) family.
74
39
 
75
40
  ## Install
76
41
 
77
42
  ```bash
78
- npm i -g @llamaventures/cli
79
- ```
80
-
81
- Requires **Node 18+** (uses native `fetch` and ESM). CI runs the matrix on 18 / 20 / 22.
82
-
83
- Verify:
84
-
85
- ```bash
43
+ npm i -g @llamaventures/cli # Node 18+; also puts `llama-mcp` on your PATH
86
44
  llama --version
87
- llama auth status # round-trips against /api/me
45
+ llama auth status # round-trips against /api/me
88
46
  ```
89
47
 
90
- The same install puts `llama-mcp` on your `PATH` for the MCP server — no second package.
91
-
92
- > **Upgrading from `npm link`?** The CLI used to live in the `llama-os/cli/`
93
- > directory and was distributed via `npm link`. As of CLI v1.x it ships as
94
- > `@llamaventures/cli`. Run `npm i -g @llamaventures/cli@latest`; the legacy
95
- > directory keeps working during the soak window but is no longer the source
96
- > of truth. See [`llama-os/cli/DEPRECATED.md`](https://github.com/SoujiOkita98/llama-os/blob/main/cli/DEPRECATED.md).
97
-
98
- ---
99
-
100
48
  ## Authenticate
101
49
 
102
- The client tries credentials **in this order**, on every call:
103
-
104
- | # | Source | Header sent | Best for |
105
- |---|--------|-------------|----------|
106
- | 1 | `llama auth login` (OAuth 2.1, OS Keychain) | `Authorization: Bearer …` | **Recommended for everyone.** One-shot browser login; tokens auto-refresh and survive reboots. |
107
- | 2 | `gcloud auth print-identity-token` | `Authorization: Bearer …` | Workstations with gcloud already wired (zero config) |
108
- | 3 | `$LLAMA_TOKEN` env var | `X-Llama-Token` | CI runners, sandboxed cloud agents |
109
- | 4 | `~/.llama/token` (mode `0600`) | `X-Llama-Token` | Persistent local install (legacy PATs) |
110
- | 5 | `~/.llama-command/config.json` | `X-Llama-Token` | CLI v0.1 — auto-migrates to `~/.llama/token` |
50
+ Credentials are tried in this order, on every call:
111
51
 
112
- If both Bearer and X-Llama-Token are present, both are sent — the server tries
113
- Bearer first and falls through to X-Llama-Token on verification failure.
114
- Inspect the resolved identity any time with `llama auth status`.
115
-
116
- ### Browser sign-in recommended
52
+ | # | Source | Best for |
53
+ |---|--------|----------|
54
+ | 1 | `llama auth login` (OAuth, OS keychain, auto-refresh) | **Recommended for everyone** |
55
+ | 2 | `gcloud auth print-identity-token` | Machines already wired with gcloud |
56
+ | 3 | `$LLAMA_TOKEN` env var | CI, sandboxed cloud agents |
57
+ | 4 | `~/.llama/token` (mode `0600`) | Long-lived PATs |
58
+ | 5 | `~/.llama-command/config.json` | v0.1 legacy — auto-migrates |
117
59
 
118
60
  ```bash
119
- llama auth login # opens browser → Google sign-in consent done
120
- llama auth status # activeMethod=oauth, scope, identity
121
- llama deal search acme-ai # ready
61
+ llama auth login # browser sign-in; tokens auto-refresh, survive reboots
62
+ llama auth logout # revokes server-side, clears local storage
63
+ llama token set llc_… # PAT from /settings/tokens — validated before it lands on disk
64
+ llama auth status # shows the resolved identity + active method
122
65
  ```
123
66
 
124
- `llama auth login` runs an OAuth 2.1 PKCE + RFC 8252 loopback flow against
125
- `https://command.llamaventures.vc`, exchanges the code for an access + refresh
126
- token pair, and stores them in the OS Keychain (macOS Keychain / Windows
127
- Credential Manager / Linux Secret Service via [`@napi-rs/keyring`](https://www.npmjs.com/package/@napi-rs/keyring)).
128
- Linux containers without libsecret use a 0600-mode file at `~/.llama/oauth.json`
129
- — same posture `gcloud` / `gh` / `aws` ship with on Linux servers. Refresh
130
- tokens rotate transparently when the access token nears expiry; a cross-process
131
- file lock prevents two shells from burning each other's refresh during
132
- concurrent calls.
133
-
134
- `llama auth logout` revokes server-side via RFC 7009 and clears local storage.
135
-
136
- ### gcloud — for machines already wired with `gcloud auth login`
137
-
138
- ```bash
139
- gcloud auth login # one-time; pick your @llamaventures.vc account
140
- llama auth status # → role + email
141
- llama deal search acme-ai # ready
142
- ```
67
+ > **No account?** Ask your Llama Ventures contact any email address can be
68
+ > granted a token.
143
69
 
144
- ### Long-lived PAT for CI / unattended environments
70
+ ## Integrate your AI system
145
71
 
146
- 1. Sign in to https://command.llamaventures.vc.
147
- 2. Open `/settings/tokens` **Mint Token**.
148
- 3. Save the `llc_…` value:
72
+ This package is the **supported integration surface** for Llama Command. Wire
73
+ in-house agents and LLM apps through here — **not the raw HTTP API**: the
74
+ CLI/MCP layer owns the auth chain, the stable `Error[…]` contract, and
75
+ forward-compatibility ([SemVer](#stability)); raw API routes carry no such
76
+ promise.
149
77
 
150
- ```bash
151
- llama token set llc_paste_token_here
152
- # → writes ~/.llama/token (mode 0600)
153
- # → round-trips /api/me before saving bad token never lands on disk
154
- ```
78
+ 1. **Credentials** — `llama auth login`, or a PAT via `llama token set` /
79
+ `$LLAMA_TOKEN` for headless systems.
80
+ 2. **Install** `npm i -g @llamaventures/cli`.
81
+ 3. **Wire it in**MCP-native agents point at `llama-mcp`
82
+ ([per-client config](#mcp-server)); anything else shells out to `llama …`.
83
+ 4. **Onboard the agent** — run `llama agent-onboard` (or the MCP
84
+ `agent_briefing` prompt) at session start. It returns the server-owned
85
+ Agent Runtime Contract, always in sync with the live server.
86
+ 5. **Verify** — `llama auth status`, then `llama deal search "<anything>"`.
155
87
 
156
- Or, in CI / one-shot environments:
88
+ ## CLI
157
89
 
158
- ```bash
159
- export LLAMA_TOKEN=llc_paste_token_here
160
- ```
161
-
162
- > **Don't have an account?** Email
163
- > [gavin@llamaventures.vc](mailto:gavin@llamaventures.vc). Any email — including
164
- > non-`@llamaventures.vc` — can be granted a token; the system admin
165
- > mints it via `/settings/tokens`. Token first-use auto-creates the user row.
166
-
167
- ---
168
-
169
- ## CLI tour
170
-
171
- The CLI is the canonical interface. The HTTP API beneath it is stable, but the
172
- CLI handles auth, error formatting, and forward-compatibility across server
173
- schema changes — **prefer the CLI even from inside scripts.**
90
+ The CLI is the canonical interface — it handles auth, error formatting, and
91
+ schema forward-compatibility. Prefer it even from scripts.
174
92
 
175
93
  ```bash
176
- # Auth + tokens
177
- llama auth status
178
- llama token set <llc_...>
179
- llama token show
180
-
181
- # Pipeline — read
182
- llama deal search "acme ai"
183
- llama deal list --owner alex --status Interested
184
- llama deal list --owner alex --status Outreached
185
- llama deal list --source-direction Outbound --status Outreached
186
- llama deal list --owner alex --status Diligence
94
+ llama deal search "acme ai" # find deals (deal list takes the same filters)
187
95
  llama deal show <dealId>
188
-
189
- # Pipeline write
190
- llama deal create "Acme AI" --description "..." --source Gavin --source-direction Outbound --status Interested
191
- llama deal create "Acme AI" --description "..." --source Gavin --source-direction Outbound --status Outreached
192
- llama deal create "Acme AI" --description "..." --source Gavin --source-direction Inbound --status Sourced
96
+ llama deal feed <dealId> # every contribution, newest first
97
+ llama deal create "Acme AI" --source alex --source-direction Outbound --status Interested
193
98
  llama deal update <dealId> status Diligence
194
- llama deal enrich <dealId> --dry-run
195
- llama deal enrich <dealId> --apply --executor server_agent
196
- llama deal enrich <dealId> --executor external_agent --prompt
197
- llama deal agent run <dealId> --message "collect founder evidence and update typed facts"
198
- llama deal delete <dealId> # soft (audit-logged)
199
- llama deal restore <dealId>
200
-
201
- # Status semantics
202
- # Interested = record/track before outreach, intro, response, deck submission, or meeting.
203
- # Outreached = contact/logged, but no response or effective relationship yet.
204
- # Sourced = response, intro, meeting, or another real relationship signal exists.
205
- # sourceDirection is separate:
206
- # Inbound = came into the firm.
207
- # Outbound = we found/listed/reached out first.
208
-
209
- # Deal Brief — ordered, typed blocks (text · link · embed · callout)
210
- llama brief blocks <dealId>
211
- llama brief add-text <dealId> --heading "..." --body "..."
212
- llama brief add-link <dealId> --url "..." --label "..."
213
- llama brief add-callout <dealId> --tone insight --heading "..." --body "..."
214
- llama brief edit <dealId> <blockId> [--heading ...] [--body ...]
215
- llama brief history <dealId> <blockId>
216
-
217
- # Ownership + approvals
218
- llama claim <dealId>
219
- llama nominate <dealId> --user <userId>
220
- llama approvals list
221
- llama approvals decide <approvalId> approved --note "..."
222
-
223
- # Timeline + posts
224
- llama timeline <dealId>
225
- llama post <dealId> "message body" [--link url]
226
-
227
- # Agent runtime — live Command + private Llama OS skill gateway
228
- llama agent bootstrap
229
- llama skills search "wiki delete tombstone"
230
- llama skills show llama-command
231
- llama explain https://command.llamaventures.vc/wiki/some-page
232
- llama eval bad --last --reason "missed the llamaos weekly note"
233
- llama eval add "last week llama dev weekly" --expect wiki:llamaos-weekly-2026-06-17
234
-
235
- # Wiki
99
+ llama post <dealId> "note body"
100
+ llama brief add-text <dealId> --heading "..." --body "..."
236
101
  llama wiki search "<query>"
237
- llama wiki read <slug> [--lang en|zh]
238
- # Markdown entry:
239
- llama wiki save <slug> --title "..." --content "..." --sources "url1;url2"
240
- # HTML entry — standalone page at /wiki/<slug> (full-viewport sandboxed iframe):
241
- llama wiki save <slug> --title "..." --file page.html --sources "..." [--content-type html]
242
- # Delete / restore (soft, reversible):
243
- llama wiki delete <slug> [--lang en|zh]
244
- llama wiki restore <slug> [--lang en|zh]
245
-
246
- # Mentions inbox
102
+ llama wiki save <slug> --title "..." --content "..."
247
103
  llama mentions
248
- llama mentions resolve <mentionId>
104
+ llama agent-onboard # server-owned agent workflow contract
249
105
  ```
250
106
 
251
- Run `llama --help` for the full surface (50+ commands across deals, briefs,
252
- ownership, timeline, facts, wiki, mentions, skill corrections, and admin event
253
- feeds). Soft-delete is the default everywhere every removal is reversible
254
- and audit-logged via `deal_events`.
107
+ Status vocabulary `Interested`: tracked before any contact ·
108
+ `Outreached`: contacted, no response yet · `Sourced`: real relationship
109
+ signal exists. `sourceDirection` is separate: `Inbound` came to the firm,
110
+ `Outbound` we reached out first.
255
111
 
256
- ### Error codes for agents
112
+ Run `llama --help` for the group index, `llama help all` for the full
113
+ reference (100+ commands). Deletes are soft and audit-logged everywhere.
257
114
 
258
- The CLI's stderr exit messages start with stable, parseable prefixes:
115
+ ### Error codes
259
116
 
260
117
  | Prefix | Meaning | Recovery |
261
118
  |--------|---------|----------|
262
- | `Error[NO_AUTH]` | No credentials found anywhere | `gcloud auth login` **or** `llama token set` |
263
- | `Error[UNAUTHORIZED]` | Server rejected the credentials we sent | Token may be revoked / expired / wrong gcloud account |
264
-
265
- The MCP server returns the same prefixes inside `isError: true` content so
266
- agents can pattern-match without parsing prose.
267
-
268
- ---
119
+ | `Error[NO_AUTH]` | No credentials found | `llama auth login` or `llama token set` |
120
+ | `Error[UNAUTHORIZED]` | Server rejected the credentials | Token revoked / expired / wrong account |
269
121
 
270
- ### Golden Query Eval feedback
271
-
272
- The CLI and MCP server send lightweight client telemetry to Command for each
273
- authenticated request: client kind/version, detected agent client, local session
274
- id, normalized command, sanitized args, canonical result ids, status, latency,
275
- and bounded summaries. It records what Llama Command was asked to do, not the
276
- user's private Claude Code/Codex/Cursor conversation or local files.
277
-
278
- Search commands automatically become eval candidates. Agents can mark the latest
279
- result explicitly:
280
-
281
- ```bash
282
- llama eval good --last
283
- llama eval bad --last --reason "wrong top wiki"
284
- llama eval add "AI陪伴" --surface deal --expect deal:<uuid>
285
- ```
286
-
287
- MCP-native agents use `record_eval_feedback` for the same flow.
288
-
289
- ---
122
+ The MCP server returns the same prefixes inside `isError: true` content.
123
+ Authenticated calls send bounded, content-redacted telemetry to Command;
124
+ `llama eval good|bad --last` turns real searches into eval feedback.
290
125
 
291
126
  ## MCP server
292
127
 
293
- The bundled `llama-mcp` is a **stdio Model Context Protocol** server exposing
294
- typed tools that mirror the most-used CLI surface. Every tool is named
295
- and scoped — there is no generic API passthrough, by design (a public-package
296
- escape hatch reachable from a prompt-injectable agent context is exactly the
297
- shape we want to avoid).
298
-
299
- Coverage is grouped around the workflows agents actually need: auth
300
- diagnostics; live agent bootstrap; authenticated Llama OS skill search/read;
301
- Command URL/object inspection; deal search/show/create/update/feed; server-side deal agent runs;
302
- deal enrichment harnesses;
303
- trust-rated facts; brief blocks and version history; wiki read/write/delete/restore;
304
- timeline posts and mentions; skill corrections; refresh triggers; external pitch intake;
305
- memo show/regenerate/save/reset; and deal-scoped HTML docs, versions, bundles, and
306
- restore/reset.
307
-
308
- For the exact live list, smoke-test the server with `tools/list`:
128
+ `llama-mcp` is a stdio Model Context Protocol server exposing 58 typed tools
129
+ that mirror the most-used CLI surface. Every tool is named and scoped — there
130
+ is deliberately no generic API passthrough. Auth is identical to the CLI's
131
+ chain. For the exact live list, pipe `tools/list` through it:
309
132
 
310
133
  ```bash
311
134
  printf '%s\n' \
@@ -315,34 +138,14 @@ printf '%s\n' \
315
138
  | llama-mcp
316
139
  ```
317
140
 
318
- Auth is identical to the CLI's chain (gcloud → `$LLAMA_TOKEN` → `~/.llama/token`).
319
- The `agent_briefing` MCP **prompt** returns the server-owned Agent Runtime
320
- Contract when authenticated, so any new agent loading the server can
321
- self-onboard without leaving the protocol. The bundled
322
- [`AGENT_BRIEFING.md`](AGENT_BRIEFING.md) is only a fallback if the server
323
- briefing route is temporarily unavailable.
324
-
325
- For current Llama OS skills, use the runtime tools instead of looking for a
326
- local private repo: `agent_bootstrap`, `skills_search`, `skills_read`, and
327
- `object_inspect`. The public npm package does not bundle private skill text;
328
- Command returns only the content visible to the authenticated token.
329
-
330
- ### Wire into your agent
331
-
332
- <details open>
333
- <summary><strong>Claude Desktop</strong> (macOS path shown — Linux/Windows differ)</summary>
141
+ <details>
142
+ <summary><strong>Claude Desktop</strong></summary>
334
143
 
335
- `~/Library/Application Support/Claude/claude_desktop_config.json`:
144
+ `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
336
145
 
337
146
  ```json
338
- {
339
- "mcpServers": {
340
- "llama": { "command": "llama-mcp" }
341
- }
342
- }
147
+ { "mcpServers": { "llama": { "command": "llama-mcp" } } }
343
148
  ```
344
-
345
- Restart Claude Desktop. Tools appear under the 🛠️ menu.
346
149
  </details>
347
150
 
348
151
  <details>
@@ -351,114 +154,64 @@ Restart Claude Desktop. Tools appear under the 🛠️ menu.
351
154
  ```bash
352
155
  claude mcp add llama -- llama-mcp
353
156
  ```
354
-
355
- Or edit `~/.claude/claude.json` directly — same JSON shape as Desktop.
356
- </details>
357
-
358
- <details>
359
- <summary><strong>Cursor</strong></summary>
360
-
361
- `~/.cursor/mcp.json`:
362
-
363
- ```json
364
- {
365
- "mcpServers": {
366
- "llama": { "command": "llama-mcp" }
367
- }
368
- }
369
- ```
370
157
  </details>
371
158
 
372
159
  <details>
373
- <summary><strong>OpenCode / OpenClaw / Codex / arbitrary stdio MCP client</strong></summary>
160
+ <summary><strong>Cursor / any stdio MCP client</strong></summary>
374
161
 
375
- Most clients accept a `command` + `args` pair. Locate the binary
376
- (`which llama-mcp` typically `/usr/local/bin/llama-mcp` or
377
- `~/.npm-global/bin/llama-mcp`) and point the client at it. No protocol
378
- extensions, no transport flags.
162
+ Point the client at the `llama-mcp` binary (`which llama-mcp`). Same JSON
163
+ shape as above; no protocol extensions, no transport flags.
379
164
  </details>
380
165
 
381
- > If you're new and want the agent to onboard itself, run
382
- > `llama agent-onboard` from the CLI or fetch the `agent_briefing` prompt from
383
- > the MCP server. It pulls the Command-owned workflow contract — current CLI
384
- > guidance, attribution grammar, error recovery, and anti-pollution rules.
385
-
386
- ---
166
+ > New agent? `llama agent-onboard` (CLI) or the `agent_briefing` prompt (MCP)
167
+ > pulls the server-owned workflow contract. The bundled
168
+ > [`AGENT_BRIEFING.md`](AGENT_BRIEFING.md) is a fallback copy only.
387
169
 
388
170
  ## External pitch — no Llama account required
389
171
 
390
- If you're a **founder pitching us, an EA, or a prospective hire** without a
391
- Llama Command token, the CLI ships a `pitch` command family (and the parallel
392
- `pitch_*` MCP tools) that talks to our public intake agent at
393
- [command.llamaventures.vc/external-agent](https://command.llamaventures.vc/external-agent).
394
- Same conversation, same structured 12-dimension verdict — driven from your
395
- terminal or your own AI agent.
172
+ Founders, EAs, and prospective hires can pitch without a token: the `pitch`
173
+ commands (and `pitch_*` MCP tools) talk to our public intake agent the same
174
+ structured 12-dimension intake as the
175
+ [web version](https://command.llamaventures.vc/external-agent), driven from
176
+ your terminal or your own AI agent.
396
177
 
397
178
  ```bash
398
179
  llama pitch start --name "Jane Doe" --email "jane@acme.ai"
399
180
  llama pitch say "We're building an AI dev tool for X..."
400
181
  llama pitch upload ./deck.pdf
401
- llama pitch # interactive REPL
182
+ llama pitch # interactive REPL
402
183
  ```
403
184
 
404
- Server-enforced rate limits apply (per-IP, per-email, per-session). If you
405
- hit a limit, the CLI surfaces the server's response message.
406
-
407
- This is genuine **agent-to-agent**: your AI helps you tell the story, our
408
- intake agent extracts the structured fields and produces the verdict.
409
-
410
- ---
185
+ Server-enforced rate limits apply (per-IP, per-email, per-session).
411
186
 
412
187
  ## Stability
413
188
 
414
- - **Versioning:** [SemVer](https://semver.org). Renaming or removing a CLI
415
- command bumps **major**. Adding a tool, command, or flag bumps minor.
416
- Bugfixes bump patch. The CLI prints `--version`; the MCP server reports
417
- the same value in its `serverInfo`.
418
- - **Backwards compatibility:** The wire format (Bearer / X-Llama-Token) and
419
- the `Error[…]` prefixes are part of the public contract and won't change
420
- inside a major version.
421
- - **Server schema drift:** When the API gains an endpoint, the CLI / MCP gain
422
- a typed wrapper in the next minor release. While you wait, the `llama` CLI
423
- itself ships the full `llama` command surface (40+ commands) — use it for
424
- ad-hoc HTTP work that the MCP doesn't yet wrap.
425
-
426
- See [`CHANGELOG.md`](CHANGELOG.md) for the per-version log.
427
-
428
- ---
189
+ - **[SemVer](https://semver.org).** Renaming/removing a command → major;
190
+ new tool/command/flag minor; fixes → patch.
191
+ - **Public contract:** the wire format (Bearer / X-Llama-Token) and the
192
+ `Error[…]` prefixes don't change inside a major version.
193
+ - **No raw-API passthrough, by design.** If a wrapper you need hasn't landed,
194
+ open an issue instead of calling the HTTP API directly.
429
195
 
430
196
  ## Security
431
197
 
432
- - **`@llamaventures/cli` is published via npm
433
- [Trusted Publishers](https://docs.npmjs.com/trusted-publishers)** — no
434
- `NPM_TOKEN` lives in repo secrets. Each release ships with `--provenance`
435
- (sigstore-signed); the npm registry shows a **Provenance** badge traceable
436
- to the exact GitHub Action workflow + commit.
437
- - **Minimal dependency tree.** The CLI is zero-deps. The MCP server depends
438
- only on `@modelcontextprotocol/sdk`, pinned exact.
439
- - **Branch protection** on `main`; Dependabot, secret scanning, and
440
- push-protection are enabled.
441
- - **Tokens:** stored locally at `~/.llama/token` mode `0600`. Server-side they
442
- are stored as sha256 hashes — plaintext only ever exists in the user's
443
- possession.
198
+ - Published via npm [Trusted Publishers](https://docs.npmjs.com/trusted-publishers)
199
+ (OIDC) with `--provenance` — no npm token exists to leak.
200
+ - Zero runtime deps for the CLI; the MCP server depends only on
201
+ `@modelcontextprotocol/sdk`, pinned exact.
202
+ - Branch protection, Dependabot, secret scanning, push protection enabled.
203
+ - Tokens: `~/.llama/token` mode `0600` locally; sha256 hashes server-side.
444
204
 
445
- Reporting a vulnerability: see [`SECURITY.md`](SECURITY.md). **Do not** file
446
- public GitHub issues for security bugs.
447
-
448
- ---
205
+ Report vulnerabilities privately via
206
+ [GitHub security advisories](https://github.com/Llama-Ventures/llama-cli/security/advisories/new)
207
+ — not public issues. See [`SECURITY.md`](SECURITY.md).
449
208
 
450
209
  ## Contributing
451
210
 
452
- This is an internal tool maintained by Llama Ventures. PRs from team members
453
- are welcome — see [`CONTRIBUTING.md`](CONTRIBUTING.md) for the local dev loop,
454
- release flow (Trusted Publishers + GitHub Releases), and the conventions we
455
- follow (zero-deps, lockstep CLI/MCP, stable `Error[…]` prefixes).
456
-
457
- External contributions: feel free to open issues for documentation gaps or
458
- broken flows. Feature requests for non-team workflows are best directed at
459
- the [external pitch path](#external-pitch-no-llama-account-required) instead.
460
-
461
- ---
211
+ Internal tool maintained by Llama Ventures; team PRs welcome see
212
+ [`CONTRIBUTING.md`](CONTRIBUTING.md). External: issues for doc gaps and broken
213
+ flows are welcome; to get your company in front of us, use the
214
+ [pitch path](#external-pitch--no-llama-account-required).
462
215
 
463
216
  ## License
464
217