enigma-memory 0.1.18 → 0.1.22
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 +76 -24
- package/apps/cli/bin/enigma-desktop.mjs +140 -0
- package/apps/cli/bin/enigma-terminal.mjs +78 -0
- package/apps/cli/bin/enigma.mjs +1923 -285
- package/apps/desktop/electron-main.cjs +217 -0
- package/apps/desktop/package.json +12 -0
- package/apps/desktop/src/app.js +264 -7
- package/apps/desktop/src/index.html +3514 -1373
- package/apps/desktop/src/launch-electron.mjs +51 -0
- package/apps/desktop/src/server.mjs +2914 -0
- package/apps/desktop/src/styles.css +2972 -260
- package/apps/desktop/src/zk-browser-prove.mjs +53 -0
- package/apps/desktop/src/zk-state.mjs +1789 -0
- package/apps/gateway/bin/enigma-gateway.mjs +102 -5
- package/apps/gateway/src/server.mjs +271 -8
- package/apps/ios/EnigmaCore/Package.swift +12 -0
- package/apps/ios/EnigmaCore/Sources/EnigmaCore/EnigmaAPIClient.swift +227 -0
- package/apps/ios/EnigmaCore/Sources/EnigmaCore/Models.swift +278 -0
- package/apps/ios/EnigmaCore/Sources/EnigmaCore/PKCE.swift +96 -0
- package/apps/ios/EnigmaCore/Sources/EnigmaCore/PrivacyMinimizer.swift +187 -0
- package/apps/ios/EnigmaCore/Sources/EnigmaCore/ToolModels.swift +129 -0
- package/apps/ios/EnigmaCore/Tests/EnigmaCoreTests/EnigmaCoreTests.swift +42 -0
- package/apps/ios/EnigmaIOS/Enigma/AppModel.swift +346 -0
- package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/AccentColor.colorset/Contents.json +12 -0
- package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/AppIcon.appiconset/Contents.json +11 -0
- package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/AppIcon.appiconset/EnigmaAppIcon.png +0 -0
- package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/Contents.json +3 -0
- package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/LaunchBackground.colorset/Contents.json +12 -0
- package/apps/ios/EnigmaIOS/Enigma/ChatView.swift +181 -0
- package/apps/ios/EnigmaIOS/Enigma/CouncilView.swift +78 -0
- package/apps/ios/EnigmaIOS/Enigma/CreateView.swift +152 -0
- package/apps/ios/EnigmaIOS/Enigma/EnigmaApp.swift +52 -0
- package/apps/ios/EnigmaIOS/Enigma/Info.plist +52 -0
- package/apps/ios/EnigmaIOS/Enigma/NaturalLanguagePrivacyTagger.swift +26 -0
- package/apps/ios/EnigmaIOS/Enigma/OAuthClient.swift +321 -0
- package/apps/ios/EnigmaIOS/Enigma/OnboardingView.swift +105 -0
- package/apps/ios/EnigmaIOS/Enigma/PrivateVaultView.swift +275 -0
- package/apps/ios/EnigmaIOS/Enigma/SecureStore.swift +76 -0
- package/apps/ios/EnigmaIOS/Enigma/SettingsView.swift +60 -0
- package/apps/ios/EnigmaIOS/Enigma/Theme.swift +80 -0
- package/apps/ios/EnigmaIOS/EnigmaIOS.xcodeproj/project.pbxproj +211 -0
- package/apps/ios/EnigmaIOS/EnigmaIOS.xcodeproj/xcshareddata/xcschemes/Enigma.xcscheme +23 -0
- package/apps/native-host/README.md +19 -8
- package/apps/native-host/bin/enigma-native-host.mjs +229 -13
- package/apps/relay/bin/enigma-relay.mjs +103 -5
- package/apps/relay/src/federation-runtime.mjs +618 -0
- package/apps/relay/src/server.mjs +310 -9
- package/apps/verifier/bin/enigma-verify.mjs +327 -11
- package/cortex-v3/circuits/build/intent_vk_bytes.json +35 -0
- package/cortex-v3/circuits/build/sale_vk_bytes.json +35 -0
- package/cortex-v3/circuits/build/vk_bytes.json +32 -0
- package/cortex-v3/proving-assets.json +64 -0
- package/cortex-v3/zk/BUILD-CONTRACT.md +87 -0
- package/cortex-v3/zk/action-transition-vk.json +119 -0
- package/cortex-v3/zk/alias-adversarial.test.mjs +220 -0
- package/cortex-v3/zk/groth16-verify-child.mjs +17 -0
- package/cortex-v3/zk/intent-witness.mjs +365 -0
- package/cortex-v3/zk/intent-witness.test.mjs +485 -0
- package/cortex-v3/zk/proving-assets.mjs +203 -0
- package/cortex-v3/zk/sale-witness.mjs +783 -0
- package/cortex-v3/zk/sale-witness.test.mjs +784 -0
- package/cortex-v3/zk/sealed-sale-release-vk.json +119 -0
- package/cortex-v3/zk/settlement-evidence.mjs +722 -0
- package/cortex-v3/zk/setup-intent.mjs +688 -0
- package/cortex-v3/zk/setup-sale.mjs +666 -0
- package/cortex-v3/zk/setup.mjs +594 -0
- package/cortex-v3/zk/witness.mjs +184 -0
- package/cortex-v3/zk/zk-codec.mjs +232 -0
- package/cortex-v3/zk/zk-codec.test.mjs +293 -0
- package/cortex-v3/zk/zk-settle.mjs +370 -0
- package/cortex-v3/zk/zk-tree.mjs +256 -0
- package/cortex-v3/zk/zk-tree.test.mjs +419 -0
- package/deploy/docker-compose.local-production-simulation.yml +36 -0
- package/docs/browser-extension-install.md +8 -6
- package/docs/client-connectors.md +15 -11
- package/docs/developer-ecosystem.md +15 -13
- package/docs/enigma-memory-ready-conformance.md +11 -9
- package/docs/install-anywhere.md +61 -28
- package/docs/installers-and-desktop.md +8 -7
- package/docs/novelty-invention-candidates.md +161 -161
- package/docs/proof-network-claim-boundaries.md +320 -318
- package/examples/01-quickstart-agent/index.mjs +49 -0
- package/examples/01_agent_memory_quickstart.mjs +57 -0
- package/examples/02-multi-agent-swarm/index.mjs +57 -0
- package/examples/02_cross_model_passport.mjs +64 -0
- package/examples/03-langchain-memory/index.mjs +41 -0
- package/examples/03_poseidon_commitment_verification.mjs +71 -0
- package/examples/04-python-trading-agent/trader.py +49 -0
- package/examples/README.md +27 -0
- package/examples/ci/github-actions.yml +7 -2
- package/package.json +142 -11
- package/packages/adapters/PACKAGE_CONTRACT.md +1 -1
- package/packages/connectors/src/index.js +196 -4
- package/packages/connectors/swarm-router.mjs +168 -0
- package/packages/core/src/index.js +248 -1
- package/packages/core/src/version.mjs +7 -0
- package/packages/dev-tools/package.json +19 -0
- package/packages/dev-tools/src/index.js +4 -0
- package/packages/dev-tools/src/memory-benchmark-suite.js +112 -0
- package/packages/dev-tools/src/swarm-simulator.js +101 -0
- package/packages/dev-tools/src/vault-inspector.js +114 -0
- package/packages/dev-tools/src/vector-benchmark.js +100 -0
- package/packages/developer-platform/src/access-credentials.js +341 -0
- package/packages/developer-platform/src/http.js +132 -0
- package/packages/developer-platform/src/index.js +4 -0
- package/packages/developer-platform/src/usage-http.js +60 -0
- package/packages/developer-platform/src/usage.js +295 -0
- package/packages/enclave-runtime/attestation.mjs +159 -0
- package/packages/enclave-runtime/index.mjs +47 -0
- package/packages/enclave-runtime/session-manager.mjs +253 -0
- package/packages/enclave-runtime/zeroization-proof.mjs +227 -0
- package/packages/enigma-reflex/package.json +14 -0
- package/packages/enigma-reflex/src/index.js +204 -0
- package/packages/enigma-reflex/training/generate-dataset.mjs +40 -0
- package/packages/enigma-reflex/training/requirements.txt +8 -0
- package/packages/enigma-reflex/training/train.py +314 -0
- package/packages/enigma-weave/LICENSE +22 -0
- package/packages/enigma-weave/UPSTREAM.json +21 -0
- package/packages/enigma-weave/package.json +14 -0
- package/packages/enigma-weave/src/index.js +286 -0
- package/packages/hosted-cloud/src/index.js +80 -5
- package/packages/importers/src/index.js +432 -0
- package/packages/inference-runtime/src/browser.js +401 -0
- package/packages/inference-runtime/src/chat.js +265 -0
- package/packages/inference-runtime/src/code.js +407 -0
- package/packages/inference-runtime/src/contracts.js +162 -0
- package/packages/inference-runtime/src/http.js +232 -0
- package/packages/inference-runtime/src/image.js +186 -0
- package/packages/inference-runtime/src/index.js +10 -0
- package/packages/inference-runtime/src/model-router.js +320 -0
- package/packages/inference-runtime/src/platform.js +125 -0
- package/packages/inference-runtime/src/privacy.js +400 -0
- package/packages/inference-runtime/src/video.js +253 -0
- package/packages/mcp-server/README.md +22 -6
- package/packages/mcp-server/bin/enigma-mcp.mjs +2 -1
- package/packages/mcp-server/src/index.js +1418 -105
- package/packages/mcp-server/src/oauth.js +561 -0
- package/packages/mcp-server/src/private-handoff.js +84 -0
- package/packages/mcp-server/src/remote-http.js +273 -0
- package/packages/mcp-server/src/remote-policy.js +72 -0
- package/packages/mcp-server/swarm-bridge.mjs +361 -0
- package/packages/mesh/index.d.ts +283 -0
- package/packages/mesh/package.json +23 -0
- package/packages/mesh/src/crypto.js +189 -0
- package/packages/mesh/src/federation-packets.js +353 -0
- package/packages/mesh/src/gossip.js +311 -0
- package/packages/mesh/src/index.js +6 -0
- package/packages/mesh/src/protocol.js +255 -0
- package/packages/mesh/src/router.js +279 -0
- package/packages/mesh/src/transport.js +306 -0
- package/packages/passport/src/index.js +426 -1
- package/packages/private-economy/src/credits-http.js +100 -0
- package/packages/private-economy/src/credits.js +447 -0
- package/packages/private-economy/src/index.js +5 -0
- package/packages/private-economy/src/payments-http.js +120 -0
- package/packages/private-economy/src/payments.js +509 -0
- package/packages/private-economy/src/x402.js +346 -0
- package/packages/proof-network/PACKAGE_CONTRACT.md +21 -0
- package/packages/rag/index.d.ts +182 -0
- package/packages/rag/models/Xenova/all-MiniLM-L6-v2/THIRD_PARTY_LICENSES.txt +207 -0
- package/packages/rag/models/Xenova/all-MiniLM-L6-v2/config.json +25 -0
- package/packages/rag/models/Xenova/all-MiniLM-L6-v2/onnx/model_quantized.onnx +0 -0
- package/packages/rag/models/Xenova/all-MiniLM-L6-v2/sha256-manifest.json +28 -0
- package/packages/rag/models/Xenova/all-MiniLM-L6-v2/tokenizer.json +30686 -0
- package/packages/rag/models/Xenova/all-MiniLM-L6-v2/tokenizer_config.json +15 -0
- package/packages/rag/package.json +27 -0
- package/packages/rag/src/blinded-search.js +109 -0
- package/packages/rag/src/bm25.js +169 -0
- package/packages/rag/src/embeddings.js +459 -0
- package/packages/rag/src/hybrid.js +76 -0
- package/packages/rag/src/index.js +38 -0
- package/packages/rag/src/reranker.js +61 -0
- package/packages/rag/src/research.js +107 -0
- package/packages/rag/src/vector-store.js +430 -0
- package/packages/rag/src/verify-model-artifacts.mjs +4 -0
- package/packages/sdk/index.d.ts +760 -0
- package/packages/sdk/package.json +33 -0
- package/packages/sdk/python/README.md +24 -0
- package/packages/sdk/python/enigma_sdk.py +250 -0
- package/packages/sdk/python/pyproject.toml +34 -0
- package/packages/sdk/python/requirements.txt +1 -0
- package/packages/sdk/python/setup.py +20 -0
- package/packages/sdk/src/federation/capability-grant.js +389 -0
- package/packages/sdk/src/federation/federation-router.js +360 -0
- package/packages/sdk/src/federation/ghostmesh-bridge.js +497 -0
- package/packages/sdk/src/federation/index.js +3 -0
- package/packages/sdk/src/index.js +1796 -0
- package/packages/sdk/src/intelligence/contradiction.js +337 -0
- package/packages/sdk/src/intelligence/decision-engine.js +155 -0
- package/packages/sdk/src/intelligence/index.js +4 -0
- package/packages/sdk/src/intelligence/ontology.js +122 -0
- package/packages/sdk/src/intelligence/temporal.js +123 -0
- package/packages/sdk/src/market-client.js +142 -0
- package/packages/sdk/src/mesh-client.js +110 -0
- package/packages/sdk/src/middleware/index.js +3 -0
- package/packages/sdk/src/middleware/langchain.js +159 -0
- package/packages/sdk/src/middleware/llamaindex.js +101 -0
- package/packages/sdk/src/middleware/vercel-ai.js +112 -0
- package/packages/sdk/src/rag-client.js +85 -0
- package/packages/sdk/src/swarm-orchestrator.js +260 -0
- package/packages/settlement/PACKAGE_CONTRACT.md +1 -1
- package/packages/snapcompact/THIRD_PARTY_LICENSES.txt +40 -0
- package/packages/snapcompact/assets/8x13-latin1.bdf +3837 -0
- package/packages/snapcompact/index.d.ts +284 -0
- package/packages/snapcompact/package.json +25 -0
- package/packages/snapcompact/src/index.js +716 -0
- package/packages/storage/PACKAGE_CONTRACT.md +1 -1
- package/packages/terminal-console/animations.mjs +240 -0
- package/packages/terminal-console/auto-anchor.mjs +220 -0
- package/packages/terminal-console/banner.mjs +91 -0
- package/packages/terminal-console/commands.mjs +459 -0
- package/packages/terminal-console/delegation.mjs +152 -0
- package/packages/terminal-console/index.mjs +5 -0
- package/packages/terminal-console/outbox.mjs +143 -0
- package/packages/terminal-console/phantom-bridge.mjs +637 -0
- package/packages/terminal-console/repl.mjs +136 -0
- package/packages/terminal-console/signer-store.mjs +130 -0
- package/packages/terminal-console/solana-rpc.mjs +214 -0
- package/packages/terminal-console/solana-transport.mjs +189 -0
- package/packages/terminal-tui/dashboard.mjs +214 -0
- package/packages/terminal-tui/index.mjs +28 -0
- package/packages/terminal-tui/merkle-tree-renderer.mjs +268 -0
- package/packages/terminal-tui/telemetry-hud.mjs +137 -0
- package/packages/vault/index.d.ts +449 -0
- package/packages/vault/package.json +27 -0
- package/packages/vault/src/e2ee.mjs +393 -0
- package/packages/vault/src/enclave.js +481 -0
- package/packages/vault/src/erasure.js +207 -0
- package/packages/vault/src/index.js +1018 -155
- package/packages/vault/src/persistence.js +307 -0
- package/packages/vault/src/poseidon.js +354 -0
- package/packages/vault/src/receipt.js +459 -0
- package/scripts/benchmark-optical-context.mjs +166 -0
- package/scripts/bootstrap-enigma.mjs +502 -0
- package/scripts/build-edge-backend-workers.mjs +20 -5
- package/scripts/build-goal-completion-audit.mjs +72 -25
- package/scripts/build-hosted-api-key-lifecycle.mjs +26 -8
- package/scripts/build-hosted-customer-lifecycle.mjs +20 -3
- package/scripts/build-hosted-probe-worker.mjs +19 -4
- package/scripts/build-installer-assets.mjs +41 -21
- package/scripts/build-operator-evidence-starter.mjs +59 -1
- package/scripts/build-production-backend-env-kit.mjs +2 -0
- package/scripts/build-production-unblocker.mjs +3 -0
- package/scripts/check.mjs +17 -3
- package/scripts/collect-hosted-backend-live-evidence.mjs +49 -12
- package/scripts/install-enigma-local.mjs +18 -5
- package/scripts/release-audit.mjs +65 -109
- package/scripts/release-provenance.mjs +6 -0
- package/scripts/run-backend-readiness-smoke.mjs +112 -10
- package/scripts/scan-secrets.mjs +1 -0
- package/scripts/simulate-production-env.mjs +7 -2
- package/scripts/validate-hosted-backend-live.mjs +112 -1
- package/specs/antibody-pack-v1.schema.json +95 -0
- package/specs/antigen-envelope-v1.schema.json +81 -0
- package/specs/boundary-manifest-v1.schema.json +35 -35
- package/specs/capsule-v1.schema.json +55 -55
- package/specs/claim-boundary-manifest-v1.schema.json +22 -22
- package/specs/claim-ledger-v1.schema.json +291 -0
- package/specs/context-passport-v1.schema.json +59 -0
- package/specs/deletion-tombstone-v1.schema.json +26 -26
- package/specs/evidence-packet-v1.schema.json +177 -0
- package/specs/hosted-backend-live-evidence-v1.schema.json +72 -3
- package/specs/immune-scan-report-v1.schema.json +112 -0
- package/specs/lifecycle-receipt-log-v1.schema.json +67 -0
- package/specs/memory-atom-v1.schema.json +59 -0
- package/specs/memory-event-v1.schema.json +42 -42
- package/specs/passport-v1.schema.json +50 -50
- package/specs/proof-of-non-use-v1.schema.json +65 -0
- package/specs/quarantine-record-v1.schema.json +126 -0
- package/specs/receipt-v1.schema.json +61 -61
- package/specs/state-checkpoint-v1.schema.json +37 -37
- package/specs/trust-bundle-v1.schema.json +56 -56
- package/specs/trust-card-v1.schema.json +119 -0
- package/docs/proof-network-launch-plan.md +0 -421
- package/packages/metering/PACKAGE_CONTRACT.md +0 -20
- package/scripts/build-ai-orchestration-plan.mjs +0 -248
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Enigma
|
|
2
2
|
|
|
3
|
+
> **Official $ENIGMA Token (Solana Mainnet):**
|
|
4
|
+
> Contract Address (CA): `EknDj8VZUHL6FhV9pSk3m6xP2U2sDzwjRDVstKeQpump`
|
|
5
|
+
> [Solscan Explorer](https://solscan.io/token/EknDj8VZUHL6FhV9pSk3m6xP2U2sDzwjRDVstKeQpump) • [Pump.fun](https://pump.fun/coin/EknDj8VZUHL6FhV9pSk3m6xP2U2sDzwjRDVstKeQpump) • [Official Website](https://enigmamemory.com) • [Official X (@Engimamemory)](https://x.com/Engimamemory)
|
|
6
|
+
|
|
3
7
|
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
8
|
|
|
5
9
|
Start with the Memory Drive loop below — one install, one connect, then health and status verification. You do not need to understand relay, gateway, mesh, browser, desktop, hosted infrastructure, or the proof network before trying Enigma locally.
|
|
@@ -13,18 +17,20 @@ Enigma does not claim that a closed provider deleted internal data, that model w
|
|
|
13
17
|
Prerequisites:
|
|
14
18
|
|
|
15
19
|
- Node.js `>=24`
|
|
16
|
-
-
|
|
20
|
+
- A local passphrase supplied through `ENIGMA_PASSPHRASE` or a user-readable-only passphrase file; no database, package registry account, provider credential, cloud credential, hosted Enigma account, or external account is needed
|
|
17
21
|
- Git only when you choose the advanced source-checkout path
|
|
18
22
|
|
|
19
23
|
Use Enigma as your private Memory Drive for AI: install once, connect the AI clients you already have, then inspect drive health and passport status before remembering, retrieving, packaging, and verifying context.
|
|
20
24
|
|
|
21
25
|
```sh
|
|
22
26
|
npm install -g enigma-memory
|
|
23
|
-
|
|
27
|
+
PASSPHRASE_FILE="$HOME/.enigma/passphrase"
|
|
28
|
+
test -s "$PASSPHRASE_FILE" || { printf '%s\n' 'Create $HOME/.enigma/passphrase with an approved secret manager or secure editor, then restrict it to the current user.' >&2; exit 1; }
|
|
29
|
+
enigma setup --bundle "$HOME/.enigma/bundle.json" --passphrase-file "$PASSPHRASE_FILE" --client auto --connect-installed --overwrite
|
|
24
30
|
echo "Keep all Q3 planning notes in the project-context tag." > memory.txt
|
|
25
|
-
enigma remember --bundle "$HOME/.enigma/bundle.json" --text-file memory.txt
|
|
26
|
-
enigma search --bundle "$HOME/.enigma/bundle.json" --query "Q3 planning"
|
|
27
|
-
enigma context --bundle "$HOME/.enigma/bundle.json" --query "Q3 planning" --out "$HOME/.enigma/context-pack.json"
|
|
31
|
+
enigma remember --bundle "$HOME/.enigma/bundle.json" --passphrase-file "$PASSPHRASE_FILE" --text-file memory.txt
|
|
32
|
+
enigma search --bundle "$HOME/.enigma/bundle.json" --passphrase-file "$PASSPHRASE_FILE" --query "Q3 planning"
|
|
33
|
+
enigma context --bundle "$HOME/.enigma/bundle.json" --passphrase-file "$PASSPHRASE_FILE" --query "Q3 planning" --out "$HOME/.enigma/context-pack.json"
|
|
28
34
|
enigma verify --export "$HOME/.enigma/export.json"
|
|
29
35
|
```
|
|
30
36
|
|
|
@@ -32,16 +38,45 @@ Windows CMD:
|
|
|
32
38
|
|
|
33
39
|
```cmd
|
|
34
40
|
npm install -g enigma-memory
|
|
35
|
-
|
|
41
|
+
set "ENIGMA_PASSPHRASE_FILE=%USERPROFILE%\.enigma\passphrase"
|
|
42
|
+
if not exist "%ENIGMA_PASSPHRASE_FILE%" (echo Create the passphrase file with an approved secret manager or secure editor and restrict it to your user. & exit /b 1)
|
|
43
|
+
enigma setup --bundle "%USERPROFILE%\.enigma\bundle.json" --passphrase-file "%ENIGMA_PASSPHRASE_FILE%" --client auto --connect-installed --overwrite
|
|
36
44
|
echo Keep all Q3 planning notes in the project-context tag.> memory.txt
|
|
37
|
-
enigma remember --bundle "%USERPROFILE%\.enigma\bundle.json" --text-file memory.txt
|
|
38
|
-
enigma search --bundle "%USERPROFILE%\.enigma\bundle.json" --query "Q3 planning"
|
|
39
|
-
enigma context --bundle "%USERPROFILE%\.enigma\bundle.json" --query "Q3 planning" --out "%USERPROFILE%\.enigma\context-pack.json"
|
|
45
|
+
enigma remember --bundle "%USERPROFILE%\.enigma\bundle.json" --passphrase-file "%ENIGMA_PASSPHRASE_FILE%" --text-file memory.txt
|
|
46
|
+
enigma search --bundle "%USERPROFILE%\.enigma\bundle.json" --passphrase-file "%ENIGMA_PASSPHRASE_FILE%" --query "Q3 planning"
|
|
47
|
+
enigma context --bundle "%USERPROFILE%\.enigma\bundle.json" --passphrase-file "%ENIGMA_PASSPHRASE_FILE%" --query "Q3 planning" --out "%USERPROFILE%\.enigma\context-pack.json"
|
|
40
48
|
enigma verify --export "%USERPROFILE%\.enigma\export.json"
|
|
41
49
|
```
|
|
42
50
|
|
|
43
|
-
`enigma setup` is the
|
|
51
|
+
`enigma setup` is the encrypted first run: it requires `ENIGMA_PASSPHRASE` or `--passphrase-file`, creates the local `.enigma` workspace, encrypted bundle, proof artifacts, and a demo memory, then connects every installed/config-present client it detects (Claude Desktop, Cursor, Kimi Code, VS Code/Cline, Roo, OpenCode, generic MCP). `enigma start` aliases the quickstart flow. Setup skips clients that are not installed and never creates configs from scratch; preview with `--dry-run` first if you want to see which clients will be written.
|
|
52
|
+
|
|
53
|
+
### Keyring Security Modes & At-Rest Confidentiality
|
|
54
|
+
|
|
55
|
+
- **Encrypted default (`local_secret_encrypted`)**: Normal `enigma init`, `enigma setup`, and `enigma quickstart` require `ENIGMA_PASSPHRASE` or `--passphrase-file <path>`. Prefer a user-readable-only file created through an approved secret manager or secure editor; never put the passphrase itself in command arguments.
|
|
56
|
+
- **Insecure evaluation mode (`local_secret`)**: `--insecure-dev` is an explicit, **INSECURE, EVALUATION-ONLY** escape hatch for disposable local data. It stores an unencrypted developer keyring (`unencrypted: true`), provides no at-rest confidentiality, and must not be used for normal or persistent data.
|
|
57
|
+
|
|
58
|
+
Encrypted + Solana-connected local flow:
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
npm install -g enigma-memory
|
|
62
|
+
PASSPHRASE_FILE="$HOME/.enigma/passphrase"
|
|
63
|
+
test -s "$PASSPHRASE_FILE" || { printf '%s\n' 'Create $HOME/.enigma/passphrase with an approved secret manager or secure editor, then restrict it to the current user.' >&2; exit 1; }
|
|
64
|
+
enigma quickstart --bundle "$HOME/.enigma/bundle.json" --passphrase-file "$PASSPHRASE_FILE" --overwrite
|
|
65
|
+
enigma remember --bundle "$HOME/.enigma/bundle.json" --passphrase-file "$PASSPHRASE_FILE" --text-file memory.txt
|
|
66
|
+
enigma-terminal --exec "solana status --cluster devnet"
|
|
67
|
+
enigma chain anchor-bundle --bundle "$HOME/.enigma/bundle.json" --cluster devnet --out "$HOME/.enigma/anchor-batch.json"
|
|
68
|
+
enigma chain submit-solana --file "$HOME/.enigma/anchor-batch.json" --cluster devnet
|
|
69
|
+
# Actual on-chain write, when you provide a funded Solana CLI keypair:
|
|
70
|
+
# enigma chain submit-solana --file "$HOME/.enigma/anchor-batch.json" --cluster devnet --execute --keypair ~/.config/solana/id.json
|
|
71
|
+
```
|
|
44
72
|
|
|
73
|
+
`chain anchor-bundle` anchors only public commitment roots (`active_set_root`, `receipt_log_root`) and public refs. It never places raw memory, plaintext prompts, vault keys, passphrases, private keys, or encrypted bundle bodies on-chain. `chain submit-solana` defaults to dry-run; `--execute` writes a compact SPL Memo proof reference to Solana using your explicitly supplied funded keypair.
|
|
74
|
+
|
|
75
|
+
The cypherpunk research basis is recorded in [`docs/research/sovereign-cypherpunk-memory.md`](docs/research/sovereign-cypherpunk-memory.md): Shamir 1979 threshold sharing, Merkle 1979 accumulators, Rubberhose/TrueCrypt plausible-deniability storage patterns, OTR/Signal ratchets, and Unix/Windows memory-locking constraints. The document is explicitly exploratory; production Enigma only ships the reviewed local vault primitives and public-safe Solana commitment anchoring described above.
|
|
76
|
+
|
|
77
|
+
Run setup or quickstart before treating `enigma doctor` as a fully green install check. Doctor checks both the local package/runtime environment and existing connector configs; on a fresh install it can be red when an MCP client config already names an Enigma bundle that has not been initialized yet, or when clients still point somewhere else. That is expected first-run state, not evidence that the npm package failed to install. After creating `./.enigma/passphrase` through an approved secret manager or secure editor, run `enigma quickstart --bundle ./.enigma/bundle.json --passphrase-file ./.enigma/passphrase --overwrite` or `enigma setup --bundle ./.enigma/bundle.json --passphrase-file ./.enigma/passphrase --overwrite`, then `enigma doctor --bundle ./.enigma/bundle.json`. If no clients are installed, setup still succeeds and the local CLI path works; use the copy-paste MCP snippets below to connect a client later.
|
|
78
|
+
|
|
79
|
+
For the no-global-install path, create the same protected passphrase file, then run `npx --yes --package enigma-memory enigma quickstart --bundle ./.enigma/bundle.json --passphrase-file ./.enigma/passphrase --overwrite` before `npx --yes --package enigma-memory enigma doctor --bundle ./.enigma/bundle.json`; running npx doctor first can surface the same expected red generic-MCP missing-bundle state.
|
|
45
80
|
## Enigma Proof Network
|
|
46
81
|
|
|
47
82
|
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.
|
|
@@ -50,6 +85,16 @@ The `enigma chain anchor|grant|revoke|attest|verify` commands are local planning
|
|
|
50
85
|
|
|
51
86
|
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.
|
|
52
87
|
|
|
88
|
+
## ZK state layer (localnet-verified)
|
|
89
|
+
|
|
90
|
+
`cortex-v3/` contains a working zero-knowledge state layer for AI agent memory on Solana: every shared-state transition is a **client-generated Groth16 proof** (circom 2.2.3, BN254, ~2s proving) verified **on-chain** by the `enigma_nullifier` Anchor program via `alt_bn128` syscalls. Notes are E2EE-sealed (per-note XChaCha20-Poly1305 + HPKE/X25519 recipient envelopes) and bound into the proof as Poseidon commitments; revocations insert deterministic nullifiers into an Aztec-style indexed Merkle tree with strict non-membership proofs. Only `{proof, 6 public inputs}` ever leave the client.
|
|
91
|
+
|
|
92
|
+
- Program: `E18KZR1Jq8fG3FFACpoHsE21ME3t1ftKPEwXL7cFWkoZ` (localnet; **not** on mainnet)
|
|
93
|
+
- Circuit: 90,897 constraints, one fixed-shape VK, alias-safe (`Num2Bits_strict`, adversarially tested)
|
|
94
|
+
- Reproduce end-to-end (E2EE → prove → on-chain verify → replay rejection): [`docs/zk-state-layer.md`](docs/zk-state-layer.md)
|
|
95
|
+
|
|
96
|
+
Claim boundaries: development trusted setup (production needs a multi-party ceremony); nullifiers prove protocol-level non-use, never physical deletion; privacy requires a populated shared tree — the mechanism is verified, operative anonymity requires real participants.
|
|
97
|
+
|
|
53
98
|
|
|
54
99
|
## Advanced/source-only path
|
|
55
100
|
|
|
@@ -58,8 +103,9 @@ Use a source checkout only when you need source-only docs, Docker assets, browse
|
|
|
58
103
|
```sh
|
|
59
104
|
git clone https://github.com/Enigma-Memory/enigma-memory.git
|
|
60
105
|
cd enigma-memory
|
|
61
|
-
|
|
62
|
-
enigma
|
|
106
|
+
test -s ./.enigma/passphrase || { printf '%s\n' 'Create ./.enigma/passphrase securely before continuing.' >&2; exit 1; }
|
|
107
|
+
npm run install:local -- --execute --init-vault --bundle ./.enigma/bundle.json --passphrase-file ./.enigma/passphrase
|
|
108
|
+
enigma doctor --bundle ./.enigma/bundle.json
|
|
63
109
|
enigma-relay demo
|
|
64
110
|
enigma-gateway demo
|
|
65
111
|
```
|
|
@@ -74,10 +120,12 @@ POSIX shell:
|
|
|
74
120
|
mkdir -p .enigma
|
|
75
121
|
ENIGMA_DEMO_MEMORY_FILE=/absolute/path/to/tenant-approved-smoke-memory.txt
|
|
76
122
|
test -f "$ENIGMA_DEMO_MEMORY_FILE"
|
|
77
|
-
enigma
|
|
78
|
-
|
|
79
|
-
enigma
|
|
80
|
-
enigma
|
|
123
|
+
ENIGMA_PASSPHRASE_FILE=./.enigma/passphrase
|
|
124
|
+
test -s "$ENIGMA_PASSPHRASE_FILE" || { printf '%s\n' 'Create ./.enigma/passphrase securely before continuing.' >&2; exit 1; }
|
|
125
|
+
enigma init --bundle ./.enigma/bundle.json --passphrase-file "$ENIGMA_PASSPHRASE_FILE" --subject local-user --display-name "Local user"
|
|
126
|
+
enigma remember --bundle ./.enigma/bundle.json --passphrase-file "$ENIGMA_PASSPHRASE_FILE" --text-file "$ENIGMA_DEMO_MEMORY_FILE" --purpose user_memory --tags local
|
|
127
|
+
enigma context --bundle ./.enigma/bundle.json --passphrase-file "$ENIGMA_PASSPHRASE_FILE" --query "local context" --purpose local_answer --out ./.enigma/context-pack.json
|
|
128
|
+
enigma export --bundle ./.enigma/bundle.json --passphrase-file "$ENIGMA_PASSPHRASE_FILE" --out ./.enigma/export.json
|
|
81
129
|
enigma verify --export ./.enigma/export.json
|
|
82
130
|
```
|
|
83
131
|
|
|
@@ -87,10 +135,12 @@ Windows PowerShell:
|
|
|
87
135
|
New-Item -ItemType Directory -Force .enigma | Out-Null
|
|
88
136
|
$env:ENIGMA_DEMO_MEMORY_FILE = "C:\path\to\tenant-approved-smoke-memory.txt"
|
|
89
137
|
if (-not (Test-Path -LiteralPath $env:ENIGMA_DEMO_MEMORY_FILE)) { throw "Missing ENIGMA_DEMO_MEMORY_FILE" }
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
enigma
|
|
93
|
-
enigma
|
|
138
|
+
$env:ENIGMA_PASSPHRASE_FILE = ".\.enigma\passphrase"
|
|
139
|
+
if (-not (Test-Path -LiteralPath $env:ENIGMA_PASSPHRASE_FILE -PathType Leaf)) { throw "Create the passphrase file securely before continuing." }
|
|
140
|
+
enigma init --bundle .\.enigma\bundle.json --passphrase-file $env:ENIGMA_PASSPHRASE_FILE --subject local-user --display-name "Local user"
|
|
141
|
+
enigma remember --bundle .\.enigma\bundle.json --passphrase-file $env:ENIGMA_PASSPHRASE_FILE --text-file $env:ENIGMA_DEMO_MEMORY_FILE --purpose user_memory --tags local
|
|
142
|
+
enigma context --bundle .\.enigma\bundle.json --passphrase-file $env:ENIGMA_PASSPHRASE_FILE --query "local context" --purpose local_answer --out .\.enigma\context-pack.json
|
|
143
|
+
enigma export --bundle .\.enigma\bundle.json --passphrase-file $env:ENIGMA_PASSPHRASE_FILE --out .\.enigma\export.json
|
|
94
144
|
enigma verify --export .\.enigma\export.json
|
|
95
145
|
```
|
|
96
146
|
|
|
@@ -156,7 +206,7 @@ Supported connector profiles are:
|
|
|
156
206
|
- `opencode`
|
|
157
207
|
- `generic-mcp`
|
|
158
208
|
|
|
159
|
-
The one-command path above (`enigma setup --client auto --connect-installed --overwrite`) already connects every installed/config-present client. To connect or preview a single client instead:
|
|
209
|
+
The one-command path above (`enigma setup --passphrase-file "$HOME/.enigma/passphrase" --client auto --connect-installed --overwrite`) already connects every installed/config-present client. To connect or preview a single client instead:
|
|
160
210
|
|
|
161
211
|
```sh
|
|
162
212
|
enigma connect claude-desktop --dry-run
|
|
@@ -359,9 +409,11 @@ Local smoke path:
|
|
|
359
409
|
```sh
|
|
360
410
|
ENIGMA_DEMO_MEMORY_FILE=/absolute/path/to/tenant-approved-smoke-memory.txt
|
|
361
411
|
test -f "$ENIGMA_DEMO_MEMORY_FILE"
|
|
362
|
-
enigma
|
|
363
|
-
|
|
364
|
-
enigma
|
|
412
|
+
ENIGMA_PASSPHRASE_FILE=./.enigma/passphrase
|
|
413
|
+
test -s "$ENIGMA_PASSPHRASE_FILE" || { printf '%s\n' 'Create ./.enigma/passphrase securely before continuing.' >&2; exit 1; }
|
|
414
|
+
enigma init --bundle ./.enigma/bundle.json --passphrase-file "$ENIGMA_PASSPHRASE_FILE"
|
|
415
|
+
enigma remember --bundle ./.enigma/bundle.json --passphrase-file "$ENIGMA_PASSPHRASE_FILE" --text-file "$ENIGMA_DEMO_MEMORY_FILE" --purpose local_test
|
|
416
|
+
enigma export --bundle ./.enigma/bundle.json --passphrase-file "$ENIGMA_PASSPHRASE_FILE" --out ./.enigma/export.json
|
|
365
417
|
enigma verify --export ./.enigma/export.json
|
|
366
418
|
enigma boundary run --scenario committed_crossing
|
|
367
419
|
```
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { startDesktopServer } from '../../desktop/src/server.mjs';
|
|
5
|
+
import { ENIGMA_VERSION } from '../../../packages/core/src/version.mjs';
|
|
6
|
+
import { createEmbeddingProvider } from '../../../packages/rag/src/index.js';
|
|
7
|
+
import { EnigmaRagClient } from '../../../packages/sdk/src/index.js';
|
|
8
|
+
|
|
9
|
+
export function parseArgs(argv) {
|
|
10
|
+
const flags = {
|
|
11
|
+
port: 8765,
|
|
12
|
+
openBrowser: true,
|
|
13
|
+
bundlePath: undefined,
|
|
14
|
+
passphrase: process.env.ENIGMA_PASSPHRASE || undefined,
|
|
15
|
+
vaultKey: process.env.ENIGMA_VAULT_KEY || undefined,
|
|
16
|
+
allowHostBoundDemo: process.env.ENIGMA_ALLOW_HOSTBOUND === '1' || undefined,
|
|
17
|
+
embeddingModel: undefined,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
for (let i = 0; i < argv.length; i++) {
|
|
21
|
+
const arg = argv[i];
|
|
22
|
+
if (arg === '--port' || arg === '-p') {
|
|
23
|
+
const value = argv[++i];
|
|
24
|
+
const port = Number(value);
|
|
25
|
+
if (value === undefined || !Number.isInteger(port) || port < 0 || port > 65535) {
|
|
26
|
+
throw new Error('--port must be an integer between 0 and 65535');
|
|
27
|
+
}
|
|
28
|
+
flags.port = port;
|
|
29
|
+
} else if (arg === '--no-open' || arg === '--headless') {
|
|
30
|
+
flags.openBrowser = false;
|
|
31
|
+
} else if (arg === '--bundle' || arg === '-b') {
|
|
32
|
+
flags.bundlePath = argv[++i];
|
|
33
|
+
} else if (arg === '--passphrase-file') {
|
|
34
|
+
const p = argv[++i];
|
|
35
|
+
if (!p) throw new Error('Missing file path for --passphrase-file');
|
|
36
|
+
flags.passphrase = fs.readFileSync(path.resolve(p), 'utf8').trim();
|
|
37
|
+
} else if (arg === '--vault-key-file') {
|
|
38
|
+
const p = argv[++i];
|
|
39
|
+
if (!p) throw new Error('Missing file path for --vault-key-file');
|
|
40
|
+
flags.vaultKey = fs.readFileSync(path.resolve(p), 'utf8').trim();
|
|
41
|
+
} else if (arg === '--allow-host-bound-demo') {
|
|
42
|
+
flags.allowHostBoundDemo = true;
|
|
43
|
+
} else if (arg === '--embedding-model') {
|
|
44
|
+
const modelType = argv[++i];
|
|
45
|
+
if (modelType !== 'neural' && modelType !== 'lexical') {
|
|
46
|
+
throw new Error('--embedding-model must be "neural" or "lexical"');
|
|
47
|
+
}
|
|
48
|
+
flags.embeddingModel = modelType;
|
|
49
|
+
} else if (arg === '--passphrase' || arg === '--vault-key') {
|
|
50
|
+
throw new Error(
|
|
51
|
+
`Passing secrets directly in CLI arguments (${arg}) is prohibited by security policy (process table leakage). `
|
|
52
|
+
+ 'Use --passphrase-file <path>, --vault-key-file <path>, or set ENIGMA_PASSPHRASE / ENIGMA_VAULT_KEY environment variables.'
|
|
53
|
+
);
|
|
54
|
+
} else if (arg === '--version' || arg === '-v') {
|
|
55
|
+
flags.version = true;
|
|
56
|
+
} else if (arg === '--help' || arg === '-h') {
|
|
57
|
+
flags.help = true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return flags;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export async function main(argv = process.argv.slice(2), io = { stdout: process.stdout, stderr: process.stderr }) {
|
|
65
|
+
let flags;
|
|
66
|
+
try {
|
|
67
|
+
flags = parseArgs(argv);
|
|
68
|
+
} catch (err) {
|
|
69
|
+
io.stderr.write(`Error: ${err.message}\n`);
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (flags.version) {
|
|
74
|
+
io.stdout.write(`enigma-desktop v${ENIGMA_VERSION}\n`);
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (flags.help) {
|
|
79
|
+
io.stdout.write(`
|
|
80
|
+
Enigma Sovereign AI Memory Terminal — Desktop GUI Application
|
|
81
|
+
|
|
82
|
+
Usage: enigma-desktop [options]
|
|
83
|
+
|
|
84
|
+
Options:
|
|
85
|
+
--port, -p <number> Port to bind local desktop host server (default: 8765)
|
|
86
|
+
--no-open, --headless Start host server without automatically opening window
|
|
87
|
+
--bundle, -b <path> Active memory bundle path (default: .enigma/bundle.json)
|
|
88
|
+
--passphrase-file <path> Path to file containing master passphrase (zero-secrets-in-argv)
|
|
89
|
+
--vault-key-file <path> Path to file containing 32-byte hex master vault key
|
|
90
|
+
--allow-host-bound-demo Explicitly allow host-bound key custody for local CLI demos
|
|
91
|
+
--embedding-model <type> Embedding runtime: neural (default) or lexical
|
|
92
|
+
--version, -v Display enigma-desktop version
|
|
93
|
+
--help, -h Show this help reference
|
|
94
|
+
|
|
95
|
+
Environment Variables:
|
|
96
|
+
ENIGMA_PASSPHRASE Master passphrase for encrypted memory and vector store
|
|
97
|
+
ENIGMA_VAULT_KEY 32-byte hex master vault key
|
|
98
|
+
ENIGMA_ALLOW_HOSTBOUND Set to '1' to allow host-bound key custody in development
|
|
99
|
+
\n`);
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
let server;
|
|
104
|
+
try {
|
|
105
|
+
const embeddingProvider = flags.embeddingModel
|
|
106
|
+
? createEmbeddingProvider({ modelType: flags.embeddingModel })
|
|
107
|
+
: undefined;
|
|
108
|
+
const ragClient = flags.embeddingModel
|
|
109
|
+
? new EnigmaRagClient({ embeddingModel: flags.embeddingModel })
|
|
110
|
+
: undefined;
|
|
111
|
+
server = await startDesktopServer({
|
|
112
|
+
port: flags.port,
|
|
113
|
+
openBrowser: flags.openBrowser,
|
|
114
|
+
bundlePath: flags.bundlePath,
|
|
115
|
+
passphrase: flags.passphrase,
|
|
116
|
+
vaultKey: flags.vaultKey,
|
|
117
|
+
allowHostBoundDemo: flags.allowHostBoundDemo,
|
|
118
|
+
...(embeddingProvider ? { embeddingProvider, ownEmbeddingProvider: true } : {}),
|
|
119
|
+
...(ragClient ? { sdk: { ragClient, ownRagClient: true } } : {}),
|
|
120
|
+
});
|
|
121
|
+
} catch (err) {
|
|
122
|
+
io.stderr.write(`Error starting enigma-desktop: ${err.message}\n`);
|
|
123
|
+
return 1;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
await new Promise((resolve) => {
|
|
127
|
+
process.on('SIGINT', resolve);
|
|
128
|
+
process.on('SIGTERM', resolve);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
await server.close();
|
|
132
|
+
return 0;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (process.argv[1] && process.argv[1].endsWith('enigma-desktop.mjs')) {
|
|
136
|
+
main().catch((err) => {
|
|
137
|
+
process.stderr.write(`Error starting enigma-desktop: ${err.message}\n`);
|
|
138
|
+
process.exit(1);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { runTerminalConsole, renderTerminalBanner } from '../../../packages/terminal-console/index.mjs';
|
|
3
|
+
import { ENIGMA_VERSION } from '../../../packages/core/src/version.mjs';
|
|
4
|
+
|
|
5
|
+
function parseArgs(argv) {
|
|
6
|
+
const flags = {};
|
|
7
|
+
let execCommand = undefined;
|
|
8
|
+
|
|
9
|
+
for (let i = 0; i < argv.length; i++) {
|
|
10
|
+
const arg = argv[i];
|
|
11
|
+
if (arg === '--bundle' || arg === '-b') {
|
|
12
|
+
flags.bundle = argv[++i];
|
|
13
|
+
} else if (arg === '--exec' || arg === '-e') {
|
|
14
|
+
execCommand = argv[++i];
|
|
15
|
+
} else if (arg === '--no-color') {
|
|
16
|
+
flags.noColor = true;
|
|
17
|
+
} else if (arg === '--help' || arg === '-h') {
|
|
18
|
+
flags.help = true;
|
|
19
|
+
} else if (arg === '--version' || arg === '-v') {
|
|
20
|
+
flags.version = true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return { flags, execCommand };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export async function main(argv = process.argv.slice(2), io = { stdin: process.stdin, stdout: process.stdout, stderr: process.stderr }) {
|
|
28
|
+
const { flags, execCommand } = parseArgs(argv);
|
|
29
|
+
|
|
30
|
+
if (flags.version) {
|
|
31
|
+
io.stdout.write(`enigma-terminal v${ENIGMA_VERSION}\n`);
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (flags.help) {
|
|
36
|
+
io.stdout.write(renderTerminalBanner({ color: !flags.noColor }) + '\n');
|
|
37
|
+
io.stdout.write(`
|
|
38
|
+
Usage: enigma-terminal [options]
|
|
39
|
+
|
|
40
|
+
Options:
|
|
41
|
+
--bundle, -b <path> Path to memory bundle (default: .enigma/bundle.json)
|
|
42
|
+
--exec, -e <cmd> Execute a command and exit immediately
|
|
43
|
+
--no-color Disable colored ANSI output
|
|
44
|
+
--help, -h Show this help catalog
|
|
45
|
+
--version, -v Show version
|
|
46
|
+
|
|
47
|
+
Interactive Commands:
|
|
48
|
+
quickstart Initialize a new sovereign memory vault
|
|
49
|
+
remember <text> Store encrypted memory atom with signed receipt
|
|
50
|
+
context <query> Retrieve purpose-scoped context pack
|
|
51
|
+
tree Render live ASCII Merkle tree with proof path
|
|
52
|
+
tui | dashboard Launch real-time terminal control plane HUD
|
|
53
|
+
enclave cycle Execute atomic ephemeral key zeroization
|
|
54
|
+
swarm status Inspect multi-agent swarm namespace state
|
|
55
|
+
export / verify Export & verify cryptographic receipts offline
|
|
56
|
+
token | ca Display Solana SPL token contract address
|
|
57
|
+
exit | quit Close session
|
|
58
|
+
\n`);
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return await runTerminalConsole({
|
|
63
|
+
bundlePath: flags.bundle || '.enigma/bundle.json',
|
|
64
|
+
color: !flags.noColor,
|
|
65
|
+
execCommand,
|
|
66
|
+
interactive: Boolean(io.stdin?.isTTY) && !execCommand,
|
|
67
|
+
io,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function isMainModule(metaUrl) {
|
|
72
|
+
if (!process.argv[1]) return false;
|
|
73
|
+
return metaUrl.endsWith(process.argv[1].replace(/\\/g, '/')) || process.argv[1].replace(/\\/g, '/').endsWith('enigma-terminal.mjs');
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (isMainModule(import.meta.url)) {
|
|
77
|
+
process.exitCode = await main();
|
|
78
|
+
}
|