You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`generate-certs.sh` only creates **server** TLS material (`server-ca.pem`, `server.pem`, ...). Each agent platform enrolls with `./examples/demo-agent.sh`, which starts a local `swtpm`, creates a persistent P-256 signing key in that simulated TPM, and prepares `machine-client.pem` as a certificate carrier for that public key and identity extension. The gateway does not trust a client CA bundle; it authorizes the exact subject public key recorded in signed Postgres permission rows.
30
+
`demo/generate-server-certs.sh` only creates **server** TLS material (`server-ca.pem`, `server.pem`, ...). The local demo enrolls with `./demo/demo-agent.sh`, which starts a local `swtpm`, creates a persistent P-256 signing key in that simulated TPM, and prepares `machine-client.pem` as a certificate carrier for that public key and identity extension. The gateway does not trust a client CA bundle; it authorizes the exact subject public key recorded in signed Postgres permission rows.
31
31
32
32
Typical first-time flow:
33
33
34
-
1.`./examples/generate-certs.sh` and `cp config.example.toml config.toml`.
34
+
1.`./demo/generate-server-certs.sh` and `cp config.example.toml config.toml`.
35
35
2. Enroll a trusted principal signing key and grant its destination delegation scope.
36
36
3. The principal creates an agent handle; the script prepares the subject certificate, signs permission rows for its exact SPKI DER, and starts the sidecar.
37
37
4. Start the gateway (`cargo run -- --config config.toml`) before sending prompts through the sidecar.
38
38
39
-
On later runs, start the gateway first and use `demo-agent.sh prompt`. `connect.sh` prepares `machine-client.pem` for the current simulated TPM key and identity extension whenever it prepares or starts the sidecar. `--regenerate-certs` creates a fresh simulated TPM state; any permissions for the old subject key will no longer match.
39
+
On later runs, start the gateway first and use `./demo/demo-agent.sh prompt`. `./demo/connect.sh` prepares `machine-client.pem` for the current simulated TPM key and identity extension whenever it prepares or starts the sidecar. `--regenerate-certs` creates a fresh simulated TPM state; any permissions for the old subject key will no longer match.
40
40
41
-
Pass a custom policy extension value: `connect.sh start-sidecar ... --extension-value agent-beta`. The extension value must match `permission_registry.subject_identity` in an active signed permission row.
41
+
Pass a custom policy extension value: `./demo/connect.sh start-sidecar ... --extension-value agent-beta`. The extension value must match `permission_registry.subject_identity` in an active signed permission row.
42
42
43
43
The simulated TPM state lives under `$AGENT_STATE/client/swtpm/`. By default,
44
44
the sidecar uses TCTI `swtpm:host=127.0.0.1,port=2321` and persistent handle
45
45
`0x81010004`; override the handle or simulator data port with
46
-
`connect.sh start-sidecar --tpm-handle` and
46
+
`./demo/connect.sh start-sidecar --tpm-handle` and
47
47
`--swtpm-port`. The swtpm control port is always the data port plus one, which
48
48
matches the TSS swtpm TCTI convention.
49
49
@@ -105,7 +105,7 @@ Shut down cleanly with `Ctrl-C`.
105
105
Register a principal signing key from the TPM owner machine with:
The script creates or reuses a non-exportable TPM-backed P-256 key through `tpm2_ptool` and PKCS#11, stores only the public key in `principal_signing_keys`, and uses the friendly `key_id` (`org-alice`, `org-bob`, etc.) for the registry row. Run it on the machine that owns the TPM, with `AGENT_GATEWAY_DATABASE_URL` or `DATABASE_URL` pointing at Postgres.
@@ -114,22 +114,22 @@ For the demo, use three windows:
114
114
115
115
```bash
116
116
# Principal shell: enroll the principal TPM public key.
# Principal shell: grant another destination, then continue the same Claude session.
131
-
./examples/demo-agent.sh grant "$AGENT_HANDLE" --grant example.com
132
-
./examples/demo-agent.sh prompt "$AGENT_HANDLE" --prompt "now try the second destination"
131
+
./demo/demo-agent.sh grant "$AGENT_HANDLE" --grant example.com
132
+
./demo/demo-agent.sh prompt "$AGENT_HANDLE" --prompt "now try the second destination"
133
133
```
134
134
135
135
The dashboard runs separately and observes Postgres plus OpenTelemetry. `demo-agent.sh` keeps gateway connection details out of the principal-facing command; set `AGENT_GATEWAY_DEMO_GATEWAY` and `AGENT_GATEWAY_DEMO_GATEWAY_CA` only when overriding the local defaults. `AGENT_GATEWAY_DEMO_GATEWAY_CA` is the CA for the gateway's server certificate, not a client trust root. The first prompt uses `claude -p`; later prompts for the same handle use `claude -c -p` from the handle's working directory.
0 commit comments