@techsologic/unolock-agent 0.1.33 → 0.1.35
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
|
@@ -14,7 +14,6 @@ For skill-aware agents, the primary starting point is the UnoLock agent-access s
|
|
|
14
14
|
* `https://github.com/TechSologic/unolock-agent/blob/main/skills/unolock-agent-access/SKILL.md`
|
|
15
15
|
|
|
16
16
|
That skill is the agent-facing onboarding layer.
|
|
17
|
-
The local UnoLock `stdio` MCP is the implementation layer underneath it.
|
|
18
17
|
|
|
19
18
|
For OpenClaw, this package can also be installed as a plugin so OpenClaw can load the same skill natively.
|
|
20
19
|
|
|
@@ -49,7 +48,7 @@ For normal customer use, the strongest deployment uses a production-ready:
|
|
|
49
48
|
* Secure Enclave
|
|
50
49
|
* or equivalent platform-backed non-exportable key store
|
|
51
50
|
|
|
52
|
-
If the host cannot provide one of those,
|
|
51
|
+
If the host cannot provide one of those, UnoLock Agent can still fall back to a lower-assurance software provider. When that happens, UnoLock reports the reduced assurance clearly and makes the reduced-assurance tradeoff visible instead of pretending it met UnoLock's preferred key-storage requirements.
|
|
53
52
|
|
|
54
53
|
That tradeoff is intentional. Agentic Safe Access exists to keep AI access as close as possible to UnoLock's normal device-bound security model without pretending every host can satisfy the same storage guarantees.
|
|
55
54
|
|
|
@@ -60,7 +59,7 @@ UnoLock Agent is designed to work across a wide range of agent environments.
|
|
|
60
59
|
The strongest deployments are environments that can provide device-bound, non-exportable key storage in a normal user-controlled session. That includes:
|
|
61
60
|
|
|
62
61
|
* desktop AI assistants
|
|
63
|
-
* local
|
|
62
|
+
* local AI hosts such as Claude Desktop or Cursor
|
|
64
63
|
* user-controlled workstations, laptops, and VMs with TPM/vTPM access
|
|
65
64
|
* macOS hosts that can use either Secure Enclave or a non-exportable Keychain-backed key
|
|
66
65
|
* Windows or WSL hosts that can use either TPM-backed keys or the non-exportable Windows CNG fallback
|
|
@@ -104,7 +103,7 @@ Prerequisite:
|
|
|
104
103
|
* Free and Inheritance can share their single included Safe space with one extra Agent Key.
|
|
105
104
|
* Sovereign and HighRisk are still the right tiers for broader multi-Space and collaboration-heavy agent workflows.
|
|
106
105
|
|
|
107
|
-
The current
|
|
106
|
+
The current agent runtime proves the hardest integration seam first:
|
|
108
107
|
|
|
109
108
|
* live local `/start` flow compatibility
|
|
110
109
|
* ML-DSA signature verification
|
|
@@ -117,8 +116,8 @@ Safe creation remains a human/browser responsibility, matching the product model
|
|
|
117
116
|
|
|
118
117
|
* human admin creates a Safe
|
|
119
118
|
* human admin creates an agent access key for that Safe
|
|
120
|
-
*
|
|
121
|
-
*
|
|
119
|
+
* UnoLock Agent registers to the existing Safe
|
|
120
|
+
* UnoLock Agent later authenticates and uses the shared Safe API surface for agent memory, notes, checklists, and secrets
|
|
122
121
|
|
|
123
122
|
## Quick start
|
|
124
123
|
|
|
@@ -131,7 +130,7 @@ Run this from the repo root after the local server is up on `http://127.0.0.1:30
|
|
|
131
130
|
./scripts/run_local_e2e_readonly.sh
|
|
132
131
|
```
|
|
133
132
|
|
|
134
|
-
For
|
|
133
|
+
For host configuration and implementation details, see:
|
|
135
134
|
|
|
136
135
|
* [Install Guide](docs/install.md)
|
|
137
136
|
* [macOS Quick Start](docs/macos.md)
|
|
@@ -145,23 +144,29 @@ For real MCP hosts, see:
|
|
|
145
144
|
* [OpenClaw plugin config example](examples/openclaw-plugin-config.json)
|
|
146
145
|
|
|
147
146
|
For skill-aware agents, start with the skill above.
|
|
148
|
-
For direct agent use, prefer the CLI
|
|
147
|
+
For direct agent use, prefer the CLI. If `unolock-agent` is already installed, use it directly. Only use `npx -y @techsologic/unolock-agent@latest ...` when the executable is not installed yet. Run the command you need directly.
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
unolock-agent link-agent-key 'https://safe.example/#/agent-register/...' 1
|
|
151
|
+
unolock-agent list-spaces
|
|
152
|
+
unolock-agent list-notes
|
|
153
|
+
unolock-agent list-files
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Only if the executable is not installed yet, use the same commands through:
|
|
149
157
|
|
|
150
158
|
```bash
|
|
151
159
|
npx -y @techsologic/unolock-agent@latest link-agent-key 'https://safe.example/#/agent-register/...' 1
|
|
152
|
-
npx -y @techsologic/unolock-agent@latest list-spaces
|
|
153
|
-
npx -y @techsologic/unolock-agent@latest list-notes
|
|
154
|
-
npx -y @techsologic/unolock-agent@latest list-files
|
|
155
160
|
```
|
|
156
161
|
|
|
157
|
-
|
|
162
|
+
Only if a host needs the explicit host-command form, use:
|
|
158
163
|
|
|
159
|
-
*
|
|
164
|
+
* `npx -y @techsologic/unolock-agent@latest mcp`
|
|
160
165
|
* The host writes JSON-RPC to `stdin` and reads JSON-RPC from `stdout`.
|
|
161
|
-
* The `mcp` subcommand uses the local UnoLock
|
|
166
|
+
* The `mcp` subcommand starts and uses the local UnoLock runtime automatically.
|
|
162
167
|
* On a fresh host, the first start can take longer because local cryptographic code may need to be compiled or prepared.
|
|
163
168
|
|
|
164
|
-
That keeps the user PIN in process memory
|
|
169
|
+
That keeps the user PIN in process memory and keeps the current Space selected.
|
|
165
170
|
|
|
166
171
|
The same executable also supports explicit CLI commands, for example:
|
|
167
172
|
|
|
@@ -173,13 +178,13 @@ unolock-agent create-note "Todo" "Buy milk"
|
|
|
173
178
|
unolock-agent list-files
|
|
174
179
|
```
|
|
175
180
|
|
|
176
|
-
Use the explicit `mcp` subcommand for
|
|
181
|
+
Use the explicit `mcp` subcommand only for hosts that require that command shape. Running `unolock-agent` with no arguments prints usage.
|
|
177
182
|
|
|
178
|
-
Once the local
|
|
183
|
+
Once the local UnoLock Agent is running, the normal flow is:
|
|
179
184
|
|
|
180
185
|
* call normal UnoLock tools
|
|
181
|
-
* provide the one-time Agent Key URL and PIN together when
|
|
182
|
-
* let
|
|
186
|
+
* provide the one-time Agent Key URL and PIN together when UnoLock asks for setup
|
|
187
|
+
* let UnoLock keep and use the current Space by default for normal work
|
|
183
188
|
|
|
184
189
|
If you prefer manual install from source:
|
|
185
190
|
|
|
@@ -197,9 +202,9 @@ python3 -m unolock_mcp config-check
|
|
|
197
202
|
```
|
|
198
203
|
|
|
199
204
|
For normal customer and agent onboarding, do not drive the CLI `bootstrap` command directly.
|
|
200
|
-
Let
|
|
205
|
+
Let UnoLock guide the normal flow.
|
|
201
206
|
|
|
202
|
-
macOS support is still alpha.
|
|
207
|
+
macOS support is still alpha. UnoLock Agent now prefers Secure Enclave when it works cleanly and otherwise falls back to a non-exportable macOS Keychain key for broader compatibility. If you are evaluating it on Apple Silicon, start with:
|
|
203
208
|
|
|
204
209
|
* [macOS Quick Start](docs/macos.md)
|
|
205
210
|
|
|
@@ -231,7 +236,7 @@ On restart, the npm wrapper now checks GitHub Releases for a newer stable binary
|
|
|
231
236
|
|
|
232
237
|
The npm package is both:
|
|
233
238
|
|
|
234
|
-
* the normal
|
|
239
|
+
* the normal UnoLock executable package
|
|
235
240
|
* an OpenClaw plugin package that ships the UnoLock skill
|
|
236
241
|
|
|
237
242
|
Project home:
|
|
@@ -244,7 +249,7 @@ Use it as a command that OpenClaw can launch, for example:
|
|
|
244
249
|
npx -y @techsologic/unolock-agent@latest mcp
|
|
245
250
|
```
|
|
246
251
|
|
|
247
|
-
For
|
|
252
|
+
For hosts that require the command form, use the explicit `mcp` argument:
|
|
248
253
|
|
|
249
254
|
```bash
|
|
250
255
|
npx -y @techsologic/unolock-agent@latest mcp
|
package/bin/unolock-agent.js
CHANGED
|
@@ -7,8 +7,8 @@ const path = require("path");
|
|
|
7
7
|
const https = require("https");
|
|
8
8
|
const { spawn } = require("child_process");
|
|
9
9
|
|
|
10
|
-
const PACKAGE_VERSION = "0.1.
|
|
11
|
-
const FALLBACK_BINARY_VERSION = "0.1.
|
|
10
|
+
const PACKAGE_VERSION = "0.1.35";
|
|
11
|
+
const FALLBACK_BINARY_VERSION = "0.1.35";
|
|
12
12
|
const REPO = "TechSologic/unolock-agent";
|
|
13
13
|
const TOP_LEVEL_USAGE = `usage: unolock-agent [-h] [--version] {link-agent-key,set-agent-pin,list-spaces,get-current-space,set-current-space,list-records,list-notes,list-checklists,get-record,create-note,update-note,append-note,rename-record,create-checklist,set-checklist-item-done,add-checklist-item,remove-checklist-item,list-files,get-file,download-file,upload-file,rename-file,replace-file,delete-file,tpm-diagnose,tpm-check,self-test,mcp} ...
|
|
14
14
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "unolock-agent-access",
|
|
3
3
|
"name": "UnoLock Agent Access",
|
|
4
|
-
"description": "Ships the UnoLock agent-access skill for OpenClaw.
|
|
4
|
+
"description": "Ships the UnoLock agent-access skill for OpenClaw.",
|
|
5
5
|
"configSchema": {
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
@@ -6,19 +6,20 @@ description: Guides an AI agent through connecting to a user's UnoLock Safe with
|
|
|
6
6
|
# UnoLock Agent Access
|
|
7
7
|
|
|
8
8
|
Use this skill when a user wants to give their agent access to a UnoLock Safe.
|
|
9
|
-
This skill uses the local `unolock-agent` executable on the user's device.
|
|
9
|
+
This skill uses the local `unolock-agent` executable on the user's device.
|
|
10
10
|
|
|
11
11
|
## Preferred Workflow
|
|
12
12
|
|
|
13
|
-
1. If `unolock-agent` is
|
|
14
|
-
2.
|
|
15
|
-
3.
|
|
16
|
-
4.
|
|
13
|
+
1. If `unolock-agent` is already installed, run that directly. Only use `npx -y @techsologic/unolock-agent@latest` when `unolock-agent` is not installed yet.
|
|
14
|
+
2. Run the `unolock-agent` command you need directly.
|
|
15
|
+
3. On a fresh host, allow extra time for the first start.
|
|
16
|
+
4. Ask the user for the one-time Agent Key URL and the PIN together.
|
|
17
|
+
5. Link the key on this device:
|
|
17
18
|
`unolock-agent link-agent-key '<agent-key-url>' '<pin>'`
|
|
18
|
-
|
|
19
|
+
6. List spaces and select the working space when needed:
|
|
19
20
|
`unolock-agent list-spaces`
|
|
20
21
|
`unolock-agent set-current-space <space_id>`
|
|
21
|
-
|
|
22
|
+
7. Use the normal note, checklist, and file commands for day-to-day work.
|
|
22
23
|
|
|
23
24
|
## Main CLI Commands
|
|
24
25
|
|
|
@@ -30,20 +31,14 @@ This skill uses the local `unolock-agent` executable on the user's device. The C
|
|
|
30
31
|
- `unolock-agent list-files`, `unolock-agent get-file <archive_id>`, `unolock-agent download-file ...`, `unolock-agent upload-file ...`, `unolock-agent rename-file ...`, `unolock-agent replace-file ...`, `unolock-agent delete-file ...`: read and manage Cloud files
|
|
31
32
|
- `unolock-agent get-record <record_ref>` and `unolock-agent rename-record ...`: inspect or rename an existing note or checklist
|
|
32
33
|
|
|
33
|
-
## MCP Fallback
|
|
34
|
-
|
|
35
|
-
If the host specifically requires MCP instead of CLI:
|
|
36
|
-
|
|
37
|
-
- run `npx -y @techsologic/unolock-agent@latest mcp`
|
|
38
|
-
- write MCP JSON-RPC to `stdin` and read it from `stdout`
|
|
39
|
-
- let the `mcp` subcommand auto-start and proxy through the local UnoLock daemon
|
|
40
|
-
|
|
41
34
|
## Key Rules
|
|
42
35
|
|
|
43
|
-
- prefer CLI commands over MCP when the host supports direct command execution
|
|
44
36
|
- give the agent the Agent Key URL and PIN together for first setup
|
|
37
|
+
- if `unolock-agent` is installed, use `unolock-agent ...` directly for CLI commands
|
|
38
|
+
- run the `unolock-agent` command you need directly
|
|
45
39
|
- if a command reports that the PIN is needed, run `unolock-agent set-agent-pin '<pin>'` and retry the original command
|
|
46
40
|
- keep the PIN in UnoLock process memory only
|
|
41
|
+
- if a host explicitly requires the host-command form, use `npx -y @techsologic/unolock-agent@latest mcp`
|
|
47
42
|
|
|
48
43
|
## User-Facing Model
|
|
49
44
|
|
package/package.json
CHANGED
|
@@ -6,20 +6,21 @@ description: Guides an AI agent through connecting to a user's UnoLock Safe with
|
|
|
6
6
|
# UnoLock Agent Access
|
|
7
7
|
|
|
8
8
|
Use this skill when a user wants to give their agent access to a UnoLock Safe.
|
|
9
|
-
This skill uses the local `unolock-agent` executable on the user's device.
|
|
9
|
+
This skill uses the local `unolock-agent` executable on the user's device.
|
|
10
10
|
|
|
11
11
|
## Preferred Workflow
|
|
12
12
|
|
|
13
13
|
1. Load this skill if the host supports skills.
|
|
14
|
-
2. If `unolock-agent` is
|
|
15
|
-
3.
|
|
16
|
-
4.
|
|
17
|
-
5.
|
|
14
|
+
2. If `unolock-agent` is already installed, run that directly. Only use `npx -y @techsologic/unolock-agent@latest` when `unolock-agent` is not installed yet.
|
|
15
|
+
3. Run the `unolock-agent` command you need directly.
|
|
16
|
+
4. On a fresh host, allow extra time for the first start.
|
|
17
|
+
5. Ask the user for the one-time Agent Key URL and the PIN together.
|
|
18
|
+
6. Link the key on this device:
|
|
18
19
|
`unolock-agent link-agent-key '<agent-key-url>' '<pin>'`
|
|
19
|
-
|
|
20
|
+
7. List spaces and select the working space when needed:
|
|
20
21
|
`unolock-agent list-spaces`
|
|
21
22
|
`unolock-agent set-current-space <space_id>`
|
|
22
|
-
|
|
23
|
+
8. Use the normal note, checklist, and file commands for day-to-day work.
|
|
23
24
|
|
|
24
25
|
## Main CLI Commands
|
|
25
26
|
|
|
@@ -31,20 +32,14 @@ This skill uses the local `unolock-agent` executable on the user's device. The C
|
|
|
31
32
|
- `unolock-agent list-files`, `unolock-agent get-file <archive_id>`, `unolock-agent download-file ...`, `unolock-agent upload-file ...`, `unolock-agent rename-file ...`, `unolock-agent replace-file ...`, `unolock-agent delete-file ...`: read and manage Cloud files
|
|
32
33
|
- `unolock-agent get-record <record_ref>` and `unolock-agent rename-record ...`: inspect or rename an existing note or checklist
|
|
33
34
|
|
|
34
|
-
## MCP Fallback
|
|
35
|
-
|
|
36
|
-
If the host specifically requires MCP instead of CLI:
|
|
37
|
-
|
|
38
|
-
- run `npx -y @techsologic/unolock-agent@latest mcp`
|
|
39
|
-
- write MCP JSON-RPC to `stdin` and read it from `stdout`
|
|
40
|
-
- let the `mcp` subcommand auto-start and proxy through the local UnoLock daemon
|
|
41
|
-
|
|
42
35
|
## Key Rules
|
|
43
36
|
|
|
44
|
-
- prefer CLI commands over MCP when the host supports direct command execution
|
|
45
37
|
- give the agent the Agent Key URL and PIN together for first setup
|
|
38
|
+
- if `unolock-agent` is installed, use `unolock-agent ...` directly for CLI commands
|
|
39
|
+
- run the `unolock-agent` command you need directly
|
|
46
40
|
- if a command reports that the PIN is needed, run `unolock-agent set-agent-pin '<pin>'` and retry the original command
|
|
47
41
|
- keep the PIN in UnoLock process memory only
|
|
42
|
+
- if a host explicitly requires the host-command form, use `npx -y @techsologic/unolock-agent@latest mcp`
|
|
48
43
|
|
|
49
44
|
## User-Facing Model
|
|
50
45
|
|