@oxagen/cli 1.0.0 → 2.1.4-363

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 CHANGED
@@ -1,480 +1,292 @@
1
- # Oxagen CLI
2
-
3
- Command-line interface for the [Oxagen](https://oxagen.ai) platform. Chat with the agent, run workflows, generate content, manage your organization, and integrate external MCP servers — all from your terminal.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- npm install -g @oxagen/cli
9
- # or
10
- pnpm add -g @oxagen/cli
11
- ```
1
+ # @oxagen/cli
2
+
3
+ The governance-operations CLI for the Oxagen control plane: spend ceilings and
4
+ cost, run traces, knowledge-graph grounding, agent memory,
5
+ environments, the credential vault, and audit logs — from the terminal.
6
+
7
+ Oxagen **governs, grounds, explains, meters/bills and rates** agents; it does
8
+ not run them ([ADR-043](../../docs/adr/ADR-043-runtime-excision.md)). The
9
+ interactive coding agent this CLI used to ship — the REPL, sandboxes, skills,
10
+ slash commands, evals, local rules and settings — is gone. Stella owns all
11
+ things agentic: use the `stella` CLI with the oxagen MCP server. Every removed
12
+ entry point stays registered as a stub that prints exactly that, so a stale
13
+ script fails with guidance instead of an unknown-command error.
14
+
15
+ Full reference: **https://docs.oxagen.sh/docs/cli**
16
+
17
+ ## Boundary
18
+
19
+ - **Owns:** the `oxagen` command tree (`src/program.ts`), the browser login
20
+ with PKCE and a loopback listener (`src/auth/`), the local config and
21
+ workspace binding (`src/lib/config.ts`, `.oxagen/workspace.json`), the HTTP
22
+ client for the platform API (`src/lib/api.ts`), output formatting, the
23
+ retirement stubs for the former coding-agent commands, and anonymous usage
24
+ telemetry (`src/telemetry/usage.ts`).
25
+ - **Does not own:** any capability logic. Every command that reads or changes
26
+ platform state calls [`apps/api`](../api/README.md) over HTTP, and the
27
+ kernel runs there. It also does not own the work behind the machine
28
+ commands (`oxagen agent enroll`, `oxagen agent run`, `oxagen hook`,
29
+ `oxagen daemon`, and the rest), which lives in
30
+ [`@oxagen/recorder`](../../packages/tacho/README.md) (`@oxagen/recorder/cli`),
31
+ the steering freshness check
32
+ ([`@oxagen/steering-freshness`](../../packages/steering-freshness/README.md)),
33
+ or the consent page it opens (`/cli/authorize` in
34
+ [`apps/app`](../app/README.md)).
35
+ - **Depends on:** `@oxagen/recorder` (the machine commands under
36
+ `oxagen agent`, and the hidden ones the hooks and the service run),
37
+ `@oxagen/steering-freshness` (`oxagen steering`),
38
+ and `@oxagen/billing` (`formatUsd` and the rate card from
39
+ `@oxagen/billing/rate-card`, for display).
40
+ - **Used by:** no workspace package imports it. It is published as the
41
+ `oxagen` binary.
42
+
43
+ ## Seams
44
+
45
+ | Seam | Kind | Source | Wired by |
46
+ |---|---|---|---|
47
+ | Platform API client (`/v1/{org}/{workspace}/…`, `/v1/user/…`, bearer token) | boundary | `apps/cli/src/lib/api.ts` | Commands in `apps/cli/src/commands/`. Served by `apps/api/src/app.ts` |
48
+ | Browser login (`/cli/authorize`, then `POST /v1/auth/cli/token`) | boundary | `apps/cli/src/auth/loopback-login.ts`, `pkce.ts` | `oxagen login` |
49
+ | `CliDeps` from `defaultCliDeps` | adapter | `apps/cli/src/commands/tacho.ts` | `oxagen agent enroll`, `status`, `reassign`, `unenroll`, `export`, `verify`, `hosts`, `run`, and `detect`, and the hidden alias group that keeps the older spelling. The work lives in `@oxagen/recorder/cli` |
50
+ | Machine command dispatch | adapter | `apps/cli/src/index.ts`, `apps/cli/src/machine/` | `oxagen hook`, `daemon`, `mcp-stdio`, `credential`, `github`, and `arp`, which go straight to the recorder before the command tree loads. Hidden from `oxagen --help` |
51
+ | `evaluateGate`, `renderGate`, `installHook` | adapter | `apps/cli/src/commands/steering.ts` | `oxagen steering …`, and each harness's prompt-submit hook |
52
+ | Usage telemetry (`POST /v1/telemetry/usage`) | boundary | `apps/cli/src/telemetry/usage.ts` | Every command, unless `oxagen telemetry off` or `DO_NOT_TRACK=1` |
53
+ | Retired command stubs | registry | `apps/cli/src/commands/retired.ts` | `apps/cli/src/program.ts` |
54
+
55
+ The CLI bootstraps no kernel gate and registers no handler. Contracts that
56
+ declare the `cli` surface are served through the API, and
57
+ `pnpm check:manifest` counts the `cli` layer as met when a command file exists
58
+ for the capability or a command file names it.
59
+
60
+ ## Entry points
61
+
62
+ - `bin.oxagen` → `dist/index.js`, built by `tsc` from `src/index.ts`. It
63
+ sends the machine commands (`hook`, `daemon`, `mcp-stdio`, `credential`,
64
+ `github`, `arp`) straight to the recorder through `src/machine/`, and every
65
+ other command to `src/main.ts`, which installs the fatal-error handlers and
66
+ hands off to `buildProgram()` in `src/program.ts`.
67
+ - `pnpm bundle` → `scripts/bundle.mjs`: the standalone single-file bundle.
68
+ - `pnpm compile` → a single executable, built by `tools/sea/compile.mjs` (see
69
+ [`tools/sea`](../../tools/sea/README.md)).
70
+
71
+ ## Rules
72
+
73
+ - The CLI governs agents and runs none (ADR-043). A former coding-agent
74
+ command stays registered as a stub that points to `stella`.
75
+ - Commands reach platform state through the API only, never through a
76
+ database client or the kernel.
77
+ - Telemetry never carries code, prompts, file contents, paths, model slugs,
78
+ or keys.
79
+
80
+ ## Tests
12
81
 
13
82
  ```bash
14
- oxagen --version
83
+ pnpm --filter @oxagen/cli test:unit src/commands/steering.test.ts
15
84
  ```
16
85
 
17
- ### From source
18
-
19
- ```bash
20
- cd oxagen-monorepo
21
- pnpm install
22
- pnpm -C apps/cli build
23
- node apps/cli/dist/index.js --version
24
- ```
25
-
26
- ## Interactive mode
27
-
28
- Run `oxagen` with no arguments in a terminal to open the interactive TUI: an
29
- ASCII banner and a keyboard-navigable menu of every command group and command.
86
+ Never put `--` before the filename. Tests live in `src/**/__tests__/` and
87
+ beside their sources as `*.test.ts`.
30
88
 
31
- - `↑/↓` move · `↵` select · `Esc` back · `q` quit · type to filter
32
- - Selecting a command opens a form for its arguments and flags, then runs it.
33
- - Secret inputs (passwords, tokens) are masked.
34
-
35
- Disable it (always print help instead) with `OXAGEN_NO_TUI=1`. Non-interactive
36
- usage — `oxagen <command> …`, pipes, and CI — is unaffected.
89
+ ## Installation
37
90
 
38
- ## Authentication
91
+ Three ways, in the order the docs recommend
92
+ (https://docs.oxagen.sh/docs/cli/installation):
39
93
 
40
- ### Interactive (default)
94
+ 1. **The Oxagen app.** Download it from https://downloads.oxagen.sh/. On first
95
+ launch it links `oxagen` onto your PATH.
96
+ 2. **A single executable.** Each version publishes `oxagen-<rust triple>`
97
+ (`oxagen-aarch64-apple-darwin`, `oxagen-x86_64-unknown-linux-gnu`, and so
98
+ on) with a `.sha256` beside it, at
99
+ `https://downloads.oxagen.sh/latest/<file>` and
100
+ `https://downloads.oxagen.sh/desktop/<version>/<file>`. It needs no Node.js.
101
+ 3. **npm.** `npm install -g @oxagen/cli`. The package on npm lags the app
102
+ (#4489).
41
103
 
42
- Run `oxagen login` in a terminal. A browser window opens at
43
- `https://app.oxagen.sh/cli/authorize`. After you approve, the CLI receives
44
- the token via a local loopback callback and saves the session automatically.
104
+ **From a checkout of this repository** (contributors):
45
105
 
46
106
  ```bash
47
- oxagen login # opens browser, handles the full OAuth + PKCE flow
48
- oxagen logout # clear the saved session
107
+ pnpm install
108
+ pnpm --filter @oxagen/cli start -- --version # run from source (tsx)
109
+ # or
110
+ pnpm --filter @oxagen/cli build # compile once
111
+ node apps/cli/dist/index.js --version
49
112
  ```
50
113
 
51
- ### CI / headless
52
-
53
- When running in a non-interactive environment (CI, Docker, SSH pipe), pass
54
- `--token`, `--org`, and `--workspace` directly:
114
+ **Standalone bundle** (portable, no install, for CI and containers):
55
115
 
56
116
  ```bash
57
- oxagen login \
58
- --token oxg_live_... \
59
- --org my-org \
60
- --workspace main
117
+ pnpm --filter @oxagen/cli bundle
118
+ node apps/cli/dist-standalone/oxagen.mjs --version
61
119
  ```
62
120
 
63
- You can also set environment variables instead of flags (checked first, before
64
- config file):
121
+ > The standalone bundle is what
122
+ > `pnpm --filter @oxagen/cli publish:standalone` ships: the single-file bundle
123
+ > plus a clean manifest. Publishing `apps/cli/package.json` as-is does **not**
124
+ > work: its `bin` points at `dist/index.js`, whose shebang is
125
+ > `#!/usr/bin/env tsx`, and its `dependencies` still carry unpublished
126
+ > `workspace:*` packages.
65
127
 
66
- ```bash
67
- export OXAGEN_API_TOKEN=oxg_live_...
68
- export OXAGEN_ORG_ID=my-org
69
- export OXAGEN_WORKSPACE_ID=main
70
- ```
71
-
72
- ### Opt out of the browser on an interactive TTY
128
+ ## Authentication
73
129
 
74
130
  ```bash
75
- oxagen login --no-browser # prompts for token, org, and workspace inline
131
+ oxagen login # opens a browser, OAuth + org/workspace picker
132
+ oxagen login --token oxk_live_… --org acme --workspace main # CI / headless
133
+ oxagen logout # clear the saved session
134
+ oxagen graph search -q "workspace context" --limit 1 # confirm credentials work
76
135
  ```
77
136
 
78
- Your session is written to `~/.config/oxagen/config.json` and reused by all subsequent commands.
79
-
80
- ## Real-world scenarios
81
-
82
- ### Chat with the agent
83
-
84
- ```bash
85
- # One-shot message
86
- oxagen chat send "Summarize our Q2 pipeline and flag any blockers"
87
-
88
- # Resume an existing conversation
89
- oxagen chat send "Add the EMEA numbers too" --conversation conv_abc123
137
+ Create an account at https://app.oxagen.sh, mint an API key under
138
+ **Organization → Developer → Tokens**, then see
139
+ https://docs.oxagen.sh/docs/cli/account-setup for the full setup.
90
140
 
91
- # List recent conversations
92
- oxagen conversation list
141
+ ## Commands
93
142
 
94
- # Post directly to a known conversation ID
95
- oxagen conversation chat --conversation conv_abc123 --message "What changed since Monday?"
143
+ Run `oxagen --help` for the live, authoritative list; append `--help` to any
144
+ command for its flags. The full command tree lives in
145
+ `apps/cli/src/program.ts` and is documented at
146
+ https://docs.oxagen.sh/docs/cli/commands.
96
147
 
97
- # Rename a conversation for future reference
98
- oxagen conversation rename --conversation conv_abc123 --name "Q2 Pipeline Review"
99
- ```
148
+ Everything except `cost`, `logs` and `telemetry` talks to the platform API and
149
+ needs `oxagen login` first. `oxagen agent enroll` with a one-time enrollment
150
+ token needs no login either.
100
151
 
101
- ### Run a workflow from CI/CD
152
+ **Meter and bill**
102
153
 
103
154
  ```bash
104
- # Trigger a release-notes workflow from a GitHub Action or deploy hook
105
- oxagen workflow run \
106
- --workflow release-notes-generator \
107
- --input '{"version":"2.1.0","repo":"acme/platform"}'
108
-
109
- # Poll until it finishes
110
- oxagen workflow status --id wf_xyz789
111
-
112
- # Cancel if something goes wrong mid-run
113
- oxagen workflow cancel --id wf_xyz789
155
+ oxagen budget show # spend ceilings with their live burn
156
+ oxagen budget set --scope org --period month --limit 500
157
+ oxagen cost --in 200000 --out 40000 # project cost from the baked-in rate card
158
+ oxagen cost --rates # print the rate card
159
+ oxagen router stats|preview|policy # the verified-outcome market router
114
160
  ```
115
161
 
116
- ### Register an external MCP server
117
-
118
- Expose your own tools to the Oxagen agent. Once registered, the server appears in the web app's MCP picker and can be toggled on per-conversation.
162
+ **Explain** — traces and audit
119
163
 
120
164
  ```bash
121
- # Register a streamable-http server with bearer auth
122
- oxagen agent mcp register \
123
- --name "internal-data-api" \
124
- --url https://tools.internal.example.com/mcp \
125
- --transport streamable-http \
126
- --auth bearer \
127
- --auth-config '{"token":"sk-..."}'
128
-
129
- # Register a local stdio server
130
- oxagen agent mcp register \
131
- --name "filesystem-tools" \
132
- --url file:///usr/local/bin/my-mcp-server \
133
- --transport stdio
134
-
135
- # Check health and discovered tool counts
136
- oxagen agent mcp list
165
+ oxagen trace <executionId> # a run as a span tree (steps, tool calls, children)
166
+ oxagen logs # tail the CLI's own debug log
137
167
  ```
138
168
 
139
- ### Connect Claude Code to Oxagen's MCP server
140
-
141
- The Oxagen platform itself is an MCP server. Connect Claude Code, Claude Desktop, or Cursor to it using an API key.
142
-
143
- **Claude Code**
169
+ **Ground** — knowledge graph and agent memory
144
170
 
145
171
  ```bash
146
- oxagen api-key create # copy the key that's printed
147
-
148
- claude mcp add oxagen \
149
- --transport http \
150
- --url https://mcp.oxagen.sh/mcp \
151
- --header "Authorization: Bearer $OXAGEN_API_KEY"
152
- ```
153
-
154
- **Claude Desktop** — add to `claude_desktop_config.json`:
155
-
156
- ```json
157
- {
158
- "mcpServers": {
159
- "oxagen": {
160
- "command": "npx",
161
- "args": ["-y", "@oxagen/mcp-client"],
162
- "env": { "OXAGEN_API_KEY": "your-key-here" }
163
- }
164
- }
165
- }
172
+ oxagen graph search -q "…"
173
+ oxagen memory list|show|promote|dismiss|import # the memories agents wrote in their harnesses
166
174
  ```
167
175
 
168
- You can also retrieve connection instructions directly:
176
+ **Govern** — workspace, agents, credentials
169
177
 
170
178
  ```bash
171
- oxagen system install instructions
179
+ oxagen init --org <org> --workspace <ws> # link this project to an org + workspace
180
+ oxagen pull # write the workspace's published steering into .oxagen/
181
+ oxagen steering import <paths...> # preview Markdown files as steering records and policies, then --yes opens the PR
182
+ oxagen agent env bind|unbind|list # bind an agent to an environment
183
+ oxagen env list|get|create|update|rm|set-default # workspace environments
184
+ oxagen secret list|set|rm|reveal|import|export # encrypted credential vault
185
+ oxagen conversation export <id> # export a conversation as md/pdf
186
+ oxagen asset upload <url> # ingest a binary asset
172
187
  ```
173
188
 
174
- ### Generate images and media
189
+ **Wrap agents on this machine**
175
190
 
176
191
  ```bash
177
- # Generate an image and print the URL
178
- oxagen image generate --prompt "isometric diagram of a multi-agent system"
179
-
180
- # Generate and save to disk
181
- oxagen image generate \
182
- --prompt "product screenshot mockup, clean UI" \
183
- --model gpt-image-1 \
184
- --output ./assets/hero.png
185
-
186
- # Analyze an existing image
187
- oxagen image analyze --image ./screenshot.png
188
-
189
- # Generate a video clip
190
- oxagen video generate --prompt "short animation of data flowing through a pipeline"
191
-
192
- # Generate an SVG illustration
193
- oxagen svg generate --prompt "simple icon of a robot holding a document"
192
+ oxagen agent enroll --harness claude-code,codex # hook these harnesses and install the collector service
193
+ oxagen agent status # enrollments, collector, hooks, bundle, spool
194
+ oxagen agent verify --harness codex # one headless turn, confirmed chained
195
+ oxagen agent run --name my-agent -- ./my-agent # one custom agent session under Oxagen
196
+ oxagen agent detect # which harnesses this machine has
197
+ oxagen agent reassign|unenroll|export|hosts # move, remove, export, list machines
194
198
  ```
195
199
 
196
- ### Onboard a new team
197
-
198
- ```bash
199
- # Create the org and workspace
200
- oxagen org create --name "Acme Corp"
201
- oxagen workspace create --name "Engineering" --org acme-corp
202
-
203
- # Invite members
204
- oxagen workspace invite send --email alice@acme.com --org acme-corp --workspace engineering
205
- oxagen workspace invite send --email bob@acme.com --org acme-corp --workspace engineering
206
-
207
- # Promote to admin after they accept
208
- oxagen org member role change --user user_alice --role admin --org acme-corp
209
-
210
- # List who's in the workspace
211
- oxagen workspace member list --org acme-corp --workspace engineering
212
- ```
200
+ `oxagen hook`, `oxagen daemon`, `oxagen mcp-stdio`, `oxagen credential`,
201
+ `oxagen github`, and `oxagen arp` are hidden from help. The hooks, the user
202
+ service, and the connected apps that enrollment installs run them.
213
203
 
214
- ### Work with documents
204
+ **Telemetry**
215
205
 
216
206
  ```bash
217
- # Create a document
218
- oxagen document create --title "Architecture Overview" --content "# Overview\n..."
219
-
220
- # Generate a document from a prompt (agent writes it)
221
- oxagen documents generate --prompt "Write a technical spec for our billing reconciliation system"
222
-
223
- # Export to PDF
224
- oxagen documents pdf create --document doc_abc123 --output spec.pdf
225
-
226
- # List all documents
227
- oxagen document list
207
+ oxagen telemetry [on|off|status] # anonymous usage telemetry (on by default)
228
208
  ```
229
209
 
230
- ### Manage plugins
210
+ **Auth**
231
211
 
232
212
  ```bash
233
- # Browse what's available
234
- oxagen plugin catalog browse
235
-
236
- # Install for the org
237
- oxagen plugin org install --listing listing_linear
238
-
239
- # Enable for a specific workspace only
240
- oxagen plugin workspace set-enabled --plugin plugin_xyz --enabled true
241
-
242
- # Set OAuth credentials
243
- oxagen plugin credential set-secret --plugin plugin_linear --key access_token --value sk-...
244
-
245
- # List what's installed
246
- oxagen plugin org list
247
-
248
- # Remove
249
- oxagen plugin org uninstall --listing listing_linear
250
- ```
251
-
252
- ### Run background agent tasks
253
-
254
- ```bash
255
- # Start a long-running analysis task
256
- oxagen agent task background start \
257
- --description "Analyze all GitHub issues opened this week and produce a triage report"
258
-
259
- # Check progress
260
- oxagen agent task background read --task task_abc123
261
-
262
- # Cancel
263
- oxagen agent task background cancel --task task_abc123
264
- ```
265
-
266
- ### Automations
267
-
268
- ```bash
269
- # Create a scheduled automation
270
- oxagen automation create \
271
- --name "daily-standup-summary" \
272
- --trigger '{"type":"cron","schedule":"0 9 * * 1-5"}'
273
-
274
- # Trigger manually (e.g., from a webhook handler)
275
- oxagen automation trigger --automation auto_abc123
276
-
277
- # List all automations
278
- oxagen automation list
279
- ```
280
-
281
- ---
282
-
283
- ## All commands
284
-
285
- ```
286
213
  oxagen login / logout
287
-
288
- oxagen chat send
289
- oxagen conversation list / rename / archive / delete / purge / chat
290
-
291
- oxagen workflow run / status / cancel
292
- oxagen automation create / list / trigger
293
-
294
- oxagen agent mcp register / list
295
- oxagen agent memory recall / write
296
- oxagen agent skill list
297
- oxagen agent task background start / read / cancel
298
- oxagen agent tool list
299
- oxagen agent plan create / approve
300
- oxagen agent approval resolve
301
-
302
- oxagen image generate / analyze / create / list
303
- oxagen video generate
304
- oxagen svg generate
305
- oxagen documents generate / pdf create
306
- oxagen document create / list / read
307
- oxagen archive create
308
- oxagen asset upload
309
- oxagen form create / fill / submit
310
-
311
- oxagen org create / list
312
- oxagen org member add / remove / role change / invite accept / invite decline
313
- oxagen workspace create / list
314
- oxagen workspace invite send
315
- oxagen workspace member list
316
- oxagen workspace model settings read / write
317
-
318
- oxagen plugin catalog browse / get
319
- oxagen plugin org install / install-bulk / uninstall / list / set-enabled
320
- oxagen plugin workspace set-enabled
321
- oxagen plugin registry add / list / remove / sync
322
- oxagen plugin credential reauth / set-secret
323
- oxagen plugin denylist add / remove
324
- oxagen plugin settings set-auth-alerts
325
-
326
- oxagen billing status
327
- oxagen billing credits purchase
328
- oxagen billing subscription read / upgrade start
329
-
330
- oxagen api-key create / revoke
331
-
332
- oxagen skill workspace list
333
- oxagen user preferences read / write
334
- oxagen notifications list / mark
335
- oxagen privacy export / erase
336
- oxagen system install instructions
337
214
  ```
338
215
 
339
- Pass `--help` to any command for flags and usage:
216
+ ### Retired commands
340
217
 
341
- ```bash
342
- oxagen workflow run --help
343
- ```
218
+ `sandbox`, `sandbox-template`, `code`, `eval`, `file-lock`, `a2a`, `models`,
219
+ `skill`, `prompt`, `command`, `rules`, `settings`, `config`, `mcp`, `import`,
220
+ `pr`, `recover`, `lineage`, plus the interactive surfaces (`view`, `agents`, `solve`,
221
+ `replay`, `fleet`) and a bare `oxagen "<prompt>"`. Each prints a
222
+ retirement notice and exits non-zero. Use the `stella` CLI instead.
344
223
 
345
- ---
224
+ The CLI no longer reads `.oxagen/settings.json` — that file configured the
225
+ local coding agent. The only project-local state it writes is
226
+ `.oxagen/workspace.json` (the org + workspace binding `oxagen init` creates).
346
227
 
347
228
  ## Configuration
348
229
 
349
- Session token and defaults are stored in `~/.config/oxagen/`. To avoid passing org and workspace IDs on every command, set these environment variables:
230
+ Session token and defaults live in `~/.config/oxagen/config.json`. Set these
231
+ to avoid passing org/workspace on every command (env vars win over the config
232
+ file):
350
233
 
351
234
  ```bash
352
- export OXAGEN_ORG_ID=org_abc123
353
- export OXAGEN_WORKSPACE_ID=ws_xyz789
354
- export OXAGEN_API_TOKEN=sk-...
235
+ export OXAGEN_ORG_ID=your-org-slug
236
+ export OXAGEN_WORKSPACE_ID=your-workspace-slug
237
+ export OXAGEN_API_TOKEN=oxk_live_…
238
+ export OXAGEN_API_URL=https://api.oxagen.sh # default; override for self-hosted/staging
355
239
  ```
356
240
 
357
- The CLI checks environment variables first, then falls back to saved config, then to command-line flags:
358
-
359
- ```bash
360
- # Uses OXAGEN_WORKSPACE_ID env var if set, falls back to ~/.config/oxagen/config.json
361
- oxagen automation list
362
-
363
- # Overrides env var with explicit flag
364
- oxagen automation list --workspace ws_different456
365
-
366
- # Authenticate and save defaults to config (opens browser)
367
- oxagen login
368
- ```
369
-
370
- ---
371
-
372
241
  ## Telemetry
373
242
 
374
243
  The CLI collects anonymous usage telemetry (command names, durations, coarse
375
- success/error categories, OS/arch) to improve the product. It **never**
376
- collects code, prompts, file contents, file paths, model slugs, API keys, or
377
- any other personal or identifying data — see [TELEMETRY.md](../../TELEMETRY.md)
378
- for the exact field list.
379
-
380
- Telemetry is **on by default**. Opt out any time:
381
-
382
- ```bash
383
- oxagen telemetry off # persists the choice to ~/.config/oxagen/config.json
384
- oxagen telemetry status # show enabled/disabled, install id, ingest endpoint
385
- oxagen telemetry on # re-enable
386
-
387
- # or, without touching config:
388
- export OXAGEN_TELEMETRY=0
389
- export DO_NOT_TRACK=1 # https://consoledonottrack.com/
390
- ```
391
-
392
- ---
393
-
394
- ## Troubleshooting
395
-
396
- **`command not found: oxagen`** — ensure global install succeeded:
244
+ success/error categories, OS/arch) to improve the product. It never collects
245
+ code, prompts, file contents, file paths, model slugs, API keys, or other
246
+ personal data. On by default:
397
247
 
398
248
  ```bash
399
- npm list -g @oxagen/cli
400
- npm install -g @oxagen/cli
249
+ oxagen telemetry off
250
+ oxagen telemetry status
251
+ export DO_NOT_TRACK=1 # https://consoledonottrack.com/
401
252
  ```
402
253
 
403
- **Auth failures** — clear and re-authenticate:
404
-
405
- ```bash
406
- oxagen logout && oxagen login
407
- ```
408
-
409
- ---
410
-
411
254
  ## Development
412
255
 
413
- ### Install the `oxagen` binary onto your PATH (live, auto-rebuilding)
414
-
415
- Run this once from the **repo root** and leave it running:
256
+ Run this once from the **repo root** and leave it running — it builds the
257
+ package, installs an `oxagen` binary onto your PATH, then watches
258
+ `apps/cli/src/**` and rebuilds on every save:
416
259
 
417
260
  ```bash
418
261
  pnpm cli:dev
419
262
  ```
420
263
 
421
- This builds the package, installs an `oxagen` binary onto your PATH, then watches
422
- `apps/cli/src/**` and rebuilds on every save. After it prints `watching for
423
- changes…`, open a second terminal and use `oxagen` like a published binary — every
424
- source edit is live on the next invocation, with no reinstall step:
425
-
426
- ```bash
427
- oxagen --version
428
- oxagen --help
429
- oxagen login
430
- ```
431
-
432
- **How it works.** The installed binary is a symlink from a PATH directory
433
- (`~/.local/bin/oxagen` when that's on your PATH) into the package's build output
434
- (`apps/cli/dist/index.js`). `tsc --watch` rewrites `dist/` in place on every change,
435
- and because a symlink always resolves to its target's current contents, the on-PATH
436
- `oxagen` is always the freshly-built code — the "reinstall" is automatic.
437
-
438
- Want a one-shot install without the watcher (build once, link, exit)?
264
+ Open a second terminal and use `oxagen` like a published binary; every source
265
+ edit is live on the next invocation. One-shot install without the watcher:
439
266
 
440
267
  ```bash
441
268
  pnpm cli:install
442
269
  ```
443
270
 
444
- If `cli:dev` warns that the chosen directory isn't on your PATH, add it to your shell
445
- profile (the script prints the exact line), e.g.:
271
+ Other workflows:
446
272
 
447
273
  ```bash
448
- export PATH="$HOME/.local/bin:$PATH"
274
+ pnpm -C apps/cli dev -- graph search -q "workspace context" --limit 1
275
+ pnpm -C apps/cli build # compile to dist/ once
276
+ pnpm -C apps/cli bundle # standalone single-file bundle
277
+ pnpm -C apps/cli test:unit src/commands/steering.test.ts # one file; CI runs the suite
278
+ pnpm -C apps/cli lint # lint (zero warnings enforced)
279
+ pnpm -C apps/cli typecheck # type-check
449
280
  ```
450
281
 
451
- To uninstall the dev binary, remove the symlink: `rm "$(command -v oxagen)"`.
452
-
453
- ### Other workflows
454
-
455
- ```bash
456
- pnpm -C apps/cli dev -- auth whoami # run a single command from source with tsx
457
- pnpm -C apps/cli build # compile to dist/ once
458
- pnpm -C apps/cli test:unit # run unit tests
459
- pnpm -C apps/cli lint # lint (zero warnings enforced)
460
- pnpm -C apps/cli typecheck # type-check
461
- ```
462
-
463
- Releases are managed monorepo-wide via `pnpm release:patch|minor|major`, which bumps all packages to the same version and syncs to Vercel.
464
-
465
- ### Known gaps
466
-
467
- See [`GAPS.md`](./GAPS.md) for the tracked completeness, capability-parity, and `--help`
468
- documentation gaps and their prioritized fix plan.
469
-
470
- ---
282
+ Releases are managed monorepo-wide via `pnpm release:patch|minor|major`, which
283
+ bumps all packages to the same version and syncs it to Vercel.
471
284
 
472
285
  ## Support
473
286
 
474
287
  - Docs: https://docs.oxagen.sh
475
- - Issues: https://github.com/oxagen/oxagen-monorepo/issues
476
- - Email: support@oxagen.ai
288
+ - Issues: https://github.com/oxageninc/product/issues
477
289
 
478
290
  ## License
479
291
 
480
- MIT
292
+ Proprietary — see [`LICENSE`](../../LICENSE).