Skip to content

Commit 8bc0dc0

Browse files
docs: rename cMCP Gateway -> cMCP Runtime in prose
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent c660694 commit 8bc0dc0

3 files changed

Lines changed: 31 additions & 31 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
1+
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
22
[![cMCP](https://img.shields.io/badge/Uses-cMCP_Gateway-7c3aed)](https://github.com/agentrust-io/cmcp)
33
[![Agent Manifest](https://img.shields.io/badge/Uses-Agent_Manifest-0ea5e9)](https://github.com/agentrust-io/agent-manifest)
44

@@ -25,7 +25,7 @@ cp examples/startup-tpm/cmcp-config.yaml .
2525
cmcp start --config cmcp-config.yaml --enforcement advisory
2626
```
2727

28-
This starts the gateway in advisory mode (no blocking, full logging) and emits a TRACE Trust Record for every MCP tool call.
28+
This starts the runtime in advisory mode (no blocking, full logging) and emits a TRACE Trust Record for every MCP tool call.
2929

3030
## Prerequisites
3131

financial-services/README.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# financial-services: EU Credit Risk Agent Demo
1+
# financial-services: EU Credit Risk Agent Demo
22

3-
End-to-end demo of a credit risk agent processing client financial documents through a cMCP gateway with Cedar policy enforcement and TRACE Trust Records for EU regulatory compliance (EU AI Act, MiFID II, DORA, GDPR).
3+
End-to-end demo of a credit risk agent processing client financial documents through a cMCP Runtime with Cedar policy enforcement and TRACE Trust Records for EU regulatory compliance (EU AI Act, MiFID II, DORA, GDPR).
44

55
End-to-end example: AI agent compliance for European private banks using cMCP and TRACE attestation.
66

@@ -11,7 +11,7 @@ End-to-end example: AI agent compliance for European private banks using cMCP an
1111
This example demonstrates:
1212

1313
**1. Cryptographic proof of which tools an AI agent called**
14-
The cMCP gateway intercepts every MCP tool call and records it in a signed TRACE Trust Record. An auditor or regulator can verify after the fact exactly which tools ran, in what order, with what data classifications — without trusting the agent process itself.
14+
The cMCP Runtime intercepts every MCP tool call and records it in a signed TRACE Trust Record. An auditor or regulator can verify after the fact exactly which tools ran, in what order, with what data classifications — without trusting the agent process itself.
1515

1616
**2. Cedar policy as machine-readable compliance**
1717
The three Cedar rules in `policy/allow.cedar` encode the bank's compliance requirements directly: which workflows may call which tools, when a large credit recommendation must go to a human reviewer, and how to prevent accidental data-class downgrade. Policy-as-code means the same rules that block a call are the rules that go into the audit file.
@@ -23,7 +23,7 @@ Article 12 requires high-risk AI systems to automatically log sufficient informa
2323
MiFID II Article 25 requires that investment firms document the basis for any investment recommendation. For an AI-assisted credit decision, the TRACE record provides the tool-call audit trail showing that credit bureau data was consulted and a human reviewer was required for exposures above €500k.
2424

2525
**5. DORA Article 9 ICT risk — immutable logs**
26-
The gateway runs in an attested environment (TEE or TPM). The TRACE record is signed by the gateway's attestation key. If a log is tampered with, the signature verification fails.
26+
The runtime runs in an attested environment (TEE or TPM). The TRACE record is signed by the runtime's attestation key. If a log is tampered with, the signature verification fails.
2727

2828
**6. GDPR data minimisation in tool definitions**
2929
The catalog schema enforces `sensitivity_level` and `compliance_domain` on every tool. The Cedar policy forbids confidential-data tools if the session sensitivity has been downgraded to `public`. This is the machine-enforceable equivalent of the GDPR data-minimisation principle.
@@ -40,7 +40,7 @@ The catalog schema enforces `sensitivity_level` and `compliance_domain` on every
4040
│ tools/call (MCP)
4141
4242
┌─────────────────────────────────────────────────────────────────┐
43-
│ cMCP Gateway :8443 │
43+
│ cMCP Runtime :8443 │
4444
│ │
4545
│ ┌──────────────┐ ┌─────────────────┐ ┌───────────────────┐ │
4646
│ │ Cedar engine │ │ Catalog checker │ │ TRACE recorder │ │
@@ -70,7 +70,7 @@ The catalog schema enforces `sensitivity_level` and `compliance_domain` on every
7070
| agent-manifest | latest | `pip install agent-manifest` |
7171
| curl | any | For verification steps |
7272

73-
No hardware TEE or TPM is required for this demo. The gateway runs in `CMCP_DEV_MODE=1`.
73+
No hardware TEE or TPM is required for this demo. The runtime runs in `CMCP_DEV_MODE=1`.
7474

7575
---
7676

@@ -102,7 +102,7 @@ cmcp-verify --version
102102

103103
```
104104
financial-services/
105-
cmcp-config.yaml Gateway configuration
105+
cmcp-config.yaml Runtime configuration
106106
catalog.json Three-tool catalog
107107
policy/
108108
manifest.json Policy bundle metadata
@@ -164,7 +164,7 @@ forbid (
164164
};
165165
```
166166

167-
Prevents a session that has been flagged `public` from calling tools that handle confidential data. This enforces the GDPR data-minimisation principle at the gateway layer.
167+
Prevents a session that has been flagged `public` from calling tools that handle confidential data. This enforces the GDPR data-minimisation principle at the runtime layer.
168168

169169
**Rule 4 — Catch-all permit**
170170

@@ -178,7 +178,7 @@ Any call not matched by a forbid is allowed. Removes the need to enumerate every
178178

179179
## Step 5 — Review the catalog
180180

181-
`catalog.json` registers three tools with their approved definitions, data classifications, and definition hashes. The definition hash is `sha256(json.dumps(approved_definition, sort_keys=True, separators=(',',':')))`. The gateway rejects any tool call where the server returns a definition that does not match the hash — preventing prompt-injection via MCP tool description tampering.
181+
`catalog.json` registers three tools with their approved definitions, data classifications, and definition hashes. The definition hash is `sha256(json.dumps(approved_definition, sort_keys=True, separators=(',',':')))`. The runtime rejects any tool call where the server returns a definition that does not match the hash — preventing prompt-injection via MCP tool description tampering.
182182

183183
| Tool | compliance_domain | sensitivity_level | definition_hash (first 16 chars) |
184184
|---|---|---|---|
@@ -188,7 +188,7 @@ Any call not matched by a forbid is allowed. Removes the need to enumerate every
188188

189189
---
190190

191-
## Step 6 — Start the gateway
191+
## Step 6 — Start the runtime
192192

193193
```bash
194194
CMCP_DEV_MODE=1 cmcp start --config financial-services/cmcp-config.yaml
@@ -354,7 +354,7 @@ For a production deployment with hardware TEE, the attestation line reads:
354354
| `policy.version` | `credit-risk-v4.2` | From `policy/manifest.json` |
355355
| `data_class` | `confidential` | Highest sensitivity across all calls |
356356
| `tool_transcript` | array | One entry per tool call, in order |
357-
| `cnf.kid` | `cmcp-a1b2c3d4` | Key ID of the gateway signing key |
357+
| `cnf.kid` | `cmcp-a1b2c3d4` | Key ID of the runtime signing key |
358358

359359
---
360360

@@ -398,7 +398,7 @@ openssl s_client -connect mcp.bank.eu:443 < /dev/null 2>/dev/null \
398398

399399
### Trigger the €500k escalation rule
400400

401-
Edit `credit_risk_agent.py` and change `AMOUNT_EUR = 250_000` to `AMOUNT_EUR = 750_000`. Re-run the agent. The gateway will return an advisory deny for the `finance.risk_report_writer` call:
401+
Edit `credit_risk_agent.py` and change `AMOUNT_EUR = 250_000` to `AMOUNT_EUR = 750_000`. Re-run the agent. The runtime will return an advisory deny for the `finance.risk_report_writer` call:
402402

403403
```json
404404
{
@@ -418,14 +418,14 @@ Edit `credit_risk_agent.py` and change `AMOUNT_EUR = 250_000` to `AMOUNT_EUR = 7
418418

419419
### Switch to enforcing mode
420420

421-
Change `enforcement_mode: enforcing` in `cmcp-config.yaml` (it is already set to `enforcing`). In dev mode the gateway enforces the policy but the attestation is not hardware-backed. Change `CMCP_DEV_MODE=1` to use a real TPM or TEE for production.
421+
Change `enforcement_mode: enforcing` in `cmcp-config.yaml` (it is already set to `enforcing`). In dev mode the runtime enforces the policy but the attestation is not hardware-backed. Change `CMCP_DEV_MODE=1` to use a real TPM or TEE for production.
422422

423423
### Add a new tool
424424

425425
1. Define the tool in your MCP server.
426426
2. Add an entry to `catalog.json` with the correct `definition_hash`.
427427
3. Add a Cedar rule in `allow.cedar` if needed.
428-
4. Restart the gateway with `cmcp start --config financial-services/cmcp-config.yaml --reload`.
428+
4. Restart the runtime with `cmcp start --config financial-services/cmcp-config.yaml --reload`.
429429

430430
The definition hash is:
431431

@@ -442,11 +442,11 @@ def definition_hash(approved_definition: dict) -> str:
442442
1. Provision an Azure VM with Trusted Launch enabled (Trusted Launch is the default for most VM sizes as of 2025).
443443
2. Install the vTPM extension if not already present.
444444
3. Remove `CMCP_DEV_MODE=1` from the startup command.
445-
4. The gateway will automatically use the vTPM. The `runtime.tee_type` field in the TRACE record will be `tpm2` and `runtime.measurement` will contain the PCR0 value.
445+
4. The runtime will automatically use the vTPM. The `runtime.tee_type` field in the TRACE record will be `tpm2` and `runtime.measurement` will contain the PCR0 value.
446446

447447
### Connect an agent manifest
448448

449-
If you publish an agent manifest with `agent-manifest`, the gateway can cross-check the manifest's `allowed_tools` list against the catalog:
449+
If you publish an agent manifest with `agent-manifest`, the runtime can cross-check the manifest's `allowed_tools` list against the catalog:
450450

451451
```bash
452452
agent-manifest validate --manifest agent-manifest.json --catalog financial-services/catalog.json
@@ -456,7 +456,7 @@ agent-manifest validate --manifest agent-manifest.json --catalog financial-servi
456456

457457
## Troubleshooting
458458

459-
**Gateway cannot find the policy bundle**
459+
**Runtime cannot find the policy bundle**
460460

461461
Make sure you run `cmcp start` from the root of the examples repo, or use an absolute path:
462462

@@ -466,7 +466,7 @@ cmcp start --config /path/to/examples/financial-services/cmcp-config.yaml
466466

467467
**`httpx.ConnectError` in the agent script**
468468

469-
The gateway is not running, or is running on a different port. Check:
469+
The runtime is not running, or is running on a different port. Check:
470470

471471
```bash
472472
curl http://localhost:8443/health

startup-tpm/README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# startup-tpm: 15-Minute cMCP Quickstart
1+
# startup-tpm: 15-Minute cMCP Quickstart
22

3-
Get a cMCP gateway running with TPM-backed TRACE Trust Records in under 15 minutes. Works on any cloud VM with TPM 2.0 (Azure Trusted Launch, AWS Nitro, GCP Shielded VM) or with `CMCP_DEV_MODE=1` for local development — no hardware required for testing.
3+
Get a cMCP Runtime running with TPM-backed TRACE Trust Records in under 15 minutes. Works on any cloud VM with TPM 2.0 (Azure Trusted Launch, AWS Nitro, GCP Shielded VM) or with `CMCP_DEV_MODE=1` for local development — no hardware required for testing.
44

55
---
66

77
## What you will have at the end
88

9-
- A cMCP gateway running on port 8443
9+
- A cMCP Runtime running on port 8443
1010
- A Cedar policy that permits all tool calls (replace before production)
1111
- A one-tool catalog (`test.echo`)
1212
- A TRACE Trust Record you can inspect and verify
@@ -24,7 +24,7 @@ Estimated time: 15 minutes on a fresh VM, 5 minutes if Python is already install
2424
| curl | any | For the test tool call |
2525
| TPM 2.0 | optional | Required for hardware attestation; omit with `CMCP_DEV_MODE=1` |
2626

27-
No MCP server is required — the gateway runs a built-in echo responder for the `test.echo` tool.
27+
No MCP server is required — the runtime runs a built-in echo responder for the `test.echo` tool.
2828

2929
---
3030

@@ -55,7 +55,7 @@ The directory contains:
5555

5656
```
5757
startup-tpm/
58-
cmcp-config.yaml gateway configuration
58+
cmcp-config.yaml runtime configuration
5959
catalog.json one-tool catalog (test.echo)
6060
policy/
6161
manifest.json policy bundle metadata
@@ -78,29 +78,29 @@ attestation:
7878
enforcement_mode: advisory
7979
```
8080
81-
`enforcement_mode: advisory` means the gateway logs policy violations but does not block calls. Change to `enforcing` before production.
81+
`enforcement_mode: advisory` means the runtime logs policy violations but does not block calls. Change to `enforcing` before production.
8282

8383
`provider: auto` selects the best available attestation source: TPM 2.0 if present, software-only otherwise.
8484

8585
---
8686

87-
## Step 4 — Start the gateway
87+
## Step 4 — Start the runtime
8888

8989
### With hardware TPM (Azure Trusted Launch, AWS Nitro, GCP Shielded VM)
9090

9191
```bash
9292
cmcp start --config startup-tpm/cmcp-config.yaml
9393
```
9494

95-
The gateway will print the TPM attestation measurement on startup.
95+
The runtime will print the TPM attestation measurement on startup.
9696

9797
### Without hardware TPM (local dev, CI)
9898

9999
```bash
100100
CMCP_DEV_MODE=1 cmcp start --config startup-tpm/cmcp-config.yaml
101101
```
102102

103-
`CMCP_DEV_MODE=1` sets `tee_type: dev-mode` in the TRACE record and marks the measurement `DEVELOPMENT_ONLY_NOT_FOR_PRODUCTION`. The gateway is fully functional but the attestation is not hardware-backed.
103+
`CMCP_DEV_MODE=1` sets `tee_type: dev-mode` in the TRACE record and marks the measurement `DEVELOPMENT_ONLY_NOT_FOR_PRODUCTION`. The runtime is fully functional but the attestation is not hardware-backed.
104104

105105
Expected startup output:
106106

@@ -145,7 +145,7 @@ Expected response:
145145
curl http://localhost:8443/trace | python3 -m json.tool
146146
```
147147

148-
The TRACE record covers the entire session (all tool calls since the gateway started). Example output:
148+
The TRACE record covers the entire session (all tool calls since the runtime started). Example output:
149149

150150
```json
151151
{
@@ -229,6 +229,6 @@ $env:CMCP_DEV_MODE = "1"
229229
cmcp start --config startup-tpm/cmcp-config.yaml
230230
```
231231

232-
**Gateway exits immediately**
232+
**Runtime exits immediately**
233233

234234
Check that `policy/` and `catalog.json` exist relative to the working directory from which you run `cmcp start`. The `policy_bundle_path` and `catalog_path` in `cmcp-config.yaml` are resolved relative to the config file's location, not the working directory.

0 commit comments

Comments
 (0)