@llamaventures/cli 1.17.2 → 1.18.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/AGENT_BRIEFING.md +3 -1
- package/CHANGELOG.md +24 -1
- package/README.md +105 -375
- package/README.zh-CN.md +107 -339
- package/bin/llama-mcp.mjs +35 -0
- package/bin/llama.mjs +79 -0
- package/package.json +1 -5
- package/CONTRIBUTING.md +0 -100
- package/SECURITY.md +0 -62
- package/assets/llama-ventures-logo.svg +0 -25
- package/scripts/verify-agent-routing.mjs +0 -816
package/AGENT_BRIEFING.md
CHANGED
|
@@ -29,6 +29,7 @@ This npm package is public, but Llama OS skills are private. Do not assume the s
|
|
|
29
29
|
- Use `llama agent-onboard` or MCP `agent_briefing` for the server-owned Agent Runtime Contract. The npm-bundled text is fallback only.
|
|
30
30
|
- Use `llama skills search "<task>"` or MCP `skills_search` before choosing a Llama workflow.
|
|
31
31
|
- Use `llama skills show <slug>` or MCP `skills_read` only for the relevant skill.
|
|
32
|
+
- Use `llama activity new-deals|updated-deals` or MCP `activity_query` before scanning raw deal timelines for recent portfolio movement.
|
|
32
33
|
- Use `llama explain <command-url-or-object>` or MCP `object_inspect` for 404s, deleted wiki pages, notifier links, deal URLs, and unknown Command objects before telling the user "the system is broken."
|
|
33
34
|
|
|
34
35
|
The boundary matters: public CLI/MCP discovers skills, but authenticated Command decides which skill content the token may read.
|
|
@@ -296,7 +297,7 @@ Run `llama --help` for the full surface (~40 commands).
|
|
|
296
297
|
|
|
297
298
|
## MCP-native agents
|
|
298
299
|
|
|
299
|
-
If you support [MCP](https://modelcontextprotocol.io), **prefer the MCP server over parsing CLI output.** The same package ships `llama-mcp` (
|
|
300
|
+
If you support [MCP](https://modelcontextprotocol.io), **prefer the MCP server over parsing CLI output.** The same package ships `llama-mcp` (59 typed tools, identical auth chain).
|
|
300
301
|
|
|
301
302
|
Add to your MCP client config (Claude Desktop / Claude Code / Cursor / OpenClaw / Codex / etc.):
|
|
302
303
|
|
|
@@ -309,6 +310,7 @@ Tools available:
|
|
|
309
310
|
- `auth_status` — verify creds + identity (call first if anything 401s)
|
|
310
311
|
- `agent_bootstrap` — fetch the live Command + Llama OS runtime manifest
|
|
311
312
|
- `skills_search` / `skills_read` — discover and read authenticated runtime skills
|
|
313
|
+
- `activity_query` — query new deals and meaningful updates without scanning raw timelines
|
|
312
314
|
- `object_inspect` — explain Command URLs, 404s, deleted objects, and lifecycle trail
|
|
313
315
|
- `deal_search` / `deal_show` / `deal_create` / `deal_update`
|
|
314
316
|
- `brief_blocks` / `brief_add_text` / `brief_add_link` / `brief_add_callout`
|
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,26 @@ this project adheres to [Semantic Versioning](https://semver.org).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.18.0] - 2026-07-06
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- `llama activity new-deals|updated-deals|events` plus MCP `activity_query`
|
|
13
|
+
for agent-friendly reads over Command's curated activity projection. Agents
|
|
14
|
+
can ask for recent deal creations or meaningful deal updates without scanning
|
|
15
|
+
raw timelines or event-bus payloads.
|
|
16
|
+
|
|
17
|
+
## [1.17.3] - 2026-07-01
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- README (en + zh) condensed to the essentials — install, auth, AI-system
|
|
21
|
+
integration, CLI/MCP quick reference, external pitch; removed the
|
|
22
|
+
architecture diagram and marketing filler.
|
|
23
|
+
- Security reporting now goes through GitHub private vulnerability reporting
|
|
24
|
+
instead of a personal email (README, SECURITY.md, CONTRIBUTING.md).
|
|
25
|
+
- npm tarball trimmed to runtime files (bin/, lib/, agent briefing,
|
|
26
|
+
changelog, READMEs, license) — repo docs and CI test assets are no longer
|
|
27
|
+
published. 18 → 14 files.
|
|
28
|
+
|
|
9
29
|
## [1.17.2] - 2026-07-01
|
|
10
30
|
|
|
11
31
|
### Changed
|
|
@@ -480,7 +500,10 @@ assistant-drafted (🤖) and enforces the AI trust ceiling.
|
|
|
480
500
|
|
|
481
501
|
---
|
|
482
502
|
|
|
483
|
-
[Unreleased]: https://github.com/Llama-Ventures/llama-cli/compare/v1.
|
|
503
|
+
[Unreleased]: https://github.com/Llama-Ventures/llama-cli/compare/v1.18.0...HEAD
|
|
504
|
+
[1.18.0]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.3...v1.18.0
|
|
505
|
+
[1.17.3]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.2...v1.17.3
|
|
506
|
+
[1.17.2]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.1...v1.17.2
|
|
484
507
|
[1.17.1]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.0...v1.17.1
|
|
485
508
|
[1.17.0]: https://github.com/Llama-Ventures/llama-cli/compare/v1.16.0...v1.17.0
|
|
486
509
|
[1.16.0]: https://github.com/Llama-Ventures/llama-cli/compare/v1.15.1...v1.16.0
|
package/README.md
CHANGED
|
@@ -6,17 +6,15 @@
|
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<strong>The Llama Ventures CLI & MCP server.</strong><br/>
|
|
9
|
-
One <code>
|
|
10
|
-
|
|
11
|
-
|
|
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 59 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
|
|
|
@@ -28,309 +26,111 @@
|
|
|
28
26
|
<a href="#install">Install</a> ·
|
|
29
27
|
<a href="#authenticate">Authenticate</a> ·
|
|
30
28
|
<a href="#integrate-your-ai-system">Integrate your AI</a> ·
|
|
31
|
-
<a href="#cli
|
|
29
|
+
<a href="#cli">CLI</a> ·
|
|
32
30
|
<a href="#mcp-server">MCP</a> ·
|
|
33
|
-
<a href="#external-pitch
|
|
34
|
-
<a href="AGENT_BRIEFING.md">Agent briefing</a> ·
|
|
35
|
-
<a href="SECURITY.md">Security</a> ·
|
|
31
|
+
<a href="#external-pitch--no-llama-account-required">External pitch</a> ·
|
|
36
32
|
<a href="CHANGELOG.md">Changelog</a>
|
|
37
33
|
</p>
|
|
38
34
|
|
|
39
|
-
> **Public source for low-friction install
|
|
40
|
-
> Most operations require a Llama Ventures team account
|
|
41
|
-
>
|
|
42
|
-
>
|
|
43
|
-
> [External pitch](#external-pitch-no-llama-account-required).
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## What's in the box
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
@llamaventures/cli
|
|
51
|
-
├── bin/llama interactive CLI for humans + bash
|
|
52
|
-
└── bin/llama-mcp stdio MCP server, 58 typed tools — for any MCP-native agent
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Both binaries share `lib/client.mjs` — the **same** auth chain, **same** HTTP
|
|
56
|
-
client, **same** error format. CLI and MCP can never drift on transport or
|
|
57
|
-
identity. Zero runtime dependencies for the CLI itself; the bundled MCP
|
|
58
|
-
server depends only on `@modelcontextprotocol/sdk` (Anthropic-maintained,
|
|
59
|
-
pinned exact).
|
|
60
|
-
|
|
61
|
-
```mermaid
|
|
62
|
-
flowchart LR
|
|
63
|
-
Human([🧑💻 Human]) --> CLI[bin/llama<br/>argv parser]
|
|
64
|
-
Agent([🤖 MCP-native agent]) --> MCP[bin/llama-mcp<br/>stdio JSON-RPC]
|
|
65
|
-
CLI --> Client[lib/client.mjs<br/>auth · fetch · errors]
|
|
66
|
-
MCP --> Client
|
|
67
|
-
Client -- HTTPS --> API[(command.llamaventures.vc)]
|
|
68
|
-
classDef src fill:#dcfce7,stroke:#166534,color:#14532d
|
|
69
|
-
classDef edge fill:#dbeafe,stroke:#1e40af,color:#1e3a8a
|
|
70
|
-
class Human,Agent edge
|
|
71
|
-
class CLI,MCP,Client src
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
---
|
|
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.
|
|
75
39
|
|
|
76
40
|
## Install
|
|
77
41
|
|
|
78
42
|
```bash
|
|
79
|
-
npm i -g @llamaventures/cli
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Requires **Node 18+** (uses native `fetch` and ESM). CI runs the matrix on 18 / 20 / 22.
|
|
83
|
-
|
|
84
|
-
Verify:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
43
|
+
npm i -g @llamaventures/cli # Node 18+; also puts `llama-mcp` on your PATH
|
|
87
44
|
llama --version
|
|
88
|
-
llama auth status
|
|
45
|
+
llama auth status # round-trips against /api/me
|
|
89
46
|
```
|
|
90
47
|
|
|
91
|
-
The same install puts `llama-mcp` on your `PATH` for the MCP server — no second package.
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
48
|
## Authenticate
|
|
96
49
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
| # | Source | Header sent | Best for |
|
|
100
|
-
|---|--------|-------------|----------|
|
|
101
|
-
| 1 | `llama auth login` (OAuth 2.1, OS Keychain) | `Authorization: Bearer …` | **Recommended for everyone.** One-shot browser login; tokens auto-refresh and survive reboots. |
|
|
102
|
-
| 2 | `gcloud auth print-identity-token` | `Authorization: Bearer …` | Workstations with gcloud already wired (zero config) |
|
|
103
|
-
| 3 | `$LLAMA_TOKEN` env var | `X-Llama-Token` | CI runners, sandboxed cloud agents |
|
|
104
|
-
| 4 | `~/.llama/token` (mode `0600`) | `X-Llama-Token` | Persistent local install (legacy PATs) |
|
|
105
|
-
| 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:
|
|
106
51
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
llama auth login # opens browser → Google sign-in → consent → done
|
|
115
|
-
llama auth status # → activeMethod=oauth, scope, identity
|
|
116
|
-
llama deal search acme-ai # ready
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
`llama auth login` runs an OAuth 2.1 PKCE + RFC 8252 loopback flow against
|
|
120
|
-
`https://command.llamaventures.vc`, exchanges the code for an access + refresh
|
|
121
|
-
token pair, and stores them in the OS Keychain (macOS Keychain / Windows
|
|
122
|
-
Credential Manager / Linux Secret Service via [`@napi-rs/keyring`](https://www.npmjs.com/package/@napi-rs/keyring)).
|
|
123
|
-
Linux containers without libsecret use a 0600-mode file at `~/.llama/oauth.json`
|
|
124
|
-
— same posture `gcloud` / `gh` / `aws` ship with on Linux servers. Refresh
|
|
125
|
-
tokens rotate transparently when the access token nears expiry; a cross-process
|
|
126
|
-
file lock prevents two shells from burning each other's refresh during
|
|
127
|
-
concurrent calls.
|
|
128
|
-
|
|
129
|
-
`llama auth logout` revokes server-side via RFC 7009 and clears local storage.
|
|
130
|
-
|
|
131
|
-
### gcloud — for machines already wired with `gcloud auth login`
|
|
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 |
|
|
132
59
|
|
|
133
60
|
```bash
|
|
134
|
-
|
|
135
|
-
llama auth
|
|
136
|
-
llama
|
|
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
|
|
137
65
|
```
|
|
138
66
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
1. Sign in to https://command.llamaventures.vc.
|
|
142
|
-
2. Open `/settings/tokens` → **Mint Token**.
|
|
143
|
-
3. Save the `llc_…` value:
|
|
67
|
+
> **No account?** Ask your Llama Ventures contact — any email address can be
|
|
68
|
+
> granted a token.
|
|
144
69
|
|
|
145
|
-
|
|
146
|
-
llama token set llc_paste_token_here
|
|
147
|
-
# → writes ~/.llama/token (mode 0600)
|
|
148
|
-
# → round-trips /api/me before saving — bad token never lands on disk
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
Or, in CI / one-shot environments:
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
export LLAMA_TOKEN=llc_paste_token_here
|
|
155
|
-
```
|
|
70
|
+
## Integrate your AI system
|
|
156
71
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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.
|
|
161
77
|
|
|
162
|
-
|
|
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>"`.
|
|
163
87
|
|
|
164
|
-
##
|
|
88
|
+
## CLI
|
|
165
89
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
workbench, come through here — **not the raw HTTP API**. The CLI/MCP layer owns
|
|
169
|
-
the auth chain, the stable `Error[…]` contract, and forward-compatibility
|
|
170
|
-
across server schema changes ([SemVer](#stability)); raw API routes carry no
|
|
171
|
-
such promise and can change without notice.
|
|
172
|
-
|
|
173
|
-
The five-minute path:
|
|
174
|
-
|
|
175
|
-
1. **Get credentials** — a team account signs in with `llama auth login`; for
|
|
176
|
-
headless systems, have the admin mint a PAT at
|
|
177
|
-
[`/settings/tokens`](https://command.llamaventures.vc/settings/tokens) and
|
|
178
|
-
set it via `llama token set` or `$LLAMA_TOKEN`.
|
|
179
|
-
2. **Install** — `npm i -g @llamaventures/cli` (Node 18+).
|
|
180
|
-
3. **Wire it in:**
|
|
181
|
-
- **MCP-native agent** (Claude, Cursor, any stdio client) → point it at
|
|
182
|
-
`llama-mcp`: 58 typed tools, no generic passthrough.
|
|
183
|
-
See [MCP server](#mcp-server) for per-client config.
|
|
184
|
-
- **Anything else** → shell out to `llama …`. Output is agent-friendly
|
|
185
|
-
plain text; failures use the stable
|
|
186
|
-
[`Error[…]` prefixes](#error-codes--for-agents).
|
|
187
|
-
4. **Onboard the agent** — have it run `llama agent-onboard` (or fetch the MCP
|
|
188
|
-
`agent_briefing` prompt) at session start. It returns the **server-owned
|
|
189
|
-
Agent Runtime Contract** — current workflow rules, attribution grammar,
|
|
190
|
-
error recovery — always in sync with the live server, so this README never
|
|
191
|
-
becomes your integration bottleneck.
|
|
192
|
-
5. **Verify** — `llama auth status` round-trips the resolved identity;
|
|
193
|
-
`llama deal search "<anything>"` proves read access.
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## CLI tour
|
|
198
|
-
|
|
199
|
-
The CLI is the canonical interface. The HTTP API beneath it is stable, but the
|
|
200
|
-
CLI handles auth, error formatting, and forward-compatibility across server
|
|
201
|
-
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.
|
|
202
92
|
|
|
203
93
|
```bash
|
|
204
|
-
#
|
|
205
|
-
llama auth status
|
|
206
|
-
llama token set <llc_...>
|
|
207
|
-
llama token show
|
|
208
|
-
|
|
209
|
-
# Pipeline — read
|
|
210
|
-
llama deal search "acme ai"
|
|
211
|
-
llama deal list --owner alex --status Diligence # same filters as search
|
|
94
|
+
llama deal search "acme ai" # find deals (deal list takes the same filters)
|
|
212
95
|
llama deal show <dealId>
|
|
213
|
-
llama deal feed <dealId>
|
|
214
|
-
|
|
215
|
-
#
|
|
216
|
-
llama deal create "Acme AI" --
|
|
96
|
+
llama deal feed <dealId> # every contribution, newest first
|
|
97
|
+
llama activity new-deals --since 24h # recent deal creations
|
|
98
|
+
llama activity updated-deals --since 7d # meaningful updates grouped by deal
|
|
99
|
+
llama deal create "Acme AI" --source alex --source-direction Outbound --status Interested
|
|
217
100
|
llama deal update <dealId> status Diligence
|
|
218
|
-
llama
|
|
219
|
-
llama
|
|
220
|
-
llama deal enrich <dealId> --executor external_agent --prompt
|
|
221
|
-
llama deal agent run <dealId> --message "collect founder evidence and update typed facts"
|
|
222
|
-
llama deal delete <dealId> # soft (audit-logged)
|
|
223
|
-
llama deal restore <dealId>
|
|
224
|
-
|
|
225
|
-
# Status semantics
|
|
226
|
-
# Interested = record/track before outreach, intro, response, deck submission, or meeting.
|
|
227
|
-
# Outreached = contact/logged, but no response or effective relationship yet.
|
|
228
|
-
# Sourced = response, intro, meeting, or another real relationship signal exists.
|
|
229
|
-
# sourceDirection is separate:
|
|
230
|
-
# Inbound = came into the firm.
|
|
231
|
-
# Outbound = we found/listed/reached out first.
|
|
232
|
-
|
|
233
|
-
# Deal Brief — ordered, typed blocks (text · link · embed · callout)
|
|
234
|
-
llama brief blocks <dealId>
|
|
235
|
-
llama brief add-text <dealId> --heading "..." --body "..."
|
|
236
|
-
llama brief add-link <dealId> --url "..." --label "..."
|
|
237
|
-
llama brief add-callout <dealId> --tone insight --heading "..." --body "..."
|
|
238
|
-
llama brief edit <dealId> <blockId> [--heading ...] [--body ...]
|
|
239
|
-
llama brief history <dealId> <blockId>
|
|
240
|
-
|
|
241
|
-
# Ownership + approvals
|
|
242
|
-
llama claim <dealId>
|
|
243
|
-
llama nominate <dealId> --user <userId>
|
|
244
|
-
llama approvals list
|
|
245
|
-
llama approvals decide <approvalId> approved --note "..."
|
|
246
|
-
|
|
247
|
-
# Timeline + posts
|
|
248
|
-
llama timeline <dealId>
|
|
249
|
-
llama post <dealId> "message body" [--link url]
|
|
250
|
-
|
|
251
|
-
# Agent runtime — live Command + private Llama OS skill gateway
|
|
252
|
-
llama agent bootstrap
|
|
253
|
-
llama skills search "wiki delete tombstone"
|
|
254
|
-
llama skills show llama-command
|
|
255
|
-
llama explain https://command.llamaventures.vc/wiki/some-page
|
|
256
|
-
llama eval bad --last --reason "missed the llamaos weekly note"
|
|
257
|
-
llama eval add "last week llama dev weekly" --expect wiki:llamaos-weekly-2026-06-17
|
|
258
|
-
|
|
259
|
-
# Wiki
|
|
101
|
+
llama post <dealId> "note body"
|
|
102
|
+
llama brief add-text <dealId> --heading "..." --body "..."
|
|
260
103
|
llama wiki search "<query>"
|
|
261
|
-
llama wiki
|
|
262
|
-
# Markdown entry:
|
|
263
|
-
llama wiki save <slug> --title "..." --content "..." --sources "url1;url2"
|
|
264
|
-
# HTML entry — standalone page at /wiki/<slug> (full-viewport sandboxed iframe):
|
|
265
|
-
llama wiki save <slug> --title "..." --file page.html --sources "..." [--content-type html]
|
|
266
|
-
# Delete / restore (soft, reversible):
|
|
267
|
-
llama wiki delete <slug> [--lang en|zh]
|
|
268
|
-
llama wiki restore <slug> [--lang en|zh]
|
|
269
|
-
|
|
270
|
-
# Mentions inbox
|
|
104
|
+
llama wiki save <slug> --title "..." --content "..."
|
|
271
105
|
llama mentions
|
|
272
|
-
llama
|
|
106
|
+
llama agent-onboard # server-owned agent workflow contract
|
|
273
107
|
```
|
|
274
108
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
is reversible and audit-logged via `deal_events`.
|
|
109
|
+
Status vocabulary — `Interested`: tracked before any contact ·
|
|
110
|
+
`Outreached`: contacted, no response yet · `Sourced`: real relationship
|
|
111
|
+
signal exists. `sourceDirection` is separate: `Inbound` came to the firm,
|
|
112
|
+
`Outbound` we reached out first.
|
|
280
113
|
|
|
281
|
-
|
|
114
|
+
Run `llama --help` for the group index, `llama help all` for the full
|
|
115
|
+
reference (100+ commands). Deletes are soft and audit-logged everywhere.
|
|
282
116
|
|
|
283
|
-
|
|
117
|
+
### Error codes
|
|
284
118
|
|
|
285
119
|
| Prefix | Meaning | Recovery |
|
|
286
120
|
|--------|---------|----------|
|
|
287
|
-
| `Error[NO_AUTH]` | No credentials found
|
|
288
|
-
| `Error[UNAUTHORIZED]` | Server rejected the credentials
|
|
289
|
-
|
|
290
|
-
The MCP server returns the same prefixes inside `isError: true` content so
|
|
291
|
-
agents can pattern-match without parsing prose.
|
|
292
|
-
|
|
293
|
-
---
|
|
121
|
+
| `Error[NO_AUTH]` | No credentials found | `llama auth login` or `llama token set` |
|
|
122
|
+
| `Error[UNAUTHORIZED]` | Server rejected the credentials | Token revoked / expired / wrong account |
|
|
294
123
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
authenticated request: client kind/version, detected agent client, local session
|
|
299
|
-
id, normalized command, sanitized args, canonical result ids, status, latency,
|
|
300
|
-
and bounded summaries. It records what Llama Command was asked to do, not the
|
|
301
|
-
user's private Claude Code/Codex/Cursor conversation or local files.
|
|
302
|
-
|
|
303
|
-
Search commands automatically become eval candidates. Agents can mark the latest
|
|
304
|
-
result explicitly:
|
|
305
|
-
|
|
306
|
-
```bash
|
|
307
|
-
llama eval good --last
|
|
308
|
-
llama eval bad --last --reason "wrong top wiki"
|
|
309
|
-
llama eval add "AI陪伴" --surface deal --expect deal:<uuid>
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
MCP-native agents use `record_eval_feedback` for the same flow.
|
|
313
|
-
|
|
314
|
-
---
|
|
124
|
+
The MCP server returns the same prefixes inside `isError: true` content.
|
|
125
|
+
Authenticated calls send bounded, content-redacted telemetry to Command;
|
|
126
|
+
`llama eval good|bad --last` turns real searches into eval feedback.
|
|
315
127
|
|
|
316
128
|
## MCP server
|
|
317
129
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
shape we want to avoid).
|
|
323
|
-
|
|
324
|
-
Coverage is grouped around the workflows agents actually need: auth
|
|
325
|
-
diagnostics; live agent bootstrap; authenticated Llama OS skill search/read;
|
|
326
|
-
Command URL/object inspection; deal search/show/create/update/feed; server-side deal agent runs;
|
|
327
|
-
deal enrichment harnesses;
|
|
328
|
-
trust-rated facts; brief blocks and version history; wiki read/write/delete/restore;
|
|
329
|
-
timeline posts and mentions; skill corrections; refresh triggers; external pitch intake;
|
|
330
|
-
memo show/regenerate/save/reset; and deal-scoped HTML docs, versions, bundles, and
|
|
331
|
-
restore/reset.
|
|
332
|
-
|
|
333
|
-
For the exact live list, smoke-test the server with `tools/list`:
|
|
130
|
+
`llama-mcp` is a stdio Model Context Protocol server exposing 59 typed tools
|
|
131
|
+
that mirror the most-used CLI surface. Every tool is named and scoped — there
|
|
132
|
+
is deliberately no generic API passthrough. Auth is identical to the CLI's
|
|
133
|
+
chain. For the exact live list, pipe `tools/list` through it:
|
|
334
134
|
|
|
335
135
|
```bash
|
|
336
136
|
printf '%s\n' \
|
|
@@ -340,34 +140,14 @@ printf '%s\n' \
|
|
|
340
140
|
| llama-mcp
|
|
341
141
|
```
|
|
342
142
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
Contract when authenticated, so any new agent loading the server can
|
|
346
|
-
self-onboard without leaving the protocol. The bundled
|
|
347
|
-
[`AGENT_BRIEFING.md`](AGENT_BRIEFING.md) is only a fallback if the server
|
|
348
|
-
briefing route is temporarily unavailable.
|
|
349
|
-
|
|
350
|
-
For current Llama OS skills, use the runtime tools instead of looking for a
|
|
351
|
-
local private repo: `agent_bootstrap`, `skills_search`, `skills_read`, and
|
|
352
|
-
`object_inspect`. The public npm package does not bundle private skill text;
|
|
353
|
-
Command returns only the content visible to the authenticated token.
|
|
354
|
-
|
|
355
|
-
### Wire into your agent
|
|
356
|
-
|
|
357
|
-
<details open>
|
|
358
|
-
<summary><strong>Claude Desktop</strong> (macOS path shown — Linux/Windows differ)</summary>
|
|
143
|
+
<details>
|
|
144
|
+
<summary><strong>Claude Desktop</strong></summary>
|
|
359
145
|
|
|
360
|
-
`~/Library/Application Support/Claude/claude_desktop_config.json
|
|
146
|
+
`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
|
|
361
147
|
|
|
362
148
|
```json
|
|
363
|
-
{
|
|
364
|
-
"mcpServers": {
|
|
365
|
-
"llama": { "command": "llama-mcp" }
|
|
366
|
-
}
|
|
367
|
-
}
|
|
149
|
+
{ "mcpServers": { "llama": { "command": "llama-mcp" } } }
|
|
368
150
|
```
|
|
369
|
-
|
|
370
|
-
Restart Claude Desktop. Tools appear under the 🛠️ menu.
|
|
371
151
|
</details>
|
|
372
152
|
|
|
373
153
|
<details>
|
|
@@ -376,114 +156,64 @@ Restart Claude Desktop. Tools appear under the 🛠️ menu.
|
|
|
376
156
|
```bash
|
|
377
157
|
claude mcp add llama -- llama-mcp
|
|
378
158
|
```
|
|
379
|
-
|
|
380
|
-
Or edit `~/.claude/claude.json` directly — same JSON shape as Desktop.
|
|
381
|
-
</details>
|
|
382
|
-
|
|
383
|
-
<details>
|
|
384
|
-
<summary><strong>Cursor</strong></summary>
|
|
385
|
-
|
|
386
|
-
`~/.cursor/mcp.json`:
|
|
387
|
-
|
|
388
|
-
```json
|
|
389
|
-
{
|
|
390
|
-
"mcpServers": {
|
|
391
|
-
"llama": { "command": "llama-mcp" }
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
```
|
|
395
159
|
</details>
|
|
396
160
|
|
|
397
161
|
<details>
|
|
398
|
-
<summary><strong>
|
|
162
|
+
<summary><strong>Cursor / any stdio MCP client</strong></summary>
|
|
399
163
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
`~/.npm-global/bin/llama-mcp`) and point the client at it. No protocol
|
|
403
|
-
extensions, no transport flags.
|
|
164
|
+
Point the client at the `llama-mcp` binary (`which llama-mcp`). Same JSON
|
|
165
|
+
shape as above; no protocol extensions, no transport flags.
|
|
404
166
|
</details>
|
|
405
167
|
|
|
406
|
-
>
|
|
407
|
-
>
|
|
408
|
-
>
|
|
409
|
-
> guidance, attribution grammar, error recovery, and anti-pollution rules.
|
|
410
|
-
|
|
411
|
-
---
|
|
168
|
+
> New agent? `llama agent-onboard` (CLI) or the `agent_briefing` prompt (MCP)
|
|
169
|
+
> pulls the server-owned workflow contract. The bundled
|
|
170
|
+
> [`AGENT_BRIEFING.md`](AGENT_BRIEFING.md) is a fallback copy only.
|
|
412
171
|
|
|
413
172
|
## External pitch — no Llama account required
|
|
414
173
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
[
|
|
419
|
-
|
|
420
|
-
terminal or your own AI agent.
|
|
174
|
+
Founders, EAs, and prospective hires can pitch without a token: the `pitch`
|
|
175
|
+
commands (and `pitch_*` MCP tools) talk to our public intake agent — the same
|
|
176
|
+
structured 12-dimension intake as the
|
|
177
|
+
[web version](https://command.llamaventures.vc/external-agent), driven from
|
|
178
|
+
your terminal or your own AI agent.
|
|
421
179
|
|
|
422
180
|
```bash
|
|
423
181
|
llama pitch start --name "Jane Doe" --email "jane@acme.ai"
|
|
424
182
|
llama pitch say "We're building an AI dev tool for X..."
|
|
425
183
|
llama pitch upload ./deck.pdf
|
|
426
|
-
llama pitch
|
|
184
|
+
llama pitch # interactive REPL
|
|
427
185
|
```
|
|
428
186
|
|
|
429
|
-
Server-enforced rate limits apply (per-IP, per-email, per-session).
|
|
430
|
-
hit a limit, the CLI surfaces the server's response message.
|
|
431
|
-
|
|
432
|
-
This is genuine **agent-to-agent**: your AI helps you tell the story, our
|
|
433
|
-
intake agent extracts the structured fields and produces the verdict.
|
|
434
|
-
|
|
435
|
-
---
|
|
187
|
+
Server-enforced rate limits apply (per-IP, per-email, per-session).
|
|
436
188
|
|
|
437
189
|
## Stability
|
|
438
190
|
|
|
439
|
-
- **
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
- **
|
|
444
|
-
|
|
445
|
-
inside a major version.
|
|
446
|
-
- **Server schema drift:** When the API gains an endpoint, the CLI / MCP gain
|
|
447
|
-
a typed wrapper in the next minor release. There is deliberately no raw-API
|
|
448
|
-
passthrough — if a wrapper you need hasn't landed yet, open an issue rather
|
|
449
|
-
than calling the HTTP API directly.
|
|
450
|
-
|
|
451
|
-
See [`CHANGELOG.md`](CHANGELOG.md) for the per-version log.
|
|
452
|
-
|
|
453
|
-
---
|
|
191
|
+
- **[SemVer](https://semver.org).** Renaming/removing a command → major;
|
|
192
|
+
new tool/command/flag → minor; fixes → patch.
|
|
193
|
+
- **Public contract:** the wire format (Bearer / X-Llama-Token) and the
|
|
194
|
+
`Error[…]` prefixes don't change inside a major version.
|
|
195
|
+
- **No raw-API passthrough, by design.** If a wrapper you need hasn't landed,
|
|
196
|
+
open an issue instead of calling the HTTP API directly.
|
|
454
197
|
|
|
455
198
|
## Security
|
|
456
199
|
|
|
457
|
-
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
-
|
|
463
|
-
only on `@modelcontextprotocol/sdk`, pinned exact.
|
|
464
|
-
- **Branch protection** on `main`; Dependabot, secret scanning, and
|
|
465
|
-
push-protection are enabled.
|
|
466
|
-
- **Tokens:** stored locally at `~/.llama/token` mode `0600`. Server-side they
|
|
467
|
-
are stored as sha256 hashes — plaintext only ever exists in the user's
|
|
468
|
-
possession.
|
|
200
|
+
- Published via npm [Trusted Publishers](https://docs.npmjs.com/trusted-publishers)
|
|
201
|
+
(OIDC) with `--provenance` — no npm token exists to leak.
|
|
202
|
+
- Zero runtime deps for the CLI; the MCP server depends only on
|
|
203
|
+
`@modelcontextprotocol/sdk`, pinned exact.
|
|
204
|
+
- Branch protection, Dependabot, secret scanning, push protection enabled.
|
|
205
|
+
- Tokens: `~/.llama/token` mode `0600` locally; sha256 hashes server-side.
|
|
469
206
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
---
|
|
207
|
+
Report vulnerabilities privately via
|
|
208
|
+
[GitHub security advisories](https://github.com/Llama-Ventures/llama-cli/security/advisories/new)
|
|
209
|
+
— not public issues. See [`SECURITY.md`](SECURITY.md).
|
|
474
210
|
|
|
475
211
|
## Contributing
|
|
476
212
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
External contributions: feel free to open issues for documentation gaps or
|
|
483
|
-
broken flows. Feature requests for non-team workflows are best directed at
|
|
484
|
-
the [external pitch path](#external-pitch-no-llama-account-required) instead.
|
|
485
|
-
|
|
486
|
-
---
|
|
213
|
+
Internal tool maintained by Llama Ventures; team PRs welcome — see
|
|
214
|
+
[`CONTRIBUTING.md`](CONTRIBUTING.md). External: issues for doc gaps and broken
|
|
215
|
+
flows are welcome; to get your company in front of us, use the
|
|
216
|
+
[pitch path](#external-pitch--no-llama-account-required).
|
|
487
217
|
|
|
488
218
|
## License
|
|
489
219
|
|