sealnet-mcp 0.2.5 → 0.3.0
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 +19 -16
- package/dist/cli.cjs +973 -993
- package/dist/cli.d.cts +10 -7
- package/dist/cli.d.ts +10 -7
- package/dist/cli.js +3712 -3732
- package/dist/index.cjs +350 -272
- package/dist/index.d.cts +128 -102
- package/dist/index.d.ts +128 -102
- package/dist/index.js +328 -258
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,25 +25,25 @@ With SEAL Pro workload credentials (`sealpro agent enroll`, or `SEALPRO_WORKLOAD
|
|
|
25
25
|
|
|
26
26
|
Large transfers report `notifications/progress` when the host sends a `progressToken`. Where the host supports URL-mode elicitation, `seal_request` shows the page link through it and waits in one call; otherwise it returns the link and a second call with `request` waits.
|
|
27
27
|
|
|
28
|
-
##
|
|
28
|
+
## The agent's key and state
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
The agent has one key: a 32-byte X25519 secret whose public half is its address (`sealnet-mcp pubkey`). It comes from, in order:
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
1. **`SEAL_SEED`** — how a container or a cloud session gets the same address as at home (`sealnet-mcp seed --force` prints the key to put there);
|
|
33
|
+
2. **the OS keychain** — `@napi-rs/keyring` (optional dependency): Secret Service on Linux, macOS Keychain, Windows Credential Manager;
|
|
34
|
+
3. **`seed`**, a 0600 file in the state directory, where there is no keychain.
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
The first start makes the key (keychain, else the file); there is no setup step. State lives in `${XDG_CONFIG_HOME}/seal-mcp/state.json` (mode `0o600`), encrypted with a passphrase derived from the key (HKDF-SHA256 → Argon2id → AES-256-GCM). It holds:
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
- `identity` — the key itself, for incoming targeted seals
|
|
39
|
+
- `handles[]` — opaque handle → `{ seal_id, owner_token, mode, created_at }`. Each `owner_token` is full owner-capability for that seal; encrypting only `identity` and leaving tokens plain would be a security illusion.
|
|
40
|
+
- `audit[]` — historical tool invocations (timestamps, handles, modes). Side-channel relevant.
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
Several MCP hosts on one machine (Claude Desktop, Claude Code, Cursor) share the key and the state: each write re-reads the file under a lock. `serve --ephemeral` (or `SEAL_MCP_EPHEMERAL=1`) keeps nothing on disk and makes a new key each start; handles then last until restart, and seal expiry does not depend on it. A state from version 0.2 moves under the key on the first start, once.
|
|
43
43
|
|
|
44
44
|
## Install + configure
|
|
45
45
|
|
|
46
|
-
No setup step: the first start creates the state.
|
|
46
|
+
No setup step: the first start creates the agent's key and state.
|
|
47
47
|
|
|
48
48
|
Add to `~/.cursor/mcp.json` (or `claude_desktop_config.json`):
|
|
49
49
|
|
|
@@ -75,8 +75,10 @@ Environment variables consumed by the CLI:
|
|
|
75
75
|
|
|
76
76
|
| Variable | Used by | Purpose |
|
|
77
77
|
|---|---|---|
|
|
78
|
+
| `SEAL_SEED` | every subcommand | The agent's key (43 base64url characters); the same address wherever it is set |
|
|
79
|
+
| `SEAL_MCP_EPHEMERAL=1` | `serve` | As `--ephemeral`: a new key each start, nothing on disk |
|
|
78
80
|
| `SEAL_MCP_CONFIG_DIR` | every subcommand | Override default state directory (mirrors Rust `seal-cli`'s `SEAL_CONFIG_DIR`) |
|
|
79
|
-
| `SEAL_MCP_PASSPHRASE` | `serve
|
|
81
|
+
| `SEAL_MCP_PASSPHRASE` | `serve` | Read once, to move a state of version 0.2 |
|
|
80
82
|
| `SEAL_MCP_BACKEND_URL` | `serve`, `doctor` | SEAL backend base URL (default `https://api.seal.net`) |
|
|
81
83
|
| `SEAL_MCP_PUBLIC_HOST` | `serve`, `doctor` | Public origin for minted share URLs (default `https://seal.net`) |
|
|
82
84
|
| `SEAL_MCP_DEBUG=1` | all | Include stack traces in fatal-error output (otherwise plain `error: <msg>`) |
|
|
@@ -85,10 +87,11 @@ Available subcommands:
|
|
|
85
87
|
|
|
86
88
|
```
|
|
87
89
|
sealnet-mcp serve # default — start the stdio MCP server (used by MCP hosts); --ephemeral keeps nothing on disk
|
|
88
|
-
sealnet-mcp init # optional:
|
|
89
|
-
sealnet-mcp pubkey # print
|
|
90
|
-
sealnet-mcp
|
|
91
|
-
sealnet-mcp
|
|
90
|
+
sealnet-mcp init # optional: make the key and state without starting the server
|
|
91
|
+
sealnet-mcp pubkey # print the agent's address, its X25519 public key (for senders)
|
|
92
|
+
sealnet-mcp seed --force # print the agent's key, to set SEAL_SEED elsewhere
|
|
93
|
+
sealnet-mcp doctor # diagnose key source / keychain / file perms / backend reachability
|
|
94
|
+
sealnet-mcp reset --force # wipe state.json and the key: the address is lost for good
|
|
92
95
|
```
|
|
93
96
|
|
|
94
97
|
## Development
|