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.
- package/README.md +64 -84
- package/apps/cli/bin/enigma.mjs +30 -5
- package/apps/native-host/README.md +20 -0
- package/deploy/SIMULATION.md +34 -38
- package/docs/benchmark-attestation-network.md +2 -2
- package/docs/benchmark-reproducibility.md +21 -9
- package/docs/browser-extension-install.md +9 -6
- package/docs/client-connectors.md +22 -52
- package/docs/demo-proof-network.md +3 -3
- package/docs/developer-ecosystem.md +205 -223
- package/docs/developer-proof-quickstart.md +3 -3
- package/docs/enigma-memory-ready-conformance.md +1 -1
- package/docs/hosted-cloud-product.md +2 -0
- package/docs/install-anywhere.md +61 -66
- package/docs/memory-benchmarks.md +6 -3
- package/docs/proof-network-build-notes.md +2 -2
- package/docs/proof-network.md +32 -7
- package/docs/sdk-api.md +1 -1
- package/docs/solana-devnet-acceptance.md +1 -1
- package/docs/solana-proof-rail.md +1 -1
- package/package.json +7 -1
- package/packages/connectors/src/index.js +13 -0
- package/packages/mcp-server/README.md +22 -0
- package/packages/mcp-server/src/index.js +1 -1
- package/scripts/build-benchmark-proof-release.mjs +106 -5
- package/scripts/build-cloudflare-token-policy.mjs +6 -2
- package/scripts/build-hosted-api-key-lifecycle.mjs +1 -1
- package/scripts/build-hosted-customer-lifecycle.mjs +1 -1
- package/scripts/build-installer-assets.mjs +1 -1
- package/scripts/build-production-handoff-packet.mjs +1 -1
- package/scripts/build-production-unblocker.mjs +1 -1
- package/scripts/build-production-workplan.mjs +3 -1
- package/scripts/build-proof-network-packet.mjs +1 -1
- package/scripts/check.mjs +3 -1
- package/scripts/cloudflare-ops.mjs +35 -0
- package/scripts/collect-hosted-backend-live-evidence.mjs +44 -2
- package/scripts/run-memory-benchmarks.mjs +5 -0
- package/scripts/run-standard-memory-benchmarks.mjs +127 -3
- 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
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
210
|
+
Generic MCP:
|
|
231
211
|
|
|
232
212
|
```json
|
|
233
213
|
{
|
package/apps/cli/bin/enigma.mjs
CHANGED
|
@@ -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.
|
|
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
|
|
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:
|
package/deploy/SIMULATION.md
CHANGED
|
@@ -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
|
-
##
|
|
106
|
+
## Shortest path from local simulation to hosted readiness
|
|
107
107
|
|
|
108
|
-
The simulation
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
113
|
+
Run the local proof without external credentials:
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
-
|
|
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.
|
|
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`.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
|
|
41
|
+
If you want Enigma to touch only client config files that already exist, use:
|
|
39
42
|
|
|
40
43
|
```sh
|
|
41
|
-
|
|
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
|
|