@openape/apes 0.14.3 → 0.15.1
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
|
@@ -149,9 +149,18 @@ Goodbye.
|
|
|
149
149
|
| `apes login` | PKCE browser login or ed25519 key-based agent login |
|
|
150
150
|
| `apes logout` | Clear stored auth |
|
|
151
151
|
| `apes whoami` | Show current identity |
|
|
152
|
-
| `apes enroll` | Enroll an agent at the IdP |
|
|
152
|
+
| `apes enroll` | Enroll an agent at the IdP (interactive, browser approval) |
|
|
153
153
|
| `apes register-user` | Register a new human user |
|
|
154
154
|
|
|
155
|
+
### Agents
|
|
156
|
+
|
|
157
|
+
| Command | Description |
|
|
158
|
+
|---|---|
|
|
159
|
+
| `apes agents register --name <n> --public-key <line>` | Register an agent at the IdP using a public key supplied by the agent. Returns the assigned email so the agent can `apes login` from its own machine. |
|
|
160
|
+
| `apes agents spawn <n>` | macOS-only. Provision a local agent end-to-end: macOS user, ed25519 keypair, IdP registration, agent token, ape-shell as login shell, Claude Code Bash hook. Privileged setup runs through `apes run --as root` (DDISA-approved). |
|
|
161
|
+
| `apes agents list [--json] [--include-inactive]` | List agents owned by the current user, with local OS-user cross-reference. |
|
|
162
|
+
| `apes agents destroy <n> [--force] [--soft] [--keep-os-user]` | Tear down an agent. Idempotent; safe for CI with `--force`. |
|
|
163
|
+
|
|
155
164
|
### Grants
|
|
156
165
|
|
|
157
166
|
| Command | Description |
|
|
@@ -185,6 +194,54 @@ apes config get defaults.idp
|
|
|
185
194
|
apes config set defaults.idp https://id.example.com
|
|
186
195
|
```
|
|
187
196
|
|
|
197
|
+
## Spawning ephemeral agents (macOS)
|
|
198
|
+
|
|
199
|
+
`apes agents spawn <name>` provisions a complete local agent in one shot:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
apes login patrick@hofmann.eco
|
|
203
|
+
apes agents spawn agent-a
|
|
204
|
+
# → DDISA approval prompt for the as=root grant (one-time per spawn)
|
|
205
|
+
# → "Agent agent-a spawned. Run: apes run --as agent-a -- claude --session-name agent-a --dangerously-skip-permissions"
|
|
206
|
+
|
|
207
|
+
apes agents list
|
|
208
|
+
# NAME EMAIL ACTIVE OS-USER HOME
|
|
209
|
+
# agent-a agent-a+patrick+hofmann_eco@id.openape.ai ✓ ✓ /Users/agent-a
|
|
210
|
+
|
|
211
|
+
apes run --as agent-a -- claude --session-name agent-a --dangerously-skip-permissions
|
|
212
|
+
# Claude Code runs as agent-a; every Bash tool call is rewritten to
|
|
213
|
+
# `ape-shell -c <cmd>` by ~/.claude/hooks/bash-via-ape-shell.sh, so the
|
|
214
|
+
# agent cannot run a shell command without an apes grant.
|
|
215
|
+
|
|
216
|
+
apes agents destroy agent-a --force
|
|
217
|
+
# → DDISA approval for the as=root teardown grant; agent and OS user are gone
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Pre-flight requirements (one-time):
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
echo "$(which ape-shell)" | sudo tee -a /etc/shells
|
|
224
|
+
# `escapes` (Rust setuid binary) installed on PATH for `apes run --as root`
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
For remote agents that run on another machine, register without provisioning:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
# On the agent's machine:
|
|
231
|
+
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
|
|
232
|
+
|
|
233
|
+
# On your machine (logged in as the parent):
|
|
234
|
+
apes agents register --name agent-x --public-key "$(ssh agent-host cat ~/.ssh/id_ed25519.pub)" --json
|
|
235
|
+
# → {"email":"agent-x+patrick+hofmann_eco@id.openape.ai","name":"agent-x","owner":"patrick@hofmann.eco","approver":"patrick@hofmann.eco","idp":"https://id.openape.ai"}
|
|
236
|
+
|
|
237
|
+
# Tell the agent to log in:
|
|
238
|
+
# apes login --idp https://id.openape.ai --email agent-x+patrick+hofmann_eco@id.openape.ai --key ~/.ssh/id_ed25519
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
`destroy --keep-os-user --force` reverses just the IdP side without invoking
|
|
242
|
+
`apes run --as root`, so it's safe for CI loops where no DDISA approver is
|
|
243
|
+
available.
|
|
244
|
+
|
|
188
245
|
## MCP Server
|
|
189
246
|
|
|
190
247
|
```bash
|