github TypeScript analyzed 2fb4d37

shawnhack/exocortex

github

Personal unified memory system for AI agents. SQLite-backed, local-first, hybrid RAG retrieval with MCP integration.

maintainer
shawnhack
license
MIT
first seen
2026-08-01
last seen
2026-08-06
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 44 tools
transport stdio counts 44 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • agent_task
  • diary_list_agents
  • diary_read
  • diary_write
  • embedding_models
  • goal
  • memory_auto
  • memory_benchmark
  • memory_browse
  • memory_clip
  • memory_compile
  • memory_context
  • memory_contradictions
  • memory_correct
  • memory_diff
  • memory_entities
  • memory_facts
  • memory_feedback
  • memory_forget
  • memory_get
  • memory_graph
  • memory_ingest
  • memory_job_health
  • memory_link
  • memory_lint
  • memory_maintenance
  • memory_navigate
  • memory_obsidian_sync
  • memory_ping
  • memory_project_snapshot
  • memory_promote
  • memory_reason
  • memory_research
  • memory_search
  • memory_security_audit
  • memory_store
  • memory_timeline
  • memory_update
  • memory_wakeup
  • memory_wiki_refresh
  • prediction
  • unified_search
  • wiki_append_article
  • wiki_write_article
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 2fb4d37 · analyzer v33 · 2d ago

skills & prompt files 5

danger signals3

code evidence vv0.5.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 239

filesystem 33

  • fs (weak) shawnhack-exocortex-2fb4d37/benchmarks/longmemeval/run.mjs :17 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/benchmarks/run-all.mjs :19 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/cli/src/commands/export.ts :2 import { writeFileSync } from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/cli/src/commands/import.ts :2 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/cli/src/commands/verify-backup.ts :2 import { readFileSync } from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/core/src/backup.ts :7 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/core/src/db/connection.ts :4 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/core/src/export/obsidian-sync.ts :1 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/core/src/export/obsidian.ts :1 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/core/src/intelligence/wiki-compile.ts :1 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/packages/core/src/memory/digest.test.ts :2 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/core/src/memory/digest.ts :1 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/core/src/memory/ingest.ts :1 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/mcp/src/hooks/session-orient.js :20 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/mcp/src/hooks/stop.js :11 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :2 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-ingest.ts :2 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/wiki-compile.ts :2 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/server/src/index.ts :29 import fs from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/server/src/middleware/x402.ts :8 import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
  • fs shawnhack-exocortex-2fb4d37/packages/server/src/scheduler.ts :2 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/scripts/run-benchmark.mts :1 import { readFileSync } from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/scripts/take-screenshots.mjs :8 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/scripts/test-dashboard-interactions.mjs :3 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/scripts/test-memory-detail-layout.mjs :3 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/tests/backup.test.ts :2 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/tests/cli-retrieval-regression.test.ts :3 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/tests/connection.test.ts :2 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/tests/e2e-lifecycle.test.ts :2 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/tests/mcp-contract.test.ts :2 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/tests/mcp-memory-tools.test.ts :2 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/tests/scheduler-retrieval-regression.test.ts :2 import fs from "node:fs";
  • fs (weak) shawnhack-exocortex-2fb4d37/tests/server-routes.test.ts :2 import fs from "node:fs";

shell / exec 8

  • shell shawnhack-exocortex-2fb4d37/packages/cli/src/commands/mcp.ts :2 import { spawn } from "node:child_process";
  • shell shawnhack-exocortex-2fb4d37/packages/core/src/memory/deep-context.ts :1 import { spawn } from "node:child_process";
  • shell shawnhack-exocortex-2fb4d37/packages/mcp/src/hooks/session-orient.js :17 import { execSync } from "node:child_process";
  • shell (weak) shawnhack-exocortex-2fb4d37/scripts/take-screenshots.mjs :10 import { spawn } from "node:child_process";
  • shell (weak) shawnhack-exocortex-2fb4d37/scripts/test-dashboard-interactions.mjs :6 import { spawn } from "node:child_process";
  • shell (weak) shawnhack-exocortex-2fb4d37/scripts/test-memory-detail-layout.mjs :6 import { spawn } from "node:child_process";
  • shell (weak) shawnhack-exocortex-2fb4d37/tests/cli-retrieval-regression.test.ts :2 import { spawnSync } from "node:child_process";
  • shell (weak) shawnhack-exocortex-2fb4d37/tests/e2e-lifecycle.test.ts :6 import { spawn, type ChildProcess } from "node:child_process";

network 13

  • net (weak) shawnhack-exocortex-2fb4d37/packages/core/src/benchmark/runner.ts :36 const res = await fetch("https://api.anthropic.com/v1/messages", {
  • net shawnhack-exocortex-2fb4d37/packages/core/src/memory/hyde.ts :46 const res = await fetch("https://api.anthropic.com/v1/messages", {
  • net shawnhack-exocortex-2fb4d37/packages/core/src/memory/ingest-url.ts :146 const response = await fetch(url, {
  • net shawnhack-exocortex-2fb4d37/packages/core/src/memory/research.ts :48 const response = await fetch(url, {
  • net shawnhack-exocortex-2fb4d37/packages/dashboard/src/api/client.ts :7 const res = await fetch(`${BASE}${path}`, {
  • net shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :692 ids: z.array(z.string()).min(1).max(10).describe("Memory IDs to fetch (max 10)"),
  • net shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-ingest.ts :23 content: z.string().optional().describe("Pre-fetched content, skips HTTP fetch (source: url)"),
  • net shawnhack-exocortex-2fb4d37/packages/server/src/middleware/x402.ts :118 const res = await fetch(rpcUrl, {
  • net shawnhack-exocortex-2fb4d37/packages/server/src/routes/chat.ts :114 const res = await fetch("https://api.openai.com/v1/chat/completions", {
  • net (weak) shawnhack-exocortex-2fb4d37/scripts/take-screenshots.mjs :268 const res = await fetch(`${url}/health`);
  • net (weak) shawnhack-exocortex-2fb4d37/scripts/test-dashboard-interactions.mjs :40 const res = await fetch(`${baseUrl}/health`);
  • net (weak) shawnhack-exocortex-2fb4d37/scripts/test-memory-detail-layout.mjs :37 const res = await fetch(`${baseUrl}/health`);
  • net (weak) shawnhack-exocortex-2fb4d37/tests/e2e-lifecycle.test.ts :31 const res = await fetch(`${baseUrl}/health`);

secrets 3

  • secrets (weak) shawnhack-exocortex-2fb4d37/packages/core/src/benchmark/runner.ts :141 const apiKey = options.apiKey ?? process.env.ANTHROPIC_API_KEY;
  • secrets shawnhack-exocortex-2fb4d37/packages/core/src/memory/hyde.ts :88 const apiKey = getSetting(db, "ai.api_key") ?? process.env.ANTHROPIC_API_KEY;
  • secrets (weak) shawnhack-exocortex-2fb4d37/scripts/run-benchmark.mts :7 if (!process.env.ANTHROPIC_API_KEY) {

tool registrations 44

  • agent_task shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/agent-tasks.ts :8
  • goal shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/goals.ts :8
  • memory_navigate shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/hierarchy.ts :8
  • memory_wakeup shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/hierarchy.ts :96
  • diary_write shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/hierarchy.ts :113
  • diary_read shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/hierarchy.ts :132
  • diary_list_agents shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/hierarchy.ts :165
  • embedding_models shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/hierarchy.ts :183
  • memory_benchmark shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/hierarchy.ts :227
  • memory_project_snapshot shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :12
  • memory_diff shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :129
  • memory_contradictions shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :173
  • memory_job_health shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :244
  • memory_lint shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :302
  • memory_wiki_refresh shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :336
  • memory_promote shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :377
  • memory_correct shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :455
  • memory_clip shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :516
  • memory_feedback shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :550
  • memory_reason shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :633
  • unified_search shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/intelligence.ts :710
  • memory_link shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/links.ts :10
  • memory_auto shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-auto.ts :41
  • memory_store shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :13
  • memory_search shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :290
  • memory_forget shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :490
  • memory_context shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :515
  • memory_get shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :688
  • memory_facts shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :754
  • memory_entities shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :792
  • memory_graph shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :889
  • memory_update shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :973
  • memory_browse shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-core.ts :1049
  • memory_ingest shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-ingest.ts :12
  • memory_research shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-ingest.ts :250
  • memory_maintenance shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-maintenance.ts :9
  • memory_timeline shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-maintenance.ts :458
  • memory_ping shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/memory-maintenance.ts :632
  • prediction shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/predictions.ts :8
  • memory_compile shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/wiki-compile.ts :13
  • wiki_write_article shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/wiki-compile.ts :79
  • wiki_append_article shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/wiki-compile.ts :120
  • memory_security_audit shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/wiki-compile.ts :224
  • memory_obsidian_sync shawnhack-exocortex-2fb4d37/packages/mcp/src/tools/wiki-compile.ts :263

install hooks 1

  • prepare shawnhack-exocortex-2fb4d37/package.json :16 git config core.hooksPath .githooks 2>/dev/null || true

declared dependencies 4

  • playwright@^1.59.1
  • tsx@^4.21.0
  • typescript@^6.0.3
  • vitest@^4.1.5