@agora-build/atem 0.6.10 → 0.6.13
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 +112 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,6 +16,12 @@ curl -fsSL https://dl.agora.build/atem/install.sh | bash
|
|
|
16
16
|
|
|
17
17
|
Both download a prebuilt binary for your platform (linux-x64, linux-arm64, darwin-x64, darwin-arm64).
|
|
18
18
|
|
|
19
|
+
The npm package downloads the binary for its published version. Documentation
|
|
20
|
+
on GitHub `main` can describe features newer than the latest release. Check
|
|
21
|
+
`atem --version` and `atem cred --help`; use a current release that includes
|
|
22
|
+
the commands you need, or build from source below. Run a source build using
|
|
23
|
+
its explicit path, such as `./target/release/atem`, to avoid an older installed CLI.
|
|
24
|
+
|
|
19
25
|
## Commands
|
|
20
26
|
|
|
21
27
|
```bash
|
|
@@ -28,8 +34,63 @@ atem repl # Interactive REPL with AI command inter
|
|
|
28
34
|
```bash
|
|
29
35
|
atem login # Log in with Agora Console (opens browser)
|
|
30
36
|
atem logout # Log out from SSO
|
|
37
|
+
atem pair # Pair with Astation, then verify this device
|
|
38
|
+
atem pair --save # Same, and keep credentials for offline use
|
|
39
|
+
atem unpair [--yes] # Remove all Astation pairings (asks first)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`atem login` unlocks a limited set: project list, tokens for the active
|
|
43
|
+
project, and the dev servers (`serv rtc`, `serv convo`, `serv webhooks`).
|
|
44
|
+
Pairing with Astation unlocks the full set: vault, sync, memory, skills,
|
|
45
|
+
`atem cred`, and Astation-driven remote agent control, voice coding, mark
|
|
46
|
+
tasks and diagrams. `serv files`, `config`, and tokens from
|
|
47
|
+
`AGORA_APP_ID`/`AGORA_APP_CERTIFICATE` need neither.
|
|
48
|
+
|
|
49
|
+
`atem pair` receives your Agora login from Astation, then verifies the device:
|
|
50
|
+
atem and your Mac each show a 12-character safety code. If they match, type
|
|
51
|
+
`y` here; on the Mac click **Codes Match**, then approve with Touch ID.
|
|
52
|
+
Either side can finish first. atem reads that `y` from the terminal itself,
|
|
53
|
+
never from piped input or keys typed earlier, so run `atem pair` in an
|
|
54
|
+
interactive terminal. If verification fails, the pairing stays saved, Astation
|
|
55
|
+
is told, and `atem pair` exits nonzero; run it again to verify. A connected or SSO-paired session alone does not
|
|
56
|
+
mean the device is verified; check `atem cred status`. With `--save`
|
|
57
|
+
the credentials keep working when Astation disconnects; without it they stop
|
|
58
|
+
5 minutes after the disconnect (atem asks when `--save` isn't given).
|
|
59
|
+
|
|
60
|
+
### Device keys (`atem cred`)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
atem cred status # Show whether this device is verified, its home Astation and its key agent
|
|
64
|
+
atem cred unlock # Unlock this device's keys (approve with Touch ID on your Mac)
|
|
65
|
+
atem cred lock # Wipe unlocked keys and stop the key agent
|
|
66
|
+
atem cred projects # Send known Git projects to Astation's credential picker (keys must be unlocked)
|
|
31
67
|
```
|
|
32
68
|
|
|
69
|
+
This device's keys are sealed on disk under a storage key that only the paired
|
|
70
|
+
Mac (the home Astation) holds. `atem cred unlock` asks the Mac for it (Touch
|
|
71
|
+
ID) and starts a background `atem key-agent` that holds the keys in memory.
|
|
72
|
+
`atem cred lock` wipes them and stops the agent. After upgrading atem, run
|
|
73
|
+
`atem cred lock` then `atem cred unlock` to pick up the new agent.
|
|
74
|
+
|
|
75
|
+
`atem cred projects` sends this repo's Git remote, and the project names atem
|
|
76
|
+
remembers, to Astation's credential picker, encrypted to your Mac. An
|
|
77
|
+
unlocked atem also sends it on its own whenever it connects to Astation (the
|
|
78
|
+
TUI, `atem pair`, and right after `atem cred unlock`), so you need
|
|
79
|
+
`atem cred projects` only to send it right away from another repo. Retrieving
|
|
80
|
+
values from Astation's local Credentials store (`atem cred get/list`) is not
|
|
81
|
+
available yet; it is described in the
|
|
82
|
+
[encryption design](https://github.com/Agora-Build/Atem/blob/main/designs/e2e-encryption.md).
|
|
83
|
+
|
|
84
|
+
Updated clients and key agents retain the remote's original capitalization,
|
|
85
|
+
such as `github.com/Agora-Build/Atem`; project identity and duplicate checks
|
|
86
|
+
ignore case. Older clients/agents may report lowercase names. Reports are
|
|
87
|
+
encrypted even when memory encryption is off and can remain in the picker
|
|
88
|
+
after the sending command exits. You can also enter another Git remote in
|
|
89
|
+
Astation's Credentials editor.
|
|
90
|
+
|
|
91
|
+
See [pairing, unlocking and project suggestions](https://github.com/Agora-Build/Atem/blob/main/docs/credentials.md)
|
|
92
|
+
for the steps when Atem runs on another machine and for upgrade troubleshooting.
|
|
93
|
+
|
|
33
94
|
### Tokens
|
|
34
95
|
|
|
35
96
|
```bash
|
|
@@ -65,6 +126,22 @@ atem config convo --validate # Validate existing config without modif
|
|
|
65
126
|
atem config convo --config <PATH> # Use a specific config file
|
|
66
127
|
```
|
|
67
128
|
|
|
129
|
+
### Vault (shared cross-agent context)
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
atem vault new --summary "auth refactor context" # Create a vault, prints its id
|
|
133
|
+
atem vault list # List vaults you can read
|
|
134
|
+
atem vault read --vault-id <id> # Current contents
|
|
135
|
+
atem vault read --vault-id <id> --history # Every version (shown eN vM)
|
|
136
|
+
atem vault read --vault-id <id> --format plain # Bare text (pipe into a prompt)
|
|
137
|
+
atem vault write --vault-id <id> --text "decided: JWT in cookie" # Append an entry
|
|
138
|
+
atem vault write --vault-id <id> --entry-id 3 --text "..." # Override entry e3
|
|
139
|
+
atem vault set-summary --vault-id <id> --text "..." # Update the summary
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Requires pairing with Astation. Lets multiple atems (each driving an agent)
|
|
143
|
+
share a versioned, append-only context store hosted on the Astation relay.
|
|
144
|
+
|
|
68
145
|
### Memory & Skills (shared across agents and machines)
|
|
69
146
|
|
|
70
147
|
Requires pairing with Astation. Agents learn from each other: facts and skills
|
|
@@ -83,12 +160,16 @@ atem memory search "valkey" # Local full-text search (offli
|
|
|
83
160
|
atem memory replace <id> "the fact as it is now" # New fact replaces the old one (history kept)
|
|
84
161
|
atem memory invalidate <id> # Mark outdated without a replacement
|
|
85
162
|
atem memory rm <id> # Remove everywhere
|
|
163
|
+
atem memory purge <id> [--yes] # Remove a fact that contained a credential, stop re-harvesting it (asks first)
|
|
164
|
+
atem memory apply # Rewrite the managed blocks and skills from the local store
|
|
86
165
|
atem memory status # Account, machine, project, pending changes
|
|
87
166
|
|
|
88
167
|
atem skill add ./my-skill # Directory with SKILL.md (global by default)
|
|
89
168
|
atem skill list
|
|
169
|
+
atem skill rm <name> # Remove everywhere
|
|
90
170
|
atem skill history <name> # Every version, newest first
|
|
91
171
|
atem skill restore <name> --version 3 # Re-push an old version as a new one
|
|
172
|
+
atem skill purge <name> --version 3 [--yes] # Erase versions that contained a credential (or --all-versions; asks first)
|
|
92
173
|
```
|
|
93
174
|
|
|
94
175
|
Listings show short ids like `8245ecf6…e6fe` (first 8 + last 4 characters).
|
|
@@ -103,7 +184,33 @@ Memories are applied as a managed block in `~/.claude/CLAUDE.md`,
|
|
|
103
184
|
`~/.codex/AGENTS.md` and `<repo>/CLAUDE.local.md`; skills go to
|
|
104
185
|
`.claude/skills` and `.agents/skills`. Files tracked by git are never written.
|
|
105
186
|
Anything that looks like a credential value is refused; save the
|
|
106
|
-
credential's name, never its value. See
|
|
187
|
+
credential's name, never its value. See the [memory design](https://github.com/Agora-Build/Atem/blob/main/designs/atem-memory.md).
|
|
188
|
+
|
|
189
|
+
Works with end-to-end encryption on or off. When it is on, changes sync only
|
|
190
|
+
while the device is unlocked (`atem cred unlock`); see below.
|
|
191
|
+
|
|
192
|
+
### End-to-end encryption
|
|
193
|
+
|
|
194
|
+
Turned on or off in Astation (Settings > Security > End-to-End Encryption).
|
|
195
|
+
When it is on, memory content, skill files and vault content are encrypted on
|
|
196
|
+
this machine before they reach the relay, and project names become keyed hashes.
|
|
197
|
+
Your Mac, verified Atem devices holding the account key, and holders of the
|
|
198
|
+
recovery material can decrypt that content. The relay still sees routing identifiers and metadata,
|
|
199
|
+
such as timestamps and ciphertext sizes; it is not authoritative for device
|
|
200
|
+
trust or encryption state. Migration cannot prove that a server erased old
|
|
201
|
+
plaintext backups.
|
|
202
|
+
|
|
203
|
+
The device must be verified (`atem pair`) and unlocked (`atem cred unlock`).
|
|
204
|
+
While it is locked, `atem sync` keeps changes queued. Switching encryption on
|
|
205
|
+
or off migrates existing data; each verified atem finishes its part at its next
|
|
206
|
+
`atem cred unlock` (`atem sync` alone doesn't contact Astation). **Turning on**
|
|
207
|
+
or **Turning off** is a pending migration, even when the field counts show
|
|
208
|
+
no remaining plaintext or obsolete fields. Astation commits the final state
|
|
209
|
+
after accepting a verified migration completion; the CLI can then disconnect.
|
|
210
|
+
Turning encryption off migrates shared data to plaintext; local Astation
|
|
211
|
+
Keychain credentials keep their protection. The local `knowledge.db` stays
|
|
212
|
+
plain text (mode 0600). See the [user guide](https://github.com/Agora-Build/Atem/blob/main/docs/credentials.md)
|
|
213
|
+
and [protocol design](https://github.com/Agora-Build/Atem/blob/main/designs/e2e-encryption.md).
|
|
107
214
|
|
|
108
215
|
### Dev Servers
|
|
109
216
|
|
|
@@ -119,6 +226,8 @@ atem serv rtc --background # Run as background daemon
|
|
|
119
226
|
atem serv diagrams # Host diagrams from SQLite (HTTP)
|
|
120
227
|
atem serv diagrams --port 9000
|
|
121
228
|
atem serv diagrams --background
|
|
229
|
+
atem serv files ~/docs # Serve a directory or file over HTTPS (Markdown rendered)
|
|
230
|
+
atem serv files ~/docs --background # Port auto-picked; reused next run
|
|
122
231
|
atem serv webhooks # Receive Agora webhooks locally (auto-tunneled via ngrok)
|
|
123
232
|
atem serv webhooks --no-tunnel # Local listener only — bring your own tunnel
|
|
124
233
|
atem serv webhooks --background # Run as background daemon
|
|
@@ -142,6 +251,8 @@ done
|
|
|
142
251
|
|
|
143
252
|
**`serv diagrams`** — SQLite-backed HTTP server for hosting AI-generated HTML diagrams.
|
|
144
253
|
|
|
254
|
+
**`serv files`** — serves a directory (or a single file) over HTTPS. Markdown is rendered to HTML; append `?raw=1` to any URL for the raw bytes. Useful for browsing AI-generated docs on a remote machine.
|
|
255
|
+
|
|
145
256
|
**`serv webhooks`** — local receiver for Agora webhook events (ConvoAI: `agent_joined`, `agent_left`, `agent_history`, `agent_error`, `agent_metrics`, …; RTC NCS events). Validates `Agora-Signature-V2` (HMAC-SHA256) when a `secret` is configured in `webhooks.toml`; accepts unsigned events otherwise with a warning. Live web console at `http://127.0.0.1:9090/` shows incoming events; each event also prints a one-line summary to stdout. Default tunnel provider is **ngrok**; set `tunnel_provider = "cloudflared"` for zero-auth quick tunnels. Use `--no-tunnel` if you're running cloudflared / ngrok separately for stable URLs across atem restarts.
|
|
146
257
|
|
|
147
258
|
**Channel placeholders** — `--channel` accepts `{appid}` (first 12 chars of the active app id) and `{ts}` (unix epoch seconds at startup). Useful in for-loops to match the auto-gen channel format.
|