enigma-memory 0.1.15 → 0.1.16

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.
Files changed (39) hide show
  1. package/README.md +64 -84
  2. package/apps/cli/bin/enigma.mjs +30 -5
  3. package/apps/native-host/README.md +20 -0
  4. package/deploy/SIMULATION.md +34 -38
  5. package/docs/benchmark-attestation-network.md +2 -2
  6. package/docs/benchmark-reproducibility.md +21 -9
  7. package/docs/browser-extension-install.md +9 -6
  8. package/docs/client-connectors.md +22 -52
  9. package/docs/demo-proof-network.md +3 -3
  10. package/docs/developer-ecosystem.md +205 -223
  11. package/docs/developer-proof-quickstart.md +3 -3
  12. package/docs/enigma-memory-ready-conformance.md +1 -1
  13. package/docs/hosted-cloud-product.md +2 -0
  14. package/docs/install-anywhere.md +61 -66
  15. package/docs/memory-benchmarks.md +6 -3
  16. package/docs/proof-network-build-notes.md +2 -2
  17. package/docs/proof-network.md +32 -7
  18. package/docs/sdk-api.md +1 -1
  19. package/docs/solana-devnet-acceptance.md +1 -1
  20. package/docs/solana-proof-rail.md +1 -1
  21. package/package.json +7 -1
  22. package/packages/connectors/src/index.js +13 -0
  23. package/packages/mcp-server/README.md +22 -0
  24. package/packages/mcp-server/src/index.js +1 -1
  25. package/scripts/build-benchmark-proof-release.mjs +106 -5
  26. package/scripts/build-cloudflare-token-policy.mjs +6 -2
  27. package/scripts/build-hosted-api-key-lifecycle.mjs +1 -1
  28. package/scripts/build-hosted-customer-lifecycle.mjs +1 -1
  29. package/scripts/build-installer-assets.mjs +1 -1
  30. package/scripts/build-production-handoff-packet.mjs +1 -1
  31. package/scripts/build-production-unblocker.mjs +1 -1
  32. package/scripts/build-production-workplan.mjs +3 -1
  33. package/scripts/build-proof-network-packet.mjs +1 -1
  34. package/scripts/check.mjs +3 -1
  35. package/scripts/cloudflare-ops.mjs +35 -0
  36. package/scripts/collect-hosted-backend-live-evidence.mjs +44 -2
  37. package/scripts/run-memory-benchmarks.mjs +5 -0
  38. package/scripts/run-standard-memory-benchmarks.mjs +127 -3
  39. package/scripts/stage-cloudflare-pages-artifact.mjs +145 -0
package/README.md CHANGED
@@ -2,96 +2,25 @@
2
2
 
3
3
  Enigma Memory is a local-first AI Memory Passport. It gives you one canonical local memory vault, receipt-backed proof for Enigma-controlled events, and MCP connections into assistants such as Claude Desktop, Cursor, Kimi Code, and generic MCP clients.
4
4
 
5
- Start with `enigma init --dry-run` below. You do not need to understand relay, gateway, mesh, browser, desktop, or hosted infrastructure before trying Enigma locally.
5
+ Start with `enigma setup --overwrite` below. You do not need to understand relay, gateway, mesh, browser, desktop, hosted infrastructure, or the proof network before trying Enigma locally.
6
6
 
7
7
  The package path needs no database, provider credential, cloud credential, npm publishing token, or external account. Hosted cloud and BYOC operation are separate advanced modes that require real deployment credentials, domains, TLS, durable storage, KMS/secrets, monitoring, backups, and operator acceptance.
8
8
 
9
9
  Enigma does not claim that a closed provider deleted internal data, that model weights forgot, or that provider-native memory disappeared. It proves facts about Enigma-controlled vault state, receipts, checkpoints, and declared boundary operations.
10
10
 
11
- ## First run: install and inspect the safe local plan
12
-
13
- The top public path is the published npm package plus the first-run planner:
14
-
15
- ```sh
16
- npm install -g enigma-memory
17
- enigma init --dry-run
18
- ```
19
-
20
- `enigma init --dry-run` prints a public-safe JSON plan with exact next commands. It does not write local artifacts or third-party client configs, does not require provider credentials, hosted Enigma SaaS, Solana, or a browser extension, and states `provider_credentials_required:false`, `hosted_saas_live:false`, and `raw_memory_printed:false`.
21
-
22
- When the plan looks right, create the local Memory Passport artifacts:
23
-
24
- ```sh
25
- enigma init --overwrite
26
- ```
27
-
28
- The execute path writes only local Enigma artifacts under the workspace `.enigma` path by default. It still does not write Claude, Cursor, Kimi, or other third-party app configs unless you explicitly add `--connect`.
29
-
30
- Public demo path, preserved for reviewers who want the isolated proof/demo bundle:
31
-
32
- ```sh
33
- enigma test-drive --overwrite
34
- ```
35
-
36
- `enigma test-drive --overwrite` needs no database, provider API key, cloud credential, npm publishing token, package registry account, or hosted Enigma account. It runs entirely on the local filesystem, does not call OpenAI, Anthropic, Cloudflare, hosted Enigma, or other external providers, and does not write Claude, Cursor, Kimi, or other third-party client configs.
37
-
38
- By default the command writes an isolated demo under `.enigma/test-drive`. Use `--dry-run` to print the plan without writing, or `--out-dir <path>` to choose another isolated demo directory. The default bundle and proof artifacts live inside that directory.
39
-
40
- The test-drive output is a single public-safe JSON summary. It points to the local setup artifacts, search/status output, cross-model demo report, and benchmark pointers, and it prints exact next commands for testers without printing raw private memory plaintext. The proof is bounded to the local demo: Enigma-controlled vault state, receipts, checkpoints, committed roots, exported bundle shape, and declared boundary operations. It is not evidence that hosted SaaS is live, that a closed provider deleted internal data, that model weights forgot, or that provider-native memory disappeared.
41
-
42
- When you are ready to connect real local clients that are already installed or already configured:
43
-
44
- ```sh
45
- enigma init --connect --overwrite
46
- ```
47
-
48
- `--connect` is the explicit first-run client-config write path. With default client selection it skips missing client configs instead of creating every default client config.
49
-
50
- ## Enigma Proof Network
51
-
52
- Enigma Proof Network is the public proof layer for AI memory: local tools can package privacy-preserving roots, refs, counts, signatures, scoped capability grants, revocations, and benchmark attestations without exposing raw memory, prompts, transcripts, completions, embeddings, tenant names, private keys, provider responses, or provider credentials.
53
-
54
- The `enigma chain anchor|grant|revoke|attest|verify` commands are local planning and verification commands. They emit public-safe JSON with `transaction_submitted:false` and `raw_memory_on_chain:false`; they do not submit Solana transactions, deploy hosted SaaS, create accounts, or call external providers.
55
-
56
- Start with the category narrative in [`docs/market-category-narrative.md`](docs/market-category-narrative.md), then read the technical overview in [`docs/proof-network.md`](docs/proof-network.md), use its [Solana role](docs/proof-network.md#solana-role) section for the Solana-ready anchoring boundary, and read [`docs/proof-network-faq.md`](docs/proof-network-faq.md) for claim boundaries.
57
-
58
11
  ## Install once, use everywhere
59
12
 
60
13
  Prerequisites:
61
14
 
62
15
  - Node.js `>=24`
63
- - No database, package registry account, provider credential, or cloud credential for the local test-drive or setup paths
16
+ - No database, package registry account, provider credential, cloud credential, hosted Enigma account, or external account for the local setup path
64
17
  - Git only when you choose the advanced source-checkout path
65
18
 
66
- Use Enigma as a one-time AI Memory Passport setup: install the package, inspect the local plan, create the local Enigma workspace once, then use the same memory/search/context/verify/connect loop from any supported client.
19
+ Use Enigma as a one-time AI Memory Passport setup: install the package, create the local Enigma workspace once, then use the same memory/search/context/verify/connect loop from any supported client.
67
20
 
68
21
  ```sh
69
22
  npm install -g enigma-memory
70
- enigma init --dry-run
71
- enigma init --overwrite
72
- ```
73
-
74
- `enigma init --overwrite` is the safe default for creating a regular local workspace after reviewing the plan. It writes local Enigma artifacts under the workspace `.enigma` path and emits deterministic, public-safe JSON without printing raw memory plaintext. It does not write Claude, Cursor, Kimi, or other third-party app configs.
75
-
76
- To let first-run setup detect installed or already-configured clients and show the connector plan without mutating client configs:
77
-
78
- ```sh
79
- enigma init --client auto --dry-run
80
- ```
81
-
82
- `--client auto` selects clients found by connector detection and falls back to the default setup client list when none are present. The init output lists which clients were selected, which were skipped, and why.
83
-
84
- Only when you are ready to explicitly write connector entries for installed/config-present clients:
85
-
86
- ```sh
87
- enigma init --connect --overwrite
88
- ```
89
-
90
- `--connect` implies installed/config-present client selection when no explicit `--client` is supplied and is an explicit client-config write flag. It skips missing client configs instead of creating every default client config. Existing setup commands remain available: `enigma setup --overwrite`, `enigma setup --client auto --overwrite`, and `enigma setup --connect-installed --overwrite`. Existing explicit connector writes remain available through `enigma connect <client>` without `--dry-run`; keep `--dry-run` while reviewing a single planned MCP entry.
91
-
92
- After init or setup, use the same local vault from the CLI or connected clients:
93
-
94
- ```sh
23
+ enigma setup --overwrite
95
24
  enigma remember --text-file ./memory.txt
96
25
  enigma search --query "..."
97
26
  enigma context --query "..." --optimize
@@ -99,15 +28,18 @@ enigma verify --export ./.enigma/export.json
99
28
  enigma connect claude-desktop --dry-run
100
29
  ```
101
30
 
102
- `enigma context --query ...` automatically applies local relevance scoring; `--optimize` is still accepted when you want explicit optimizer evidence or token/cost bounds.
31
+ `enigma setup --overwrite` writes local Enigma artifacts under the workspace `.enigma` path and emits deterministic, public-safe JSON without printing raw memory plaintext. It does not write Claude, Cursor, Kimi, or other third-party app configs. Client config writes happen only when you explicitly run `enigma connect <client>` without `--dry-run`; keep `--dry-run` while reviewing the planned MCP entry.
103
32
 
104
33
  The local Enigma vault remains canonical. Provider-native memory is non-canonical and should be treated as a convenience cache only. Enigma receipts prove Enigma-controlled vault state, receipts, checkpoints, and declared boundary operations; they do not prove provider deletion, provider model forgetting, provider-native memory removal, hosted availability, ROI/savings, or compliance certification.
105
34
 
106
- One-off public test drive without a global install:
35
+ ## Enigma Proof Network
36
+
37
+ Enigma Proof Network is the public proof layer for AI memory: local tools can package privacy-preserving roots, refs, counts, signatures, scoped capability grants, revocations, and benchmark attestations without exposing raw memory, prompts, transcripts, completions, embeddings, tenant names, private keys, provider responses, or provider credentials.
38
+
39
+ The `enigma chain anchor|grant|revoke|attest|verify` commands are local planning and verification commands. They emit public-safe JSON with `transaction_submitted:false` and `raw_memory_on_chain:false`; they do not submit Solana transactions, deploy hosted SaaS, create accounts, or call external providers.
40
+
41
+ Start with the category narrative in [`docs/market-category-narrative.md`](docs/market-category-narrative.md), then read the technical overview in [`docs/proof-network.md`](docs/proof-network.md), use its [Solana role](docs/proof-network.md#solana-role) section for the Solana-ready anchoring boundary, and read [`docs/proof-network-faq.md`](docs/proof-network-faq.md) for claim boundaries.
107
42
 
108
- ```sh
109
- npx --yes --package enigma-memory enigma test-drive --overwrite
110
- ```
111
43
 
112
44
  ## Advanced/source-only path
113
45
 
@@ -214,7 +146,7 @@ Supported connector profiles are:
214
146
  - `opencode`
215
147
  - `generic-mcp`
216
148
 
217
- After `enigma init --dry-run` previews the local package path and `enigma init --overwrite` creates a regular local workspace, preview a client connection before writing anything:
149
+ After `enigma setup --overwrite`, preview a client connection before writing anything:
218
150
 
219
151
  ```sh
220
152
  enigma connect claude-desktop --dry-run
@@ -223,11 +155,59 @@ enigma connect kimi-code --dry-run
223
155
  enigma connect generic-mcp --dry-run
224
156
  ```
225
157
 
226
- For the one-time setup flow, `enigma init --client auto --dry-run` reports the installed/config-present clients that connector detection selected and the clients it skipped with reasons. It remains read-only for client configs. `enigma init --connect --overwrite` is the explicit init-time write path for installed/config-present clients by default; missing configs are skipped rather than created. The older `enigma setup --client auto --overwrite` and `enigma setup --connect-installed --overwrite` commands remain available.
158
+ Remove `--dry-run` from `enigma connect <client>` only after you are ready for Enigma to merge the `mcpServers.enigma` entry into that specific client config. The safe default setup command never writes third-party app configs.
159
+
160
+ Copy-paste MCP snippets:
161
+
162
+ Claude Desktop:
163
+
164
+ ```json
165
+ {
166
+ "mcpServers": {
167
+ "enigma": {
168
+ "command": "enigma-mcp",
169
+ "args": [],
170
+ "env": {
171
+ "ENIGMA_BUNDLE": "/absolute/path/to/.enigma/bundle.json"
172
+ }
173
+ }
174
+ }
175
+ }
176
+ ```
177
+
178
+ Cursor:
179
+
180
+ ```json
181
+ {
182
+ "mcpServers": {
183
+ "enigma": {
184
+ "command": "enigma-mcp",
185
+ "args": [],
186
+ "env": {
187
+ "ENIGMA_BUNDLE": "/absolute/path/to/.enigma/bundle.json"
188
+ }
189
+ }
190
+ }
191
+ }
192
+ ```
193
+
194
+ Kimi Code:
227
195
 
228
- Remove `--dry-run` from `enigma connect <client>` only after you are ready for Enigma to merge the `mcpServers.enigma` entry into that specific client config. The safe default init/setup command never writes third-party app configs.
196
+ ```json
197
+ {
198
+ "mcpServers": {
199
+ "enigma": {
200
+ "command": "enigma-mcp",
201
+ "args": [],
202
+ "env": {
203
+ "ENIGMA_BUNDLE": "/absolute/path/to/.enigma/bundle.json"
204
+ }
205
+ }
206
+ }
207
+ }
208
+ ```
229
209
 
230
- Manual MCP entry for Claude Desktop, Cursor, Kimi Code, or any generic MCP client:
210
+ Generic MCP:
231
211
 
232
212
  ```json
233
213
  {
@@ -53,7 +53,7 @@ export const DEFAULT_GATEWAY_PORT = 8797;
53
53
  const DEFAULT_QUICKSTART_MEMORY = 'Enigma quickstart demo memory: local proof bundles can be created and verified without provider or cloud credentials.';
54
54
  const DEFAULT_CROSS_MODEL_DEMO_BUNDLE = '.enigma/cross-model-demo-bundle.json';
55
55
  const DEFAULT_CROSS_MODEL_MEMORY = 'Enigma cross-model demo memory: a local encrypted memory can be packaged for ChatGPT, Claude, Kimi, Cursor, and a local LLM without provider credentials.';
56
- const DEFAULT_SETUP_CLIENTS = Object.freeze(['generic-mcp', 'claude-desktop', 'cursor', 'kimi-code']);
56
+ const DEFAULT_SETUP_CLIENTS = Object.freeze(['generic-mcp', 'claude-desktop', 'cursor', 'kimi-code', 'vscode-cline']);
57
57
  const SETUP_CLAIM_BOUNDARIES = Object.freeze({
58
58
  local_only: true,
59
59
  provider_credentials_required: false,
@@ -1043,6 +1043,20 @@ function publicSetupError(error, rawDisplays, publicDisplays) {
1043
1043
  return new Error(message);
1044
1044
  }
1045
1045
 
1046
+ function oneCommandInstallConnect(bundleDisplay = DEFAULT_BUNDLE, outDirDisplay = dirname(bundleDisplay)) {
1047
+ const parts = ['npm install -g enigma-memory && enigma setup'];
1048
+ if (bundleDisplay !== DEFAULT_BUNDLE) parts.push(`--bundle ${commandPath(bundleDisplay)}`);
1049
+ if (outDirDisplay !== dirname(bundleDisplay)) parts.push(`--out-dir ${commandPath(outDirDisplay)}`);
1050
+ const base = parts.join(' ');
1051
+ return {
1052
+ installed_clients: `${base} --client auto --connect-installed --overwrite`,
1053
+ claude_desktop: `${base} --client claude-desktop --write-connectors --overwrite`,
1054
+ cursor: `${base} --client cursor --write-connectors --overwrite`,
1055
+ kimi_code: `${base} --client kimi-code --write-connectors --overwrite`,
1056
+ vscode_cline: `${base} --client vscode-cline --write-connectors --overwrite`,
1057
+ };
1058
+ }
1059
+
1046
1060
  function setupNextCommands(bundleInput, exportDisplay, clients, writeConnectors) {
1047
1061
  const primaryClient = clients[0] ?? DEFAULT_SETUP_CLIENTS[0];
1048
1062
  const commands = [
@@ -1297,6 +1311,7 @@ export async function setupCommand(flags, io) {
1297
1311
  client_selection: publicSetupClientSelection(selection),
1298
1312
  connector_write_skips: connectorWriteSkips(connectors),
1299
1313
  connectors,
1314
+ one_command_install_connect: oneCommandInstallConnect(displays.bundle, publicPathDisplay(outDirInput, 'out-dir')),
1300
1315
  mcp_config_snippets: Object.fromEntries(connectors.map((connector) => [connector.client_id, connector.mcp_config_snippet])),
1301
1316
  connect_plans: Object.fromEntries(connectors.map((connector) => [connector.client_id, connector.connect_plan])),
1302
1317
  next_commands: setupNextCommands(displays.bundle, displays.export, clients, connectorWritesRequested && (!connectInstalled || anyConnectorWritePerformed)),
@@ -1938,7 +1953,7 @@ export async function testDriveCommand(flags, io) {
1938
1953
  out_dir: outDirInput,
1939
1954
  bundle: bundleInput,
1940
1955
  install_command: `npm install -g ${packageJson.name ?? 'enigma-memory'}`,
1941
- release_target: '0.1.15',
1956
+ release_target: '0.1.16',
1942
1957
  artifacts_written: !dryRun,
1943
1958
  client_configs_written: false,
1944
1959
  client_config_write_required: false,
@@ -2122,6 +2137,7 @@ export async function installCommand(flags, io) {
2122
2137
  mcp_command: connectorOptions(flags).mcpCommand ?? 'enigma-mcp',
2123
2138
  clients: profiles,
2124
2139
  mcp_config_snippets: snippets,
2140
+ one_command_install_connect: oneCommandInstallConnect(bundlePath, dirname(bundlePath)),
2125
2141
  out: out && out !== true ? resolve(String(out)) : undefined,
2126
2142
  }, io);
2127
2143
  return 0;
@@ -2445,11 +2461,11 @@ async function readSolanaKeypair(path) {
2445
2461
  } catch {
2446
2462
  throw new Error('Unable to read a valid Solana --keypair JSON array.');
2447
2463
  }
2448
- if (!Array.isArray(parsed) || parsed.length === 0) throw new Error('Solana --keypair must be a JSON array of secret-key bytes.');
2464
+ if (!Array.isArray(parsed) || parsed.length !== 64) throw new Error('Solana --keypair must be a JSON array of 64 secret-key bytes.');
2449
2465
  const bytes = new Uint8Array(parsed.length);
2450
2466
  for (let i = 0; i < parsed.length; i += 1) {
2451
2467
  const value = parsed[i];
2452
- if (!Number.isInteger(value) || value < 0 || value > 255) throw new Error('Solana --keypair must be a JSON array of secret-key bytes.');
2468
+ if (!Number.isInteger(value) || value < 0 || value > 255) throw new Error('Solana --keypair must be a JSON array of 64 secret-key bytes.');
2453
2469
  bytes[i] = value;
2454
2470
  }
2455
2471
  return bytes;
@@ -2955,6 +2971,15 @@ function usage() {
2955
2971
  '--dry-run': 'Plan setup without writing local artifacts or client configs.',
2956
2972
  '--write-connectors': 'Also write selected client MCP config files. Defaults to false.',
2957
2973
  },
2974
+ install_options: {
2975
+ 'one-command installed clients': 'npm install -g enigma-memory && enigma setup --client auto --connect-installed --overwrite',
2976
+ 'one-command Claude Desktop': 'npm install -g enigma-memory && enigma setup --client claude-desktop --write-connectors --overwrite',
2977
+ 'one-command Cursor': 'npm install -g enigma-memory && enigma setup --client cursor --write-connectors --overwrite',
2978
+ 'one-command Kimi Code': 'npm install -g enigma-memory && enigma setup --client kimi-code --write-connectors --overwrite',
2979
+ 'one-command VS Code Cline': 'npm install -g enigma-memory && enigma setup --client vscode-cline --write-connectors --overwrite',
2980
+ '--client <id>': 'Limit generated MCP snippets to one supported client.',
2981
+ '--out <path>': 'Write generated MCP snippets to a JSON file for review without hand-editing client config JSON.',
2982
+ },
2958
2983
  quickstart_options: {
2959
2984
  '--bundle <path>': 'Bundle JSON to create. Defaults to .enigma/bundle.json.',
2960
2985
  '--out-dir <path>': 'Directory for context-pack.json, export.json, and verify-report.json. Defaults to the bundle directory.',
@@ -3022,7 +3047,7 @@ function usage() {
3022
3047
  revoke: 'enigma chain revoke --grant-hash <sha256:...> --reason <public-reason-code> [--revocation-ref <public-ref>] [--out <file>]',
3023
3048
  attest: 'enigma chain attest (--report-hash <sha256:...> | --report-file <report.json>) --dataset-ref <sha256:...> --runner-ref <public-runner-ref> --package-ref <public-package-ref> [--score name=value] [--out <file>]',
3024
3049
  verify: 'enigma chain verify --file <proof-artifact.json>',
3025
- submit_solana: 'enigma chain submit-solana --file <proof-artifact.json> --cluster <devnet|testnet|mainnet-beta|localnet> [--rpc <url>] [--execute --keypair <solana-keypair.json>]',
3050
+ submit_solana: 'enigma chain submit-solana --file <proof-artifact.json> --cluster <devnet|testnet|mainnet-beta|localnet> [--rpc <url>] [--execute --keypair <solana-cli-64-byte-keypair.json>]',
3026
3051
  boundary: 'Proof Network chain commands default to local planning and dry-run validation. submit-solana only submits a Solana Memo transaction when --execute is passed; it carries compact public-safe commitment/ref JSON, never raw memory or artifact bodies.',
3027
3052
  },
3028
3053
  relay_gateway_options: {
@@ -55,6 +55,26 @@ The CLI manifest generator and install-plan preview are the recommended path bec
55
55
 
56
56
  4. If your browser does not inherit the `ENIGMA_BUNDLE` user environment, create a small local wrapper that sets `ENIGMA_BUNDLE` and then execs the absolute `enigma-native-host` path. Point the manifest `path` to that wrapper. Keep the wrapper owner-writable only.
57
57
 
58
+
59
+ ## Fast MCP client setup
60
+
61
+ For Claude Desktop, Cursor, Kimi Code, and VS Code Cline, avoid hand-editing MCP JSON. After installing the package, use the CLI to create the local bundle and merge only the Enigma MCP server entry into the selected client config:
62
+
63
+ ```sh
64
+ npm install -g enigma-memory && enigma setup --client claude-desktop --write-connectors --overwrite
65
+ npm install -g enigma-memory && enigma setup --client cursor --write-connectors --overwrite
66
+ npm install -g enigma-memory && enigma setup --client kimi-code --write-connectors --overwrite
67
+ npm install -g enigma-memory && enigma setup --client vscode-cline --write-connectors --overwrite
68
+ ```
69
+
70
+ To connect only clients whose config files already exist, use:
71
+
72
+ ```sh
73
+ npm install -g enigma-memory && enigma setup --client auto --connect-installed --overwrite
74
+ ```
75
+
76
+ The generated MCP entry uses `enigma-mcp` with `ENIGMA_BUNDLE` pointing at the local bundle. Existing sibling MCP servers are preserved; changed configs are backed up by `enigma connect`.
77
+
58
78
  ## Generate a manifest
59
79
 
60
80
  Use the CLI generator instead of hand-editing JSON:
@@ -103,50 +103,46 @@ and are non-empty.
103
103
  `sim.enigmamemory.com`, `relay.sim.enigmamemory.com`,
104
104
  `gateway.sim.enigmamemory.com`, and `*.sim.enigmamemory.com`.
105
105
 
106
- ## Collect hosted backend live evidence
106
+ ## Shortest path from local simulation to hosted readiness
107
107
 
108
- The simulation can be probed as if it were a public hosted deployment by
109
- using the public-looking domain `sim.enigmamemory.com`. Because the domain
110
- has no real DNS record, the collector resolves it to `127.0.0.1` locally and
111
- accepts the self-signed certificate.
108
+ The local simulation proves that the relay, gateway, fail-closed readiness
109
+ checks, hosted-live collector, and hosted-live validator can interoperate. It
110
+ does **not** produce production go-live evidence because it uses loopback DNS,
111
+ self-signed TLS, mocked KMS/SIEM services, and fixture operator approval.
112
112
 
113
- 1. Build a simulation operator acceptance packet:
113
+ Run the local proof without external credentials:
114
114
 
115
- ```bash
116
- node scripts/build-operator-acceptance-packet.mjs \
117
- --complete-fixture --decision go --packet-id sim-operator-acceptance \
118
- --tenant enigma-sim --deployment-mode hosted --environment local-simulation \
119
- --target-regions local --requested-go-live-date 2026-06-25 \
120
- --evidence-repository https://github.com/enigma-memory/evidence/sim \
121
- --packet-owner "Simulation Owner" \
122
- --last-updated 2026-06-25T00:00:00.000Z \
123
- --owners-json .enigma/sim-owner-overrides.json \
124
- --evidence-refs .enigma/sim-evidence-overrides.json \
125
- --out .enigma/sim-operator-acceptance.json --validate
126
- ```
115
+ ```bash
116
+ node --test test/enigma-hosted-go-live-simulation.test.mjs
117
+ ```
127
118
 
128
- 2. Collect and validate live evidence:
119
+ That test starts `deploy/docker-compose.local-production-simulation.yml`,
120
+ builds a simulation-only operator acceptance packet, collects relay/gateway
121
+ `/livez` and `/readyz` evidence, validates it with
122
+ `scripts/validate-hosted-backend-live.mjs`, and tears the stack down. For manual
123
+ simulation probing, `production:hosted-collect -- --local-simulation-loopback`
124
+ is restricted to `https://*.sim.enigmamemory.com` loopback probes with
125
+ self-signed TLS and must not be used as production evidence.
129
126
 
130
- ```bash
131
- node .enigma/collect-sim-evidence.mjs \
132
- --relay-url https://sim.enigmamemory.com:8443 \
133
- --gateway-url https://sim.enigmamemory.com:9443 \
134
- --refs-json .enigma/sim-hosted-refs.json \
135
- --domain sim.enigmamemory.com --environment-id local-simulation \
136
- --cloud-provider local --region local --owner enigma-sim \
137
- --operator-decision go \
138
- --operator-packet-ref .enigma/sim-operator-acceptance.json \
139
- --operator-approved-at <iso8601> --operator-approved-by enigma-sim \
140
- --out .enigma/hosted-backend-live-collection.json \
141
- --evidence-out .enigma/hosted-backend-live-simulated.json
142
-
143
- node scripts/validate-hosted-backend-live.mjs \
144
- --evidence .enigma/hosted-backend-live-simulated.json
145
- ```
127
+ Move from that local proof to real hosted relay/gateway readiness with the same
128
+ script chain, replacing every template with operator-owned production evidence:
129
+
130
+ ```bash
131
+ npm run production:evidence-starter -- --out-dir <evidence-dir> --domain enigmamemory.com --tenant <tenant-id> --environment production
132
+ npm run production:backend-env -- --out-dir <backend-env-kit-dir> --domain enigmamemory.com --tenant <tenant-id> --environment production
133
+ # Operator deploys relay/gateway from deploy/docker-compose.production.example.yml or deploy/kubernetes/enigma-backend.example.yaml using private filled env/secrets.
134
+ npm run production:manifests -- --out <evidence-dir>/production-manifests.json
135
+ npm run production:storage -- --out <evidence-dir>/production-storage-migration.json
136
+ npm run infrastructure:readiness -- --manifest <evidence-dir>/infrastructure-readiness-manifest.json --live --cloudflare-live required > <evidence-dir>/infrastructure-readiness-live.json
137
+ npm run production:hosted-collect -- --relay-url https://relay.enigmamemory.com --gateway-url https://gateway.enigmamemory.com --refs-json <evidence-dir>/hosted-refs.json --domain enigmamemory.com --environment-id production --cloud-provider <provider> --region <region> --owner <owner> --operator-decision go --operator-packet-ref <operator-packet-ref> --operator-approved-at <iso8601> --operator-approved-by <operator> --out <evidence-dir>/hosted-backend-live-collection.json --evidence-out <evidence-dir>/hosted-backend-live.json
138
+ npm run production:hosted-live -- --evidence <evidence-dir>/hosted-backend-live.json
139
+ npm run production:acceptance:packet -- --out <evidence-dir>/operator-acceptance-packet.json --owners-json <evidence-dir>/owner-approval-refs.json --evidence-refs <evidence-dir>/evidence-refs.json --readiness <evidence-dir>/infrastructure-readiness-live.json --manifest <evidence-dir>/infrastructure-readiness-manifest.json --storage <evidence-dir>/production-storage-migration.json --release-audit .enigma/release-audit-current.json --production-manifests <evidence-dir>/production-manifests.json --decision go --tenant <tenant-id> --target-regions <regions> --requested-go-live-date <date> --evidence-repository <evidence-repository> --packet-owner <operator> --validate
140
+ npm run production:acceptance -- --packet <evidence-dir>/operator-acceptance-packet.json
141
+ ```
146
142
 
147
- The expected result is `status: accepted` with all four probes observed and no
148
- blockers. The wrapper does not mutate DNS or deploy infrastructure and never
149
- sends credentials.
143
+ Hosted readiness remains blocked until the production commands above observe
144
+ public HTTPS relay/gateway probes, all required hosted refs, and operator
145
+ acceptance `go` for the exact target environment.
150
146
 
151
147
  Never commit `deploy/secrets-simulation/` or `*.pem` files. Both are
152
148
  `.gitignore`d.
@@ -169,7 +169,7 @@ Minimum public-safe attestation skeleton:
169
169
  "track": "public_practice",
170
170
  "program": {
171
171
  "name": "enigma_benchmark_attestation_network",
172
- "version": "0.1.15",
172
+ "version": "0.1.16",
173
173
  "policy_ref": "sha256:policy-root"
174
174
  },
175
175
  "run": {
@@ -177,7 +177,7 @@ Minimum public-safe attestation skeleton:
177
177
  "nonce": "sha256:run-nonce-commitment",
178
178
  "status": "completed",
179
179
  "runner_ref": "sha256:runner-root",
180
- "package_ref": "npm:enigma-memory@0.1.15",
180
+ "package_ref": "npm:enigma-memory@0.1.16",
181
181
  "adapter_ref": "local:enigma-relevance",
182
182
  "environment_ref": "sha256:environment-summary-root"
183
183
  },
@@ -4,7 +4,7 @@ This guide explains how to reproduce the current local Enigma memory benchmark,
4
4
 
5
5
  ## What is reproducible today
6
6
 
7
- The current planned package is `enigma-memory@0.1.15`. Two benchmark paths are reproducible without provider credentials:
7
+ The current planned package is `enigma-memory@0.1.16`. Two benchmark paths are reproducible without provider credentials:
8
8
 
9
9
  1. The local deterministic memory suite, available through the package script and the script file it wraps:
10
10
 
@@ -20,12 +20,15 @@ The current planned package is `enigma-memory@0.1.15`. Two benchmark paths are r
20
20
  2. The official-dataset standard runner, which consumes locally downloaded LoCoMo and/or LongMemEval JSON files:
21
21
 
22
22
  ```sh
23
+ node scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --max-locomo-qa 25 --max-longmemeval-items 25 --top-k 5 --dry-run
23
24
  node scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --max-locomo-qa 25 --max-longmemeval-items 25 --top-k 5 --out .enigma/standard-memory-benchmark-sample.json
24
25
  ```
25
26
 
26
- The standard report schema is `enigma.standard_memory_benchmark_suite.v1`. It scores retrieval/evidence coverage over official dataset records with local deterministic methods only. It does not call LLM providers, generate final answers, grade natural-language answer correctness, call competitor SDKs, or create provider/competitor scores.
27
+ The `--dry-run` command emits `enigma.standard_memory_benchmark_plan.v1`: a public-safe offline plan with file names, sample caps, top-k, local method rows, a requirements-only Mem0 adapter row, and explicit boundaries. It does not read dataset files, hash data, produce scores, call APIs, run Mem0 or competitor adapters, generate answers, or spend provider budget.
27
28
 
28
- In that standard report, `keyword_filter` is intentionally the simpler lexical baseline. `enigma_relevance` is the deterministic Enigma retrieval approximation: it uses deterministic query expansion, term normalization and stemming, task/category and temporal/date hints, role/session metadata, phrase/proximity scoring, and final reranking for evidence diversity. It does not use raw answer text, evidence labels, or `has_answer` flags to choose records. It must be interpreted only as retrieval/evidence proxy scoring over the local dataset file named in the report, not as LLM answer accuracy, provider performance, competitor performance, or leaderboard standing.
29
+ The scored standard report schema is `enigma.standard_memory_benchmark_suite.v1`. It scores retrieval/evidence coverage over official dataset records with local deterministic methods only and includes a requirements-only Mem0 row with `scores_included:false`. It does not call LLM providers, generate final answers, grade natural-language answer correctness, call Mem0 or other competitor SDKs, or create provider/competitor scores.
30
+
31
+ In that standard report, `keyword_filter` is intentionally the simpler lexical baseline. `enigma_relevance` is the deterministic Enigma retrieval approximation: it uses deterministic query expansion, term normalization and stemming, task/category and temporal/date hints, role/session metadata, phrase/proximity scoring, and final reranking for evidence diversity. It does not use raw answer text, evidence labels, or `has_answer` flags to choose records. It must be interpreted only as retrieval/evidence proxy scoring over the local dataset file named in the report, not as LLM answer accuracy, provider performance, Mem0/competitor performance, or leaderboard standing.
29
32
 
30
33
  | Standard-runner row | Retrieval boundary |
31
34
  | --- | --- |
@@ -64,7 +67,7 @@ Do not commit downloaded files or raw benchmark conversations. The package `.git
64
67
 
65
68
  ## Reproduce and save local fixture JSON
66
69
 
67
- 1. Use a clean checkout containing `enigma-memory@0.1.15`.
70
+ 1. Use a clean checkout containing `enigma-memory@0.1.16`.
68
71
  2. From a repository root that contains `enigma/package.json`, enter the package directory:
69
72
 
70
73
  ```sh
@@ -94,7 +97,15 @@ Interpret improvements as local fixture behavior. Enigma reduces context-pack es
94
97
 
95
98
  ## Run the official-dataset standard benchmark
96
99
 
97
- The standard runner reads local dataset files produced by the downloader and writes a public-safe proxy report to the path supplied with `--out`. A bounded sample is the safest first run:
100
+ The standard runner reads local dataset files produced by the downloader and writes a public-safe proxy report to the path supplied with `--out`. Preview the exact offline boundary first:
101
+
102
+ ```sh
103
+ node scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --max-locomo-qa 25 --max-longmemeval-items 25 --top-k 5 --dry-run
104
+ ```
105
+
106
+ That command proves only the planned local files, sample bounds, `--top-k`, deterministic local rows, and no-API/no-Mem0/no-competitor/no-score boundary. It does not prove the files exist, hash the datasets, or report accuracy.
107
+
108
+ A bounded scored sample is the safest first run:
98
109
 
99
110
  ```sh
100
111
  node scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --max-locomo-qa 25 --max-longmemeval-items 25 --top-k 5 --out .enigma/standard-memory-benchmark-sample.json
@@ -106,6 +117,7 @@ Useful runner options:
106
117
  - `--longmemeval <path>` supplies a local LongMemEval JSON file. Use one cleaned split per run when you want split-specific evidence.
107
118
  - `--max-locomo-qa <n>` and `--max-longmemeval-items <n>` bound the sample size.
108
119
  - `--top-k <n>` controls retrieval depth; the default is `5`.
120
+ - `--dry-run` prints the public-safe offline plan and does not read dataset files or produce scores.
109
121
  - `--out <path>` writes public-safe JSON to that path. Without `--out`, the report is printed to stdout.
110
122
 
111
123
  If only `--locomo` or only `--longmemeval` is supplied, the runner scores only that dataset.
@@ -130,7 +142,7 @@ Public sharing should include the generated benchmark report JSON and generated
130
142
 
131
143
  ## Proof-network benchmark attestations
132
144
 
133
- For the planned 0.1.15 proof-network layer, benchmark results should be represented as a public-safe local attestation rather than by publishing raw benchmark inputs. The attestation JSON uses `schema: "enigma.proof_network.benchmark_attestation.v1"` and may be bundled in `enigma.proof_network.packet.v1` for review. The benchmark proof-release flow is local planning only: it does not call APIs, submit transactions, or claim hosted SaaS behavior, and generated artifacts must keep `transaction_submitted: false` and `raw_memory_on_chain: false`.
145
+ For the planned 0.1.16 proof-network layer, benchmark results should be represented as a public-safe local attestation rather than by publishing raw benchmark inputs. The attestation JSON uses `schema: "enigma.proof_network.benchmark_attestation.v1"` and may be bundled in `enigma.proof_network.packet.v1` for review. The benchmark proof-release flow is local planning only: it does not call APIs, submit transactions, or claim hosted SaaS behavior, and generated artifacts must keep `transaction_submitted: false` and `raw_memory_on_chain: false`.
134
146
 
135
147
  Hash the generated benchmark report and companion dataset manifest, then attest only the report hash, schema name, dataset refs, runner refs, package refs, score commitments, record counts, top-k/sample bounds, and timestamps needed for review. The public artifacts must not contain raw dataset rows, raw conversations, prompts, private questions, private answers, provider responses, embeddings, credentials, tenant names, account ids, local absolute paths, unpublished benchmark scores, or the raw benchmark report body.
136
148
 
@@ -139,12 +151,12 @@ Use a `sha256:<hex>` commitment for the report and manifest. The proof-release s
139
151
  After running one of the benchmark commands above and confirming the report is public-safe, create a local proof release:
140
152
 
141
153
  ```sh
142
- npm run benchmark:proof-release -- --report .enigma/standard-memory-benchmark-sample.json --dataset-ref "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" --runner-ref "runner:run-standard-memory-benchmarks.mjs@reviewed-revision" --package-ref "enigma-memory@0.1.15" --score "retrieval_evidence_proxy=<value-copied-from-report>" --out-dir .enigma/benchmark-proof-release
154
+ npm run benchmark:proof-release -- --report .enigma/standard-memory-benchmark-sample.json --dataset-ref "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" --runner-ref "runner:run-standard-memory-benchmarks.mjs@reviewed-revision" --package-ref "enigma-memory@0.1.16" --score "retrieval_evidence_proxy=<value-copied-from-report>" --out-dir .enigma/benchmark-proof-release
143
155
  ```
144
156
 
145
- The command writes `benchmark-attestation.json`, `benchmark-proof-packet.json`, and `benchmark-proof-release.json` in the output directory. The release manifest uses `schema: "enigma.benchmark_proof_release.v1"` and records explicit boundaries: local benchmark attestation only, no API calls, no provider answer-accuracy claim, no competitor performance claim, no Solana submission claim, no hosted SaaS claim, and no ROI/profit/provider-savings claim.
157
+ The command writes `benchmark-attestation.json`, `benchmark-proof-packet.json`, and `benchmark-proof-release.json` in the output directory. The release manifest uses `schema: "enigma.benchmark_proof_release.v1"` and records explicit boundaries: local benchmark attestation only, local report file hashing only, no network calls, no provider APIs, no API spend, no provider answer-accuracy claim, no competitor performance claim, no Solana submission claim, no hosted SaaS claim, and no ROI/profit/provider-savings claim.
146
158
 
147
- When a report file is supplied, the generated attestation is a reproducibility receipt for a specific local report hash and explicitly supplied aggregate score commitments. It is not evidence of provider answer accuracy, competitor performance, Solana settlement, ROI, hosted-cloud readiness, provider deletion, model forgetting, or live model behavior.
159
+ When a report file is supplied, the generated attestation is a reproducibility receipt for a specific local report hash and explicitly supplied aggregate score commitments. The proof builder now requires a compatible benchmark schema plus explicit offline `benchmark_boundaries`, and rejects scored external adapter rows. It is not evidence of provider answer accuracy, Mem0 or competitor performance, Solana settlement, ROI, hosted-cloud readiness, provider deletion, model forgetting, or live model behavior.
148
160
 
149
161
  ## Local baseline rows in the report
150
162
 
@@ -27,21 +27,24 @@ node scripts/package-browser-extension.mjs --zip ./dist/enigma-browser-extension
27
27
 
28
28
  The ZIP command does not publish, sign, upload, or submit the extension.
29
29
 
30
- ## Install the native host first
30
+ ## Install the native host and MCP connector first
31
31
 
32
- Install the npm package so both `enigma` and `enigma-native-host` are available:
32
+ Install the npm package, create the local bundle, and let Enigma merge the MCP server entry into the selected client config. Pick the command for the client you use:
33
33
 
34
34
  ```sh
35
- npm install -g enigma-memory
35
+ npm install -g enigma-memory && enigma setup --client claude-desktop --write-connectors --overwrite
36
+ npm install -g enigma-memory && enigma setup --client cursor --write-connectors --overwrite
37
+ npm install -g enigma-memory && enigma setup --client kimi-code --write-connectors --overwrite
38
+ npm install -g enigma-memory && enigma setup --client vscode-cline --write-connectors --overwrite
36
39
  ```
37
40
 
38
- Create or select a local bundle:
41
+ If you want Enigma to touch only client config files that already exist, use:
39
42
 
40
43
  ```sh
41
- enigma init --bundle <absolute-bundle-path> --subject local-user --display-name "Local user"
44
+ npm install -g enigma-memory && enigma setup --client auto --connect-installed --overwrite
42
45
  ```
43
46
 
44
- Set `ENIGMA_BUNDLE` for the browser-launched host process, or point the native-host manifest at a small local wrapper that sets `ENIGMA_BUNDLE=<absolute-bundle-path>` before launching `enigma-native-host`. Native messaging manifests require an absolute executable path; they do not expand shell aliases, `~`, `$HOME`, `%USERPROFILE%`, or command arguments.
47
+ Set `ENIGMA_BUNDLE` for the browser-launched host process to the same bundle path reported by setup, or point the native-host manifest at a small local wrapper that sets `ENIGMA_BUNDLE=<absolute-bundle-path>` before launching `enigma-native-host`. Native messaging manifests require an absolute executable path; they do not expand shell aliases, `~`, `$HOME`, `%USERPROFILE%`, or command arguments.
45
48
 
46
49
  Resolve the absolute host executable path:
47
50