@agora-build/atem 0.6.10 → 0.6.12

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.
Files changed (2) hide show
  1. package/README.md +109 -1
  2. 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,60 @@ 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 # Remove all Astation pairings
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. A connected or SSO-paired session alone does not
53
+ mean the device is verified; check `atem cred status`. With `--save`
54
+ the credentials keep working when Astation disconnects; without it they stop
55
+ 5 minutes after the disconnect (atem asks when `--save` isn't given).
56
+
57
+ ### Device keys (`atem cred`)
58
+
59
+ ```bash
60
+ atem cred status # Show whether this device is verified, its home Astation and its key agent
61
+ atem cred unlock # Unlock this device's keys (approve with Touch ID on your Mac)
62
+ atem cred lock # Wipe unlocked keys and stop the key agent
63
+ atem cred projects # Send known Git projects to Astation's credential picker (keys must be unlocked)
31
64
  ```
32
65
 
66
+ This device's keys are sealed on disk under a storage key that only the paired
67
+ Mac (the home Astation) holds. `atem cred unlock` asks the Mac for it (Touch
68
+ ID) and starts a background `atem key-agent` that holds the keys in memory.
69
+ `atem cred lock` wipes them and stops the agent. After upgrading atem, run
70
+ `atem cred lock` then `atem cred unlock` to pick up the new agent.
71
+
72
+ `atem cred projects` sends this repo's Git remote, and the project names atem
73
+ remembers, to Astation's credential picker, encrypted to your Mac. An
74
+ unlocked atem also sends it on its own whenever it connects to Astation (the
75
+ TUI, `atem pair`, and right after `atem cred unlock`), so you need
76
+ `atem cred projects` only to send it right away from another repo. Retrieving
77
+ values from Astation's local Credentials store (`atem cred get/list`) is not
78
+ available yet; it is described in the
79
+ [encryption design](https://github.com/Agora-Build/Atem/blob/main/designs/e2e-encryption.md).
80
+
81
+ Updated clients and key agents retain the remote's original capitalization,
82
+ such as `github.com/Agora-Build/Atem`; project identity and duplicate checks
83
+ ignore case. Older clients/agents may report lowercase names. Reports are
84
+ encrypted even when memory encryption is off and can remain in the picker
85
+ after the sending command exits. You can also enter another Git remote in
86
+ Astation's Credentials editor.
87
+
88
+ See [pairing, unlocking and project suggestions](https://github.com/Agora-Build/Atem/blob/main/docs/credentials.md)
89
+ for the steps when Atem runs on another machine and for upgrade troubleshooting.
90
+
33
91
  ### Tokens
34
92
 
35
93
  ```bash
@@ -65,6 +123,22 @@ atem config convo --validate # Validate existing config without modif
65
123
  atem config convo --config <PATH> # Use a specific config file
66
124
  ```
67
125
 
126
+ ### Vault (shared cross-agent context)
127
+
128
+ ```bash
129
+ atem vault new --summary "auth refactor context" # Create a vault, prints its id
130
+ atem vault list # List vaults you can read
131
+ atem vault read --vault-id <id> # Current contents
132
+ atem vault read --vault-id <id> --history # Every version (shown eN vM)
133
+ atem vault read --vault-id <id> --format plain # Bare text (pipe into a prompt)
134
+ atem vault write --vault-id <id> --text "decided: JWT in cookie" # Append an entry
135
+ atem vault write --vault-id <id> --entry-id 3 --text "..." # Override entry e3
136
+ atem vault set-summary --vault-id <id> --text "..." # Update the summary
137
+ ```
138
+
139
+ Requires pairing with Astation. Lets multiple atems (each driving an agent)
140
+ share a versioned, append-only context store hosted on the Astation relay.
141
+
68
142
  ### Memory & Skills (shared across agents and machines)
69
143
 
70
144
  Requires pairing with Astation. Agents learn from each other: facts and skills
@@ -83,12 +157,16 @@ atem memory search "valkey" # Local full-text search (offli
83
157
  atem memory replace <id> "the fact as it is now" # New fact replaces the old one (history kept)
84
158
  atem memory invalidate <id> # Mark outdated without a replacement
85
159
  atem memory rm <id> # Remove everywhere
160
+ atem memory purge <id> # Remove a fact that contained a credential, stop re-harvesting it
161
+ atem memory apply # Rewrite the managed blocks and skills from the local store
86
162
  atem memory status # Account, machine, project, pending changes
87
163
 
88
164
  atem skill add ./my-skill # Directory with SKILL.md (global by default)
89
165
  atem skill list
166
+ atem skill rm <name> # Remove everywhere
90
167
  atem skill history <name> # Every version, newest first
91
168
  atem skill restore <name> --version 3 # Re-push an old version as a new one
169
+ atem skill purge <name> --version 3 # Erase versions that contained a credential (or --all-versions)
92
170
  ```
93
171
 
94
172
  Listings show short ids like `8245ecf6…e6fe` (first 8 + last 4 characters).
@@ -103,7 +181,33 @@ Memories are applied as a managed block in `~/.claude/CLAUDE.md`,
103
181
  `~/.codex/AGENTS.md` and `<repo>/CLAUDE.local.md`; skills go to
104
182
  `.claude/skills` and `.agents/skills`. Files tracked by git are never written.
105
183
  Anything that looks like a credential value is refused; save the
106
- credential's name, never its value. See `designs/atem-memory.md`.
184
+ credential's name, never its value. See the [memory design](https://github.com/Agora-Build/Atem/blob/main/designs/atem-memory.md).
185
+
186
+ Works with end-to-end encryption on or off. When it is on, changes sync only
187
+ while the device is unlocked (`atem cred unlock`); see below.
188
+
189
+ ### End-to-end encryption
190
+
191
+ Turned on or off in Astation (Settings > Security > End-to-End Encryption).
192
+ When it is on, memory content, skill files and vault content are encrypted on
193
+ this machine before they reach the relay, and project names become keyed hashes.
194
+ Your Mac, verified Atem devices holding the account key, and holders of the
195
+ recovery material can decrypt that content. The relay still sees routing identifiers and metadata,
196
+ such as timestamps and ciphertext sizes; it is not authoritative for device
197
+ trust or encryption state. Migration cannot prove that a server erased old
198
+ plaintext backups.
199
+
200
+ The device must be verified (`atem pair`) and unlocked (`atem cred unlock`).
201
+ While it is locked, `atem sync` keeps changes queued. Switching encryption on
202
+ or off migrates existing data; each verified atem finishes its part at its next
203
+ `atem cred unlock` (`atem sync` alone doesn't contact Astation). **Turning on**
204
+ or **Turning off** is a pending migration, even when the field counts show
205
+ no remaining plaintext or obsolete fields. Astation commits the final state
206
+ after accepting a verified migration completion; the CLI can then disconnect.
207
+ Turning encryption off migrates shared data to plaintext; local Astation
208
+ Keychain credentials keep their protection. The local `knowledge.db` stays
209
+ plain text (mode 0600). See the [user guide](https://github.com/Agora-Build/Atem/blob/main/docs/credentials.md)
210
+ and [protocol design](https://github.com/Agora-Build/Atem/blob/main/designs/e2e-encryption.md).
107
211
 
108
212
  ### Dev Servers
109
213
 
@@ -119,6 +223,8 @@ atem serv rtc --background # Run as background daemon
119
223
  atem serv diagrams # Host diagrams from SQLite (HTTP)
120
224
  atem serv diagrams --port 9000
121
225
  atem serv diagrams --background
226
+ atem serv files ~/docs # Serve a directory or file over HTTPS (Markdown rendered)
227
+ atem serv files ~/docs --background # Port auto-picked; reused next run
122
228
  atem serv webhooks # Receive Agora webhooks locally (auto-tunneled via ngrok)
123
229
  atem serv webhooks --no-tunnel # Local listener only — bring your own tunnel
124
230
  atem serv webhooks --background # Run as background daemon
@@ -142,6 +248,8 @@ done
142
248
 
143
249
  **`serv diagrams`** — SQLite-backed HTTP server for hosting AI-generated HTML diagrams.
144
250
 
251
+ **`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.
252
+
145
253
  **`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
254
 
147
255
  **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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agora-build/atem",
3
- "version": "0.6.10",
3
+ "version": "0.6.12",
4
4
  "description": "A terminal that connects people, Agora platform, and AI agents.",
5
5
  "bin": {
6
6
  "atem": "bin/atem"