github TypeScript re-analysis due

memorycrystal/memorycrystal

github

Persistent memory for AI agents — OpenClaw plugin + MCP server

maintainer
memorycrystal
license
MIT
first seen
2026-06-05
last seen
2026-09-01
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged committed secret in memorycrystal/memorycrystal
  2. HIGH code analysis flagged committed secret in memorycrystal/memorycrystal
  3. HIGH code analysis flagged committed secret in memorycrystal/memorycrystal
  4. HIGH code analysis flagged committed secret in memorycrystal/memorycrystal
  5. HIGH code analysis flagged committed secret in memorycrystal/memorycrystal
  6. HIGH code analysis flagged committed secret in memorycrystal/memorycrystal
  7. HIGH code analysis flagged committed secret in memorycrystal/memorycrystal

tool count over time

06-13 22:14 now
24t
26t
capabilities 26 tools
transport stdio · streamable-http · http counts 26 tools · 0 res · 0 prompts permission surface via README inference

tools

  • crystal_checkpoint

    Snapshot memory state at a milestone

  • crystal_dependency_chain

    Trace dependency chains between entities

  • crystal_edit

    Update an existing memory

  • crystal_empty_knowledge_base

    Delete all chunks but keep the KB row/id/bindings

  • crystal_explain_connection

    Explain relationships between concepts

  • crystal_forget

    Archive or delete a memory

  • crystal_idea_action

    Act on Organic ideas

  • crystal_ideas

    List active Organic ideas and discoveries

  • crystal_import_knowledge

    Import reference chunks into a KB (upsert-by-dedupeKey replaces in place)

  • crystal_list_knowledge_base_memories

    Enumerate a KB's chunks with cursor pagination + ids

  • crystal_list_knowledge_bases

    List available knowledge bases

  • crystal_preflight

    Pre-flight check before risky actions

  • crystal_query_knowledge_base

    Search a knowledge base

  • crystal_recall

    Semantic search across all long-term memory

  • crystal_recent

    Recent messages for short-term context

  • crystal_remember

    Store a memory — decisions, facts, lessons

  • crystal_search_messages

    Hybrid search over verbatim conversation history, with time-window (fromMs/toMs or ISO dates) and pagination

  • crystal_set_scope

    Override channel scope for the session

  • crystal_stats

    Memory and usage statistics

  • crystal_trace

    Trace a memory back to its source conversation

  • crystal_wake

    Session startup — briefing and guardrails

  • crystal_what_do_i_know

    Everything known about a topic

  • crystal_who_owns

    Find ownership of a file, module, or area

  • crystal_why_did_we

    Decision archaeology — why a past choice was made

  • memory_get

    Read a full memory by ID or path

  • memory_search

    Search LTM and return crystal paths

skills & danger signals github-tarball
code evidence vv0.8.22 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 367

filesystem 75

  • fs memorycrystal-memorycrystal-8e290ba/mcp-server/src/lib/obsidian.ts :1 import { mkdir, writeFile } from "node:fs/promises";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugin/__tests__/env-propagation.test.js :4 const { mkdtempSync, writeFileSync, rmSync } = require('node:fs');
  • fs memorycrystal-memorycrystal-8e290ba/plugin/handler.js :16 const fs = require("node:fs");
  • fs memorycrystal-memorycrystal-8e290ba/plugin/index.js :2 const fs = require("fs");
  • fs memorycrystal-memorycrystal-8e290ba/plugin/recall-hook.js :2 const fs = require("node:fs");
  • fs memorycrystal-memorycrystal-8e290ba/plugin/store/crystal-local-store.js :4 import { mkdirSync } from 'node:fs';
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugin/store/crystal-local-store.test.js :13 import { rmSync, existsSync } from 'node:fs';
  • fs memorycrystal-memorycrystal-8e290ba/plugins/cursor/memory-crystal/hooks/_lib.mjs :1 import { existsSync, readFileSync } from "fs";
  • fs memorycrystal-memorycrystal-8e290ba/plugins/cursor/memory-crystal/hooks/crystal-hooks.mjs :6 import { readFileSync, existsSync, statSync } from "fs";
  • fs memorycrystal-memorycrystal-8e290ba/plugins/cursor/memory-crystal/hooks/cursor-hooks.mjs :2 import { existsSync, readFileSync } from "fs";
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/_lib.mjs :1 import { existsSync, readFileSync } from "fs";
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/crystal-hooks-sweep.mjs :5 import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, truncateSync, unlinkSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/crystal-hooks-sweep.test.mjs :3 import { mkdtempSync, writeFileSync } from 'node:fs';
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/crystal-hooks.mjs :6 import { readFileSync, existsSync, statSync } from "fs";
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/crystal-hooks.test-fetch-mock.mjs :6 import { appendFileSync } from 'node:fs';
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/crystal-hooks.test.mjs :147 import { mkdirSync, mkdtempSync, readFileSync, existsSync, rmSync, writeFileSync } from 'node:fs';
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/cursor-hooks.mjs :2 import { existsSync, readFileSync } from "fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/cursor-hooks.test.mjs :3 import { readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/cursor-plugin-parity.test.mjs :18 import { existsSync, readFileSync } from "node:fs";
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/ensure-codex-hooks-flag.mjs :2 import { readFileSync, writeFileSync, renameSync } from "fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/ensure-codex-hooks-flag.test.mjs :3 import { mkdtempSync, readFileSync, writeFileSync, readdirSync } from 'node:fs';
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/install-hook-config.mjs :2 import { mkdirSync, readFileSync, writeFileSync } from "fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/install-hook-config.test.mjs :3 import { mkdtempSync, readFileSync, writeFileSync } from 'node:fs';
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/install-managed-block.mjs :8 import { existsSync, readFileSync } from "node:fs";
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/install-sweep-launchd.mjs :5 import { existsSync, mkdirSync, writeFileSync } from "node:fs";
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/managed-block.mjs :21 import { readFileSync, writeFileSync, renameSync, unlinkSync, existsSync, mkdirSync, readdirSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/managed-block.test.mjs :3 import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, existsSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/public-copy.test.mjs :3 import { readFileSync } from 'node:fs';
  • fs memorycrystal-memorycrystal-8e290ba/plugins/shared/remove-hook-config.mjs :2 import { mkdirSync, readFileSync, writeFileSync } from "fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/remove-hook-config.test.mjs :3 import { mkdtempSync, readFileSync, writeFileSync } from 'node:fs';
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/bench-competitors.mjs :2 import { mkdirSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/bench-memory-crystal.mjs :3 import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-admin-run-helper.test.mjs :12 } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-cost-smoke.mjs :3 import { readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-auth-keys.ts :2 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-import-auth.ts :2 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-provision-env.ts :2 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-seed.ts :2 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-write-env.ts :2 import { existsSync, readFileSync, renameSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-run-self-hosted.test.mjs :10 } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/crystal-backfill-from-jsonl.mjs :9 import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/crystal-enable.test.js :5 const fs = require("node:fs");
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/crystal-hooks-lib.test.mjs :3 import { mkdtempSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/eval-graph-extraction-openrouter.mjs :22 import { writeFileSync, mkdirSync } from "fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/eval-graph-extraction.mjs :20 import { writeFileSync, mkdirSync } from "fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/generate-hook-config.js :3 const fs = require("node:fs");
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/generate-plugin-checksums.mjs :13 import { readFileSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/gerald-read-contract-smoke.mjs :2 import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/hermes-plugin-assets-route.test.mjs :3 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/hermes-plugin-contract-smoke.test.mjs :4 import { readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/install-hooks.mjs :4 import { cpSync, existsSync, mkdirSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/install-hooks.test.mjs :3 import { mkdtempSync, existsSync } from 'node:fs';
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/install-launchd-plist.mjs :3 import { existsSync, mkdirSync, writeFileSync } from "fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/installer-support-tier.test.mjs :12 } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/installer-universal-smoke.test.mjs :13 } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/lib/convex-admin-run-helper.mjs :16 import { fstatSync, readFileSync, writeSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/local-backend-artifact-smoke.mjs :3 import { existsSync, mkdtempSync, readFileSync, readdirSync, rmSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/managed-block-discipline.test.mjs :17 } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/moondev-ingest-canary.mjs :3 import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/package-local-backend.mjs :3 import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/plugin-checksums.test.mjs :12 import { readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/provision-gerald-research-key.mjs :2 import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/provision-moondev-ingest-key.mjs :2 import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/research-e2e-smoke.mjs :3 import { mkdirSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/research-scale-fixture.mjs :3 import { mkdirSync, writeFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/rotate-mcp-api-key.mjs :46 } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/rotate-mcp-api-key.test.mjs :3 import * as nodeFs from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/seed-from-memory.js :11 const fs = require("node:fs");
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/skills-lint.test.mjs :12 import { readFileSync, readdirSync, statSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/soak-recall.mjs :23 import { readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/support-tier-badge.test.mjs :5 import { readFileSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/sync-changelog-docs.mjs :10 import { readFileSync, writeFileSync } from "fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/update-parity.test.js :5 const fs = require("node:fs");
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/validate-benchmark-artifacts.mjs :2 import { existsSync, readFileSync, readdirSync } from "node:fs";
  • fs (weak) memorycrystal-memorycrystal-8e290ba/scripts/web-backend-env.ts :2 import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";

shell / exec 36

  • shell (weak) memorycrystal-memorycrystal-8e290ba/plugin/__tests__/env-propagation.test.js :2 const { spawn } = require('node:child_process');
  • shell memorycrystal-memorycrystal-8e290ba/plugin/capture-hook.js :5 * It was previously used by handler.js (via child_process.spawnSync) and as a
  • shell memorycrystal-memorycrystal-8e290ba/plugin/handler.js :15 const childProcess = require("node:child_process");
  • shell (weak) memorycrystal-memorycrystal-8e290ba/plugin/handler.test.js :12 const childProcess = require("node:child_process");
  • shell memorycrystal-memorycrystal-8e290ba/plugin/index.js :6 const { execFile } = require("child_process");
  • shell (weak) memorycrystal-memorycrystal-8e290ba/plugin/package-files.test.js :3 const { execFileSync } = require("node:child_process");
  • shell memorycrystal-memorycrystal-8e290ba/plugins/cursor/memory-crystal/hooks/_lib.mjs :5 import { execFileSync } from "child_process";
  • shell memorycrystal-memorycrystal-8e290ba/plugins/shared/_lib.mjs :5 import { execFileSync } from "child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/crystal-hooks.test.mjs :150 import { spawn } from 'node:child_process';
  • shell (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/ensure-codex-hooks-flag.test.mjs :6 import { execFileSync } from 'node:child_process';
  • shell (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/install-hook-config.test.mjs :6 import { execFileSync } from 'node:child_process';
  • shell memorycrystal-memorycrystal-8e290ba/plugins/shared/install-sweep-launchd.mjs :4 import { execFileSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/plugins/shared/remove-hook-config.test.mjs :6 import { execFileSync } from 'node:child_process';
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/bench-memory-crystal.mjs :5 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/bench-recall.mjs :21 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-admin-run-helper.test.mjs :2 import { spawn, spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-deploy-self-hosted.mjs :3 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-auth-keys.ts :4 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-import-auth.ts :4 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-provision-env.ts :4 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-run-self-hosted.mjs :33 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-run-self-hosted.test.mjs :2 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-self-hosted-cli.mjs :3 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/crystal-enable.test.js :8 const { spawnSync } = require("node:child_process");
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/hermes-plugin-contract-smoke.test.mjs :3 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/install-launchd-plist.mjs :2 import { execFileSync } from "child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/installer-support-tier.test.mjs :15 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/installer-universal-smoke.test.mjs :16 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/lib/convex-self-hosted-env.mjs :1 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/local-backend-artifact-smoke.mjs :6 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/managed-block-discipline.test.mjs :20 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/provision-gerald-research-key.mjs :4 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/provision-moondev-ingest-key.mjs :4 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/research-scale-fixture.mjs :7 import { execFileSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/rotate-mcp-api-key.mjs :28 import { spawnSync } from "node:child_process";
  • shell (weak) memorycrystal-memorycrystal-8e290ba/scripts/rotate-mcp-api-key.test.mjs :2 import { spawnSync } from "node:child_process";

network 31

  • net memorycrystal-memorycrystal-8e290ba/convex/crystal/providerGateway.ts :577 const response = await fetch(args.endpoint, {
  • net memorycrystal-memorycrystal-8e290ba/convex/crystal/researchArtifacts.ts :185 const response = await fetch(url);
  • net memorycrystal-memorycrystal-8e290ba/convex/local/bootstrap.ts :242 response = await fetch(url, {
  • net memorycrystal-memorycrystal-8e290ba/convex/local/telemetryPush.ts :296 response = await fetch(`${cloudUrl}/api/cloud/telemetry/push`, {
  • net memorycrystal-memorycrystal-8e290ba/mcp-server/src/index.ts :2 import { createServer } from "node:http";
  • net memorycrystal-memorycrystal-8e290ba/mcp-server/src/lib/convexClient.ts :149 const response = await fetch(`${this.baseUrl}${path}`, {
  • net memorycrystal-memorycrystal-8e290ba/mcp-server/src/lib/embed.ts :34 const response = await fetch(`${this.endpoint}/api/embeddings`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/plugin/__tests__/env-propagation.test.js :3 const { createServer } = require('node:http');
  • net memorycrystal-memorycrystal-8e290ba/plugin/capture-hook.js :119 const res = await fetch(`${convexUrl}/api/mcp/capture`, {
  • net memorycrystal-memorycrystal-8e290ba/plugin/compaction/crystal-summarizer.js :113 const res = await fetch(`${baseUrl}/chat/completions`, {
  • net memorycrystal-memorycrystal-8e290ba/plugin/index.js :487 const statsRes = await fetch(`${convexUrl}/api/mcp/stats`, {
  • net memorycrystal-memorycrystal-8e290ba/plugin/recall-hook.js :360 const mcpResponse = await fetch(`${crystalSite}/api/mcp/recall`, {
  • net memorycrystal-memorycrystal-8e290ba/plugins/cursor/memory-crystal/hooks/_lib.mjs :76 const res = await fetch(`${config.convexUrl}${path}`, {
  • net memorycrystal-memorycrystal-8e290ba/plugins/shared/_lib.mjs :76 const res = await fetch(`${config.convexUrl}${path}`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/bench-memory-crystal.mjs :192 const response = await fetch(`${apiUrl}${path}`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-admin-run-helper.test.mjs :68 `import { createServer } from "node:http";
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/crystal-backfill-from-jsonl.mjs :155 const response = await fetch(`${config.convexUrl}${path}`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/crystal-enable.test.js :9 const { createServer } = require("node:http");
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/eval-graph-extraction-openrouter.mjs :294 const res = await fetch(OPENROUTER_API_URL, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/eval-graph-extraction.mjs :294 const res = await fetch(url, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/gerald-read-contract-smoke.mjs :15 const response = await fetch(`${base}${path}`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/installer-universal-smoke.test.mjs :534 import { createServer } from "node:http";
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/moondev-ingest-canary.mjs :21 const response = await fetch(`${base}${path}`, { method, headers: headersFor(credential, body), body: body === undefined ? undefined : JSON.stringify(body), redirect });
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/research-e2e-smoke.mjs :25 const response = await fetch(`${baseUrl}${path}`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/research-scale-fixture.mjs :45 const response = await fetch(`${apiUrl}${path}`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/seed-from-memory.js :13 const https = require("node:https");
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/soak-recall.mjs :143 const response = await fetch(`${origin}/api/mcp/recall`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/scripts/test-capture-e2e.cjs :3 const http = require("node:http");
  • net (weak) memorycrystal-memorycrystal-8e290ba/tests/e2e/cross-machine.spec.ts :47 const resp = await fetch(`https://${host}/api/mcp/recall`, {
  • net (weak) memorycrystal-memorycrystal-8e290ba/tests/e2e/onboarding.cold.spec.ts :109 const r = await fetch(url);
  • net (weak) memorycrystal-memorycrystal-8e290ba/tests/e2e/revocation.spec.ts :32 const resp = await fetch(`https://${host}/api/mcp/recall`, {

secrets 31

  • secrets (weak) memorycrystal-memorycrystal-8e290ba/convex/crystal/organic/__tests__/utils.test.ts :252 delete process.env.OPENROUTER_API_KEY;
  • secrets memorycrystal-memorycrystal-8e290ba/convex/crystal/providerSettings.ts :78 const adminKey = (await resolveOpenRouterAdminOverride(ctx)) ?? process.env.OPENROUTER_API_KEY;
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/convex/local/__tests__/telemetryPush.test.ts :82 process.env.MC_TUNNEL_TELEMETRY_TOKEN = "test-telemetry-token";
  • secrets memorycrystal-memorycrystal-8e290ba/convex/local/bootstrap.ts :221 const token = process.env.MC_BOOTSTRAP_TOKEN;
  • secrets memorycrystal-memorycrystal-8e290ba/convex/local/telemetryPush.ts :95 if (process.env.GEMINI_API_KEY) embedder = "gemini";
  • secrets memorycrystal-memorycrystal-8e290ba/convex/selfHosted/adminSettingsResolvers.ts :28 return process.env.OPENROUTER_API_KEY?.trim() || null;
  • secrets memorycrystal-memorycrystal-8e290ba/mcp-server/src/index.ts :145 hasTransportToken = Boolean(process.env.MC_MCP_TOKEN),
  • secrets memorycrystal-memorycrystal-8e290ba/mcp-server/src/lib/convexClient.ts :44 * Previously each tool checked only `process.env.MEMORY_CRYSTAL_API_KEY`, which
  • secrets memorycrystal-memorycrystal-8e290ba/mcp-server/src/lib/embed.ts :77 const resolvedApiKey = config.apiKey ?? process.env.OPENROUTER_API_KEY;
  • secrets memorycrystal-memorycrystal-8e290ba/plugin/capture-hook.js :142 process.env.MEMORY_CRYSTAL_API_KEY ||
  • secrets memorycrystal-memorycrystal-8e290ba/plugin/compaction/crystal-summarizer.js :148 const apiKey = config.apiKey || process.env.OPENAI_API_KEY;
  • secrets memorycrystal-memorycrystal-8e290ba/plugin/index.js :955 apiKey: config?.openaiApiKey || process.env.OPENAI_API_KEY || undefined,
  • secrets memorycrystal-memorycrystal-8e290ba/plugins/cursor/memory-crystal/hooks/_lib.mjs :19 config.apiKey = config.apiKey || process.env.MEMORY_CRYSTAL_API_KEY || "";
  • secrets memorycrystal-memorycrystal-8e290ba/plugins/shared/_lib.mjs :19 config.apiKey = config.apiKey || process.env.MEMORY_CRYSTAL_API_KEY || "";
  • secrets memorycrystal-memorycrystal-8e290ba/plugins/shared/crystal-hooks-sweep.mjs :109 config.apiKey = config.apiKey || process.env.MEMORY_CRYSTAL_API_KEY || process.env.CRYSTAL_API_KEY || "";
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-auth-keys.ts :13 CONVEX_SELF_HOSTED_ADMIN_KEY: process.env.CONVEX_SELF_HOSTED_ADMIN_KEY || "",
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-import-auth.ts :19 CONVEX_SELF_HOSTED_ADMIN_KEY: process.env.CONVEX_SELF_HOSTED_ADMIN_KEY || "",
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-provision-env.ts :12 CONVEX_SELF_HOSTED_ADMIN_KEY: process.env.CONVEX_SELF_HOSTED_ADMIN_KEY || "",
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-seed.ts :73 adminKey: process.env.CONVEX_SELF_HOSTED_ADMIN_KEY,
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-local-write-env.ts :29 const input = readFileSync(path, "utf8").replace(/\$\{GENERATED_ADMIN_KEY\}/g, process.env.CONVEX_SELF_HOSTED_ADMIN_KEY || "");
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/convex-run-self-hosted.test.mjs :39 admin: process.env.CONVEX_SELF_HOSTED_ADMIN_KEY,
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/crystal-backfill-from-jsonl.mjs :149 apiKey: process.env.MEMORY_CRYSTAL_API_KEY || config.apiKey || "",
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/eval-graph-extraction-openrouter.mjs :430 const apiKey = process.env.OPENROUTER_API_KEY;
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/eval-graph-extraction.mjs :409 const apiKey = process.env.GEMINI_API_KEY;
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/lib/convex-admin-run-helper.mjs :109 const adminKey = process.env.CONVEX_SELF_HOSTED_ADMIN_KEY?.trim();
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/research-e2e-smoke.mjs :8 const apiKey = process.env.MEMORY_CRYSTAL_API_KEY;
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/research-scale-fixture.mjs :25 const apiKey = process.env.MEMORY_CRYSTAL_API_KEY ?? "";
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/rotate-mcp-api-key.test.mjs :695 admin: process.env.CONVEX_SELF_HOSTED_ADMIN_KEY,
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/scripts/soak-recall.mjs :207 const apiKey = process.env.MEMORY_CRYSTAL_API_KEY ?? "";
  • secrets memorycrystal-memorycrystal-8e290ba/shared/env.ts :9 return process.env.CRYSTAL_API_KEY ?? process.env.GEMINI_API_KEY;
  • secrets (weak) memorycrystal-memorycrystal-8e290ba/tests/chaos/cf-api-rate-limit.spec.ts :24 process.env.CF_API_TOKEN = FAKE_TOKEN;

database 1

  • db memorycrystal-memorycrystal-8e290ba/plugin/index.js :903 const Database = require("better-sqlite3");

install hooks 1

  • prepublishOnly memorycrystal-memorycrystal-8e290ba/mcp-server/package.json :20 npm run build

declared dependencies 10

  • fflate@^0.8.2
  • @playwright/test@^1.49.0
  • convex@^1.35.1
  • convex-test@^0.0.41
  • eslint-plugin-local-rules@^3.0.2
  • vitest@^4.0.18
  • lightningcss-darwin-arm64@1.32.0
  • lightningcss-darwin-x64@1.32.0
  • lightningcss-linux-arm64-gnu@1.32.0
  • lightningcss-linux-x64-gnu@1.32.0

transport_posture 1

  • binds all interfaces (0.0.0.0) memorycrystal-memorycrystal-8e290ba/scripts/installer-universal-smoke.test.mjs :2590 }).listen(0, "0.0.0.0", function () { writeFileSync(process.argv[4], String(this.address().port)); });