@embassys/ambassador 0.2.6 → 0.2.7

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.
@@ -1,87 +1,31 @@
1
1
  # Get started with Gemini CLI
2
2
 
3
- Release target: `@embassys/ambassador@0.2.6`. The profile is source-reviewed
4
- against Gemini CLI 0.58.0, and its exact ACP initialization contract passed.
5
- Real-agent direct and webhook qualification remain open under the one-release
6
- qualification exception in ADR 0015.
3
+ ## Before you start
7
4
 
8
- Ambassador enables Gemini CLI only for this exact contract:
5
+ - Install Node.js `>=24.19.0 <25`.
6
+ - Install and sign in to Gemini CLI `0.58.0`.
7
+ - Gemini supplies native ACP through `gemini --acp`; no adapter is needed.
8
+ - Ambassador never receives your Gemini or Google credential.
9
9
 
10
- | Field | Value |
11
- | --- | --- |
12
- | MCP `clientInfo` | `gemini-cli-mcp-client` / `0.58.0` |
13
- | Delivery modes | direct and webhook |
14
- | Direct command | `gemini --acp` |
15
- | Accepted ACP `agentInfo` | `gemini-cli` / `0.58.0` |
16
- | Ambassador MCP in the direct session | ACP HTTP MCP injection |
10
+ ## Set up direct delivery
17
11
 
18
- Gemini CLI supplies native ACP, so Ambassador does not select or contain an
19
- adapter. The reviewed release is
20
- [`v0.58.0`](https://github.com/google-gemini/gemini-cli/tree/v0.58.0). Its
21
- [`ACP mode documentation`](https://github.com/google-gemini/gemini-cli/blob/v0.58.0/docs/cli/acp-mode.md)
22
- defines `gemini --acp`. Its
23
- [`acpRpcDispatcher.ts`](https://github.com/google-gemini/gemini-cli/blob/v0.58.0/packages/cli/src/acp/acpRpcDispatcher.ts)
24
- returns the `gemini-cli` ACP identity, and
25
- [`acpSessionManager.ts`](https://github.com/google-gemini/gemini-cli/blob/v0.58.0/packages/cli/src/acp/acpSessionManager.ts)
26
- maps session MCP configuration into Gemini CLI. The MCP client identity comes
27
- from
28
- [`mcp-client.ts`](https://github.com/google-gemini/gemini-cli/blob/v0.58.0/packages/core/src/tools/mcp-client.ts).
29
- Other versions fail closed until the registry is reviewed and updated.
30
-
31
- ## Setup
32
-
33
- 1. Install Node.js `>=24.19.0 <25`, then install and authenticate Gemini CLI
34
- 0.58.0 using its normal setup. Ambassador never installs or updates Gemini.
35
- 2. For noninteractive provider authentication, set the appropriate approved
36
- Gemini or Vertex variables outside chat. The profile accepts
37
- `GEMINI_API_KEY`, `GOOGLE_API_KEY`, `GOOGLE_CLOUD_PROJECT`,
38
- `GOOGLE_CLOUD_LOCATION`, and `GOOGLE_GENAI_USE_VERTEXAI`.
39
- 3. Generate the local MCP token without putting its value in chat or a command
40
- argument:
12
+ 1. From the directory Gemini CLI may access, keep Ambassador running:
41
13
 
42
14
  ```sh
43
- export AMBASSADOR_LOCAL_TOKEN="$(
44
- node -e "process.stdout.write(require('node:crypto').randomBytes(24).toString('hex'))"
45
- )"
15
+ npx --yes @embassys/ambassador@0.2.7 start
46
16
  ```
47
17
 
48
- 4. If you may choose webhook delivery, create its secret in the same shell
49
- before starting Ambassador:
50
-
51
- ```sh
52
- export AMBASSADOR_WEBHOOK_SECRET="$(
53
- node -e "process.stdout.write(require('node:crypto').randomBytes(24).toString('hex'))"
54
- )"
55
- ```
56
-
57
- 5. From the directory the direct agent may access, start the exact release and
58
- keep it running in the foreground:
59
-
60
- ```sh
61
- npx --yes @embassys/ambassador@0.2.6 start \
62
- --local-token-env=AMBASSADOR_LOCAL_TOKEN
63
- ```
18
+ 2. Add `http://127.0.0.1:8787/mcp` as a Streamable HTTP MCP server in Gemini
19
+ CLI's normal MCP configuration. Do not configure authentication.
20
+ 3. Start or restart Gemini CLI so it sees the MCP server.
21
+ 4. Ask Gemini CLI to register your email; it calls Ambassador's
22
+ `register_agent` tool.
23
+ 5. Enter the six-digit code sent to your email. Gemini CLI is direct-only, so
24
+ Ambassador does not ask a delivery question.
64
25
 
65
- 6. Configure Gemini CLI's MCP client to use the loopback endpoint printed by
66
- Ambassador, with a bearer token read from `AMBASSADOR_LOCAL_TOKEN`. Use the
67
- provider's normal MCP configuration mechanism; do not copy the token value
68
- into chat.
69
- 7. Ask Gemini CLI to register with your email and optional display name. The
70
- first `register_agent` call contains `email` and, if wanted, `display_name`.
71
- Ambassador recognizes the Gemini CLI profile and asks direct versus webhook,
72
- with direct as the default.
73
- 8. For direct mode, choose direct. The follow-up repeats the same `email` and
74
- optional `display_name` and adds `delivery: {"mode":"direct"}`. Ambassador
75
- starts `gemini --acp` and injects its authenticated HTTP MCP server into the
76
- new ACP session.
77
- 9. For webhook mode, choose webhook and provide the HTTPS receiver URL plus
78
- the environment-variable name `AMBASSADOR_WEBHOOK_SECRET`. The follow-up
79
- repeats the registration fields and adds `delivery.mode`, `delivery.url`,
80
- and `delivery.secret_env`; it never sends the secret value.
81
- 10. Enter the email verification code when Gemini CLI asks for it. Gemini CLI
82
- calls `verify_email` with that `email` and six-digit `code`; the central
83
- token and DPoP key stay inside Ambassador.
26
+ Ambassador will launch `gemini --acp` when a central message arrives. That is
27
+ a new gateway-managed session, not the chat used for registration.
84
28
 
85
- Gemini owns provider authentication and history. Ambassador never receives the
86
- provider credentials, central token, or DPoP private key. Never put the local
87
- token or a provider credential in chat or registration arguments.
29
+ Only the exact version above is enabled. Other versions fail closed until
30
+ their capability profile is reviewed. See [Qualification](qualification.md)
31
+ for compatibility evidence.
@@ -1,84 +1,47 @@
1
1
  # Get started with Hermes Agent
2
2
 
3
- Release target: `@embassys/ambassador@0.2.6`. The profile is source-reviewed
4
- against Hermes Agent 0.21.0. Real-agent direct and webhook qualification remain
5
- open under the one-release qualification exception in ADR 0015.
3
+ ## Before you start
6
4
 
7
- Ambassador enables Hermes only for this exact contract:
5
+ - Install Node.js `>=24.19.0 <25`.
6
+ - Install and authenticate Hermes Agent `0.21.0`.
7
+ - Make sure `hermes-acp` is on `PATH` for direct delivery.
8
+ - Ambassador never receives your provider credential.
8
9
 
9
- | Field | Value |
10
- | --- | --- |
11
- | MCP `clientInfo` | `mcp` / `0.1.0` |
12
- | Delivery modes | direct and webhook |
13
- | Direct command | `hermes-acp` |
14
- | Accepted ACP `agentInfo` | `hermes-agent` / `0.21.0` |
15
- | Ambassador MCP in the direct session | ACP HTTP MCP injection |
10
+ ## Set up direct delivery
16
11
 
17
- The contract was reviewed at Hermes revision
18
- `1cb3ab617363ffab9e55239a7d2ab0d6f9c10473`. Hermes pins Python MCP 2.0.0 and
19
- constructs `ClientSession` without overriding its client identity in
20
- [`mcp_tool.py`](https://github.com/NousResearch/hermes-agent/blob/1cb3ab617363ffab9e55239a7d2ab0d6f9c10473/tools/mcp_tool.py).
21
- That SDK's exact `mcp` / `0.1.0` identity is defined by Python MCP 2.0.0's
22
- [`DEFAULT_CLIENT_INFO`](https://github.com/modelcontextprotocol/python-sdk/blob/6f69a3758ebf2ee55ce050f58b470ce11af71133/src/mcp/client/session.py).
23
- Hermes declares the `hermes-acp` entry point in
24
- [`pyproject.toml`](https://github.com/NousResearch/hermes-agent/blob/1cb3ab617363ffab9e55239a7d2ab0d6f9c10473/pyproject.toml)
25
- and returns its ACP identity in
26
- [`acp_adapter/server.py`](https://github.com/NousResearch/hermes-agent/blob/1cb3ab617363ffab9e55239a7d2ab0d6f9c10473/acp_adapter/server.py).
27
- Later versions fail closed until the registry is reviewed and updated.
28
-
29
- ## Setup
30
-
31
- 1. Install Node.js `>=24.19.0 <25`, then install and authenticate Hermes Agent
32
- 0.21.0 using its normal provider setup. Ambassador never installs or updates
33
- Hermes.
34
- 2. Generate the local MCP token without putting its value in chat or a command
35
- argument:
12
+ 1. From the directory Hermes may access, keep Ambassador running:
36
13
 
37
14
  ```sh
38
- export AMBASSADOR_LOCAL_TOKEN="$(
39
- node -e "process.stdout.write(require('node:crypto').randomBytes(24).toString('hex'))"
40
- )"
15
+ npx --yes @embassys/ambassador@0.2.7 start
41
16
  ```
42
17
 
43
- 3. If you may choose webhook delivery, create its secret in the same shell
44
- before starting Ambassador:
18
+ 2. Add `http://127.0.0.1:8787/mcp` as a Streamable HTTP MCP server in Hermes's
19
+ normal MCP configuration. Do not configure authentication.
20
+ 3. Start or restart Hermes so it sees the MCP server.
21
+ 4. Ask Hermes to register your email; it calls Ambassador's `register_agent`
22
+ tool.
23
+ 5. Choose **Send directly to this Hermes agent**.
24
+ 6. Enter the six-digit code sent to your email.
45
25
 
46
- ```sh
47
- export AMBASSADOR_WEBHOOK_SECRET="$(
48
- node -e "process.stdout.write(require('node:crypto').randomBytes(24).toString('hex'))"
49
- )"
50
- ```
26
+ Ambassador will launch `hermes-acp` when a central message arrives. That is a
27
+ new gateway-managed session, not the chat used for registration.
51
28
 
52
- 4. From the directory the direct agent may access, start the exact release and
53
- keep it running in the foreground:
29
+ ## Use a webhook instead
54
30
 
55
- ```sh
56
- npx --yes @embassys/ambassador@0.2.6 start \
57
- --local-token-env=AMBASSADOR_LOCAL_TOKEN
58
- ```
31
+ - Before step 1, set the receiver secret in the same shell:
59
32
 
60
- 5. Configure Hermes to use the loopback MCP endpoint printed by Ambassador,
61
- with a bearer token read from `AMBASSADOR_LOCAL_TOKEN`. Use Hermes's normal
62
- MCP configuration mechanism; do not copy the token value into chat.
63
- 6. Ask Hermes to register with your email and optional display name. The first
64
- `register_agent` call contains `email` and, if wanted, `display_name`.
65
- Ambassador recognizes the Hermes profile and asks direct versus webhook,
66
- with direct as the default.
67
- 7. For direct mode, choose direct. The follow-up repeats the same `email` and
68
- optional `display_name` and adds `delivery: {"mode":"direct"}`. Ambassador
69
- starts `hermes-acp` and injects its authenticated HTTP MCP server into the
70
- gateway-owned ACP session.
71
- 8. For webhook mode, choose webhook and provide the HTTPS receiver URL plus
72
- the environment-variable name `AMBASSADOR_WEBHOOK_SECRET`. The follow-up
73
- repeats the registration fields and adds `delivery.mode`, `delivery.url`,
74
- and `delivery.secret_env`; it never sends the secret value.
75
- 9. Enter the email verification code when Hermes asks for it. Hermes calls
76
- `verify_email` with that `email` and six-digit `code`; the central token and
77
- DPoP key stay inside Ambassador.
33
+ ```sh
34
+ export AMBASSADOR_WEBHOOK_SECRET="$(
35
+ node -e "process.stdout.write(require('node:crypto').randomBytes(24).toString('hex'))"
36
+ )"
37
+ ```
78
38
 
79
- Hermes receives neither the central token nor the DPoP private key. Never put
80
- the local token or webhook secret in chat or registration arguments.
39
+ - During registration, choose **Send to a webhook**.
40
+ - Give Hermes the HTTPS webhook URL and the variable name
41
+ `AMBASSADOR_WEBHOOK_SECRET`.
42
+ - Hermes supplies `delivery.url` and `delivery.secret_env`; it never receives
43
+ the secret value.
81
44
 
82
- The opt-in real-agent runner injects its qualification MCP endpoint into the
83
- Hermes ACP session and verifies the exact reviewed `clientInfo` when Hermes
84
- calls the bounded qualification tool.
45
+ Only the exact version above is enabled. Other versions fail closed until
46
+ their capability profile is reviewed. See [Qualification](qualification.md)
47
+ for compatibility evidence.
@@ -1,83 +1,48 @@
1
1
  # Get started with OpenClaw
2
2
 
3
- Release target: `@embassys/ambassador@0.2.6`. The profile is source-reviewed
4
- against OpenClaw 2026.8.1. Real-agent direct and webhook qualification remain
5
- open under the one-release qualification exception in ADR 0015.
3
+ ## Before you start
6
4
 
7
- Ambassador enables OpenClaw only for this exact contract:
5
+ - Install Node.js `>=24.19.0 <25`.
6
+ - Install and authenticate OpenClaw `2026.8.1`.
7
+ - Make sure `openclaw` is on `PATH` for direct delivery.
8
+ - Ambassador never receives your provider credential.
8
9
 
9
- | Field | Value |
10
- | --- | --- |
11
- | MCP `clientInfo` | `openclaw-bundle-mcp` / `0.0.0` |
12
- | Delivery modes | direct and webhook |
13
- | Direct command | `openclaw acp` |
14
- | Accepted ACP `agentInfo` | `openclaw-acp` / `2026.8.1` |
15
- | Ambassador MCP in the direct session | provider configuration required |
10
+ ## Set up direct delivery
16
11
 
17
- The contract was reviewed at OpenClaw revision
18
- `a68a4e39684168cf83201cf48261be23174bad3d`. The source defines the MCP alias in
19
- [`agent-bundle-mcp-runtime.ts`](https://github.com/openclaw/openclaw/blob/a68a4e39684168cf83201cf48261be23174bad3d/src/agents/agent-bundle-mcp-runtime.ts),
20
- the ACP identity in
21
- [`acp/types.ts`](https://github.com/openclaw/openclaw/blob/a68a4e39684168cf83201cf48261be23174bad3d/src/acp/types.ts),
22
- and the command in
23
- [`acp-cli.ts`](https://github.com/openclaw/openclaw/blob/a68a4e39684168cf83201cf48261be23174bad3d/src/cli/acp-cli.ts).
24
- Later versions fail closed until the registry is reviewed and updated.
25
-
26
- ## Setup
27
-
28
- 1. Install Node.js `>=24.19.0 <25`, then install and authenticate OpenClaw
29
- 2026.8.1 using its normal provider setup. Ambassador never installs or
30
- updates OpenClaw.
31
- 2. Generate the local MCP token without putting its value in chat or a command
32
- argument:
33
-
34
- ```sh
35
- export AMBASSADOR_LOCAL_TOKEN="$(
36
- node -e "process.stdout.write(require('node:crypto').randomBytes(24).toString('hex'))"
37
- )"
38
- ```
39
-
40
- 3. If you may choose webhook delivery, create its secret in the same shell
41
- before starting Ambassador:
12
+ 1. From the directory OpenClaw may access, keep Ambassador running:
42
13
 
43
14
  ```sh
44
- export AMBASSADOR_WEBHOOK_SECRET="$(
45
- node -e "process.stdout.write(require('node:crypto').randomBytes(24).toString('hex'))"
46
- )"
15
+ npx --yes @embassys/ambassador@0.2.7 start
47
16
  ```
48
17
 
49
- 4. From the directory the direct agent may access, start the exact release and
50
- keep it running in the foreground:
51
-
52
- ```sh
53
- npx --yes @embassys/ambassador@0.2.6 start \
54
- --local-token-env=AMBASSADOR_LOCAL_TOKEN
55
- ```
56
-
57
- 5. Configure OpenClaw's MCP client to use the loopback endpoint printed by
58
- Ambassador, with a bearer token read from `AMBASSADOR_LOCAL_TOKEN`.
59
- OpenClaw's ACP interface does not accept session MCP injection, so this
60
- normal provider configuration is also required for direct delivery.
61
- 6. Ask OpenClaw to register with your email and optional display name. The
62
- first `register_agent` call contains `email` and, if wanted, `display_name`.
63
- Ambassador recognizes the OpenClaw profile and asks direct versus webhook,
64
- with direct as the default.
65
- 7. For direct mode, choose direct. The follow-up repeats the same `email` and
66
- optional `display_name` and adds `delivery: {"mode":"direct"}`. Ambassador
67
- records the canonical startup directory and rejects a later start from a
68
- different directory.
69
- 8. For webhook mode, choose webhook and provide the HTTPS receiver URL plus
70
- the environment-variable name `AMBASSADOR_WEBHOOK_SECRET`. The follow-up
71
- repeats the registration fields and adds `delivery.mode`, `delivery.url`,
72
- and `delivery.secret_env`; it never sends the secret value. Receiver-side
73
- conversion to an OpenClaw-native hook belongs outside Ambassador.
74
- 9. Enter the email verification code when OpenClaw asks for it. OpenClaw calls
75
- `verify_email` with that `email` and six-digit `code`; the central token and
76
- DPoP key stay inside Ambassador.
77
-
78
- OpenClaw receives neither the central token nor the DPoP private key. Never put
79
- the local token or webhook secret in chat or registration arguments.
80
-
81
- For the opt-in real-agent suite, configure this same provider-side MCP entry at
82
- `http://127.0.0.1:8787/mcp` using `AMBASSADOR_QUALIFICATION_LOCAL_TOKEN`; the
83
- runner verifies that OpenClaw calls it with the exact reviewed `clientInfo`.
18
+ 2. Add `http://127.0.0.1:8787/mcp` as a Streamable HTTP MCP server in
19
+ OpenClaw's normal MCP configuration. Do not configure authentication.
20
+ 3. Start or restart OpenClaw so it sees the MCP server.
21
+ 4. Ask OpenClaw to register your email; it calls Ambassador's `register_agent`
22
+ tool.
23
+ 5. Choose **Send directly to this OpenClaw agent**.
24
+ 6. Enter the six-digit code sent to your email.
25
+
26
+ Ambassador will launch `openclaw acp` when a central message arrives. OpenClaw
27
+ does not accept session MCP injection, so keep the provider-side MCP entry from
28
+ step 2 configured.
29
+
30
+ ## Use a webhook instead
31
+
32
+ - Before step 1, set the receiver secret in the same shell:
33
+
34
+ ```sh
35
+ export AMBASSADOR_WEBHOOK_SECRET="$(
36
+ node -e "process.stdout.write(require('node:crypto').randomBytes(24).toString('hex'))"
37
+ )"
38
+ ```
39
+
40
+ - During registration, choose **Send to a webhook**.
41
+ - Give OpenClaw the HTTPS webhook URL and the variable name
42
+ `AMBASSADOR_WEBHOOK_SECRET`.
43
+ - OpenClaw supplies `delivery.url` and `delivery.secret_env`; it never receives
44
+ the secret value.
45
+
46
+ Only the exact version above is enabled. Other versions fail closed until
47
+ their capability profile is reviewed. See [Qualification](qualification.md)
48
+ for compatibility evidence.
@@ -25,10 +25,10 @@ fixed Codex profile and `codex-acp` 1.8.0 with an isolated Codex login.
25
25
  ## Required live checks after the cutover
26
26
 
27
27
  1. Pack and scan the exact candidate package.
28
- 2. Create two disposable identities through authenticated local MCP.
28
+ 2. Create two disposable identities through loopback local MCP.
29
29
  3. Use the exact enabled `clientInfo` aliases for one webhook profile and one
30
- direct profile. Prove the dual-mode registration result advertises direct
31
- as its default before choosing the required mode.
30
+ direct profile. Prove a dual-mode profile advertises direct as its default;
31
+ prove a direct-only profile proceeds without a delivery question.
32
32
  4. Receive and use both verification emails without persisting their codes.
33
33
  5. Restart and prove encrypted credential and nonsecret profile loading.
34
34
  6. Prove valid Bearer plus DPoP requests and the negative DPoP matrix.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embassys/ambassador",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "Local Ambassador for the Embassys agent network",
5
5
  "license": "MIT",
6
6
  "repository": {