@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 +198 -386
- package/oxagen.mjs +106485 -169151
- package/package.json +9 -13
- package/tree-sitter-python.wasm +0 -0
- package/tree-sitter-typescript.wasm +0 -0
- package/tree-sitter.wasm +0 -0
package/README.md
CHANGED
|
@@ -1,480 +1,292 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
83
|
+
pnpm --filter @oxagen/cli test:unit src/commands/steering.test.ts
|
|
15
84
|
```
|
|
16
85
|
|
|
17
|
-
|
|
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
|
-
|
|
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
|
-
|
|
91
|
+
Three ways, in the order the docs recommend
|
|
92
|
+
(https://docs.oxagen.sh/docs/cli/installation):
|
|
39
93
|
|
|
40
|
-
|
|
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
|
-
|
|
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
|
-
|
|
48
|
-
oxagen
|
|
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
|
-
|
|
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
|
|
58
|
-
|
|
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
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
92
|
-
oxagen conversation list
|
|
141
|
+
## Commands
|
|
93
142
|
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
98
|
-
oxagen
|
|
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
|
-
|
|
152
|
+
**Meter and bill**
|
|
102
153
|
|
|
103
154
|
```bash
|
|
104
|
-
|
|
105
|
-
oxagen
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
122
|
-
oxagen
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
176
|
+
**Govern** — workspace, agents, credentials
|
|
169
177
|
|
|
170
178
|
```bash
|
|
171
|
-
oxagen
|
|
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
|
-
|
|
189
|
+
**Wrap agents on this machine**
|
|
175
190
|
|
|
176
191
|
```bash
|
|
177
|
-
#
|
|
178
|
-
oxagen
|
|
179
|
-
|
|
180
|
-
#
|
|
181
|
-
oxagen
|
|
182
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
204
|
+
**Telemetry**
|
|
215
205
|
|
|
216
206
|
```bash
|
|
217
|
-
#
|
|
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
|
-
|
|
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
|
-
|
|
216
|
+
### Retired commands
|
|
340
217
|
|
|
341
|
-
|
|
342
|
-
|
|
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
|
|
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=
|
|
353
|
-
export OXAGEN_WORKSPACE_ID=
|
|
354
|
-
export OXAGEN_API_TOKEN=
|
|
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
|
|
376
|
-
|
|
377
|
-
|
|
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
|
-
|
|
400
|
-
|
|
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
|
-
|
|
414
|
-
|
|
415
|
-
|
|
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
|
-
|
|
422
|
-
|
|
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
|
-
|
|
445
|
-
profile (the script prints the exact line), e.g.:
|
|
271
|
+
Other workflows:
|
|
446
272
|
|
|
447
273
|
```bash
|
|
448
|
-
|
|
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
|
-
|
|
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/
|
|
476
|
-
- Email: support@oxagen.ai
|
|
288
|
+
- Issues: https://github.com/oxageninc/product/issues
|
|
477
289
|
|
|
478
290
|
## License
|
|
479
291
|
|
|
480
|
-
|
|
292
|
+
Proprietary — see [`LICENSE`](../../LICENSE).
|