github TypeScript analyzed 956815d

GalaxyRuler/memory-fort

github

Cross-tool persistent memory for AI agents — local, private, no API key required

maintainer
GalaxyRuler
licence
GPL-3.0
first seen
2026-06-06
last seen
2026-08-04
releases · 30d
0
short id

Drift inferred · capture-to-capture

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

capabilities 5 tools
transport stdio · streamable-http · http · sse counts 5 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • list_pages
  • log_observation
  • read_page
  • search
  • search_capabilities
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 956815d · analyzer v33 · 2w ago

skills & prompt files 5

danger signals9

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

code files: 899

filesystem 340

  • fs GalaxyRuler-memory-fort-956815d/electron/main.ts :3 import { appendFile, mkdir, mkdtemp, readFile, rm, stat, writeFile } from "node:fs/promises";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/assert-eval-thresholds.mjs :2 import { readFileSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/assert-vendored-sqlite-vec.mjs :2 import { existsSync, readFileSync, statSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/check-prompt-drift.mjs :1 import { readFileSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/check-prompt-drift.ts :1 import { readFileSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/ci-eval-summary.mjs :2 import { readFileSync, appendFileSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/install-contract-smoke.mjs :2 import { readFile } from "node:fs/promises";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/install-dev-hooks.mjs :2 import { chmodSync, mkdirSync, writeFileSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/preflight-vec.mjs :3 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/release/create-desktop-artifact-manifest.mjs :3 import { createReadStream, readdirSync, statSync, writeFileSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/release/validate-desktop-artifacts.mjs :3 import { createReadStream, readFileSync, readdirSync, statSync } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/run-installed-index-gate.mjs :1 import { createWriteStream } from "node:fs";
show 28 more
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/run-installed-phase5-gate.mjs :2 import { createWriteStream } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/scan-leaks.mjs :3 import { constants } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/spike-index-concurrency.mjs :1 import { mkdir, readFile, rm, stat, writeFile } from "node:fs/promises";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/spike-phase5-vec-scale.mjs :2 import { mkdir, rm, stat, writeFile } from "node:fs/promises";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/synthetic-vault.mjs :1 import { createWriteStream } from "node:fs";
  • fs (weak) GalaxyRuler-memory-fort-956815d/scripts/test-narrative-synthesis.mjs :6 import fs from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/capture/auto-link.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/capture/raw-captures.ts :1 import { readdir, stat } from "node:fs/promises";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/backfill-source.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/backup.ts :3 import { createReadStream } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/chatgpt-bridge.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/compact-raw.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/compile.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/compress.ts :2 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/curate.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/dashboard.ts :2 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/decay.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/desktop-shortcut.ts :2 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/discover-threads.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/doctor.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/eval-longmemeval.ts :1 import { mkdir, writeFile } from "node:fs/promises";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/forget.ts :2 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/grep.ts :2 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/import-agentmemory.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/init-onboarding.ts :1 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/init.ts :2 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/install/antigravity.ts :4 import { existsSync } from "node:fs";
  • fs GalaxyRuler-memory-fort-956815d/src/cli/commands/install/claude-code.ts :2 import { existsSync } from "node:fs";

300 more not shown — this panel samples each group; the count above is the real total.

shell / exec 71

  • shell GalaxyRuler-memory-fort-956815d/electron/main.ts :2 import { execFile } from "node:child_process";
  • shell (weak) GalaxyRuler-memory-fort-956815d/scripts/install-contract-smoke.mjs :1 import { execFile } from "node:child_process";
  • shell (weak) GalaxyRuler-memory-fort-956815d/scripts/preflight-vec.mjs :1 import { spawnSync } from "node:child_process";
  • shell (weak) GalaxyRuler-memory-fort-956815d/scripts/run-installed-index-gate.mjs :6 import { spawn } from "node:child_process";
  • shell (weak) GalaxyRuler-memory-fort-956815d/scripts/run-installed-phase5-gate.mjs :7 import { spawn } from "node:child_process";
  • shell (weak) GalaxyRuler-memory-fort-956815d/scripts/scan-leaks.mjs :2 import { execFileSync } from "node:child_process";
  • shell (weak) GalaxyRuler-memory-fort-956815d/scripts/spike-index-concurrency.mjs :5 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/backup.ts :1 import { execFile as nodeExecFile } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/chatgpt-bridge.ts :3 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/dashboard.ts :1 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/desktop-shortcut.ts :1 import { execFileSync } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/forget.ts :4 import { execFile } from "node:child_process";
show 28 more
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/grep.ts :1 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/init.ts :1 import { execFileSync } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/install/antigravity.ts :1 import { execFileSync } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/install/chatgpt.ts :1 import { execFile } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/install/claude-code.ts :5 import { execFile as execFileCallback } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/install/opencode.ts :279 " await $`node ${script}`.stdin(JSON.stringify(event));",
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/stats.ts :4 import { execFileSync } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/supervisor.ts :1 import { execFile as execFileCallback } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/uninstall.ts :1 import { execFile } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/verify-schedule.ts :1 import { execFile as nodeExecFile } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/verify-schedule/windows.ts :72 await execFile("schtasks.exe", ["/Delete", "/TN", TASK_NAME, "/F"], { windowsHide: true });
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/verify/clients.ts :3 import { execFile } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/commands/verify/git.ts :1 import { execFile as nodeExecFile } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/heavy-reexec.ts :1 import { spawnSync } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/cli/template-render.ts :1 import { execFileSync } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/clients/status.ts :3 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/dashboard/auto-heal-scheduler.ts :1 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/dashboard/auto-promote-scheduler.ts :1 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/dashboard/index-concurrency-spike.ts :30 exec(sql: string): void;
  • shell GalaxyRuler-memory-fort-956815d/src/dashboard/loaders.ts :1 import { execFile } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/dashboard/phase5-contention-spike.ts :1 import { spawnSync } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/dashboard/utility-search-executor.ts :1 import { fork as forkChildProcess } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/dashboard/verify-worker.ts :6 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/forget/evidence.ts :2 import { execFile } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/forget/history-purge.ts :2 import { spawn } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/index/db.ts :164 exec(sql: string): void;
  • shell GalaxyRuler-memory-fort-956815d/src/index/native/capability-probe.ts :1 import { spawnSync } from "node:child_process";
  • shell GalaxyRuler-memory-fort-956815d/src/index/native/capability.ts :44 exec(sql: string): void;

31 more not shown — this panel samples each group; the count above is the real total.

network 25

  • net GalaxyRuler-memory-fort-956815d/electron/main.ts :1939 return await fetch(url, { signal: controller.signal });
  • net (weak) GalaxyRuler-memory-fort-956815d/scripts/preflight-vec.mjs :185 const response = await fetch(url, {
  • net (weak) GalaxyRuler-memory-fort-956815d/scripts/test-narrative-synthesis.mjs :71 const response = await fetch("https://openrouter.ai/api/v1/chat/completions", {
  • net GalaxyRuler-memory-fort-956815d/src/cli/commands/chatgpt-bridge.ts :4 import http from "node:http";
  • net GalaxyRuler-memory-fort-956815d/src/cli/commands/install/opencoven.ts :2 import { request } from "node:http";
  • net GalaxyRuler-memory-fort-956815d/src/cli/commands/verify/chatgpt.ts :3 import https from "node:https";
  • net GalaxyRuler-memory-fort-956815d/src/clients/status.ts :6 import https from "node:https";
  • net GalaxyRuler-memory-fort-956815d/src/dashboard-ui/lib/api.ts :18 return fetch(input, { ...init, headers });
  • net GalaxyRuler-memory-fort-956815d/src/dashboard/index-concurrency-spike.ts :1 import { createServer, type Server as HttpServer, type ServerResponse } from "node:http";
  • net GalaxyRuler-memory-fort-956815d/src/dashboard/phase5-contention-spike.ts :5 import { createServer, type IncomingMessage, type Server as HttpServer, type ServerResponse } from "node:http";
  • net GalaxyRuler-memory-fort-956815d/src/dashboard/server.ts :2 import { createServer as createHttpServer, type IncomingHttpHeaders, type IncomingMessage, type Server as HttpServer, type ServerResponse } from "node:http";
  • net GalaxyRuler-memory-fort-956815d/src/llm/ollama.ts :31 response = await fetch(`${host}/api/chat`, {
show 13 more
  • net GalaxyRuler-memory-fort-956815d/src/mcp/http-bridge.ts :1 import http from "node:http";
  • net GalaxyRuler-memory-fort-956815d/src/mcp/server.ts :333 // is ready, so fetch() throws ECONNREFUSED/ECONNRESET. Retry the connect a few
  • net GalaxyRuler-memory-fort-956815d/src/retrieval/embedder/ollama.ts :57 response = await fetch(`${input.host}/api/embeddings`, {
  • net (weak) GalaxyRuler-memory-fort-956815d/templates/scripts/dashboard-placeholder.mjs :5 import { createServer } from "node:http";
  • net (weak) GalaxyRuler-memory-fort-956815d/test/cli/commands/verify/chatgpt.test.ts :1 import { createServer as createHttpServer } from "node:http";
  • net (weak) GalaxyRuler-memory-fort-956815d/test/dashboard/index-golden-drift.test.ts :132 const response = await fetch(url);
  • net (weak) GalaxyRuler-memory-fort-956815d/test/dashboard/index-search-route.test.ts :84 const response = await fetch(
  • net (weak) GalaxyRuler-memory-fort-956815d/test/dashboard/server-config-edit.test.ts :28 const response = await fetch(`http://${server.host}:${server.port}/api/providers`);
  • net (weak) GalaxyRuler-memory-fort-956815d/test/dashboard/server-secrets.test.ts :28 const res = await fetch(`${base}/api/secrets`);
  • net (weak) GalaxyRuler-memory-fort-956815d/test/dashboard/server-sync.test.ts :47 const response = await fetch(`${origin}/api/sync`, { method: "POST" });
  • net (weak) GalaxyRuler-memory-fort-956815d/test/dashboard/server.test.ts :3 import { request } from "node:http";
  • net (weak) GalaxyRuler-memory-fort-956815d/test/mcp/http-bridge.test.ts :2 import { createServer as createHttpServer } from "node:http";
  • net GalaxyRuler-memory-fort-956815d/vitest.config.ts :23 // servers and issues real fetch()/http.request() calls over real loopback

secrets 4

  • secrets (weak) GalaxyRuler-memory-fort-956815d/scripts/test-narrative-synthesis.mjs :13 const API_KEY = process.env.OPENROUTER_API_KEY;
  • secrets GalaxyRuler-memory-fort-956815d/src/retrieval/embedder/voyage.ts :144 const envKey = process.env["VOYAGE_API_KEY"]?.trim();
  • secrets (weak) GalaxyRuler-memory-fort-956815d/test/retrieval/voyage-client.test.ts :41 const originalApiKey = process.env["VOYAGE_API_KEY"];
  • secrets (weak) GalaxyRuler-memory-fort-956815d/test/storage/secrets.test.ts :48 process.env["OPENROUTER_API_KEY"] = "fromenv";

database 5

  • db (weak) GalaxyRuler-memory-fort-956815d/scripts/spike-phase5-vec-scale.mjs :10 const Database = require("better-sqlite3");
  • db GalaxyRuler-memory-fort-956815d/src/dashboard/index-concurrency-spike.ts :86 const BetterSqlite3 = require("better-sqlite3") as BetterSqlite3Constructor;
  • db GalaxyRuler-memory-fort-956815d/src/dashboard/phase5-contention-spike.ts :127 const BetterSqlite3 = require("better-sqlite3") as {
  • db GalaxyRuler-memory-fort-956815d/src/index/db.ts :9 const BetterSqlite3 = require("better-sqlite3") as BetterSqlite3Constructor;
  • db GalaxyRuler-memory-fort-956815d/src/index/native/capability.ts :7 const BetterSqlite3 = require("better-sqlite3") as BetterSqlite3Constructor;

tool registrations 5

  • log_observation GalaxyRuler-memory-fort-956815d/src/mcp/server.ts :553
  • read_page GalaxyRuler-memory-fort-956815d/src/mcp/server.ts :563
  • list_pages GalaxyRuler-memory-fort-956815d/src/mcp/server.ts :573
  • search GalaxyRuler-memory-fort-956815d/src/mcp/server.ts :583
  • search_capabilities GalaxyRuler-memory-fort-956815d/src/mcp/server.ts :593

install hooks 1

  • prepublishOnly GalaxyRuler-memory-fort-956815d/package.json :27 npm run build && npm run scan:leaks

declared dependencies 52

  • @modelcontextprotocol/sdk@^1.29
  • @fontsource/ibm-plex-mono@^5.2.7
  • @react-three/drei@^10.7.7
  • @react-three/fiber@^9.6.1
  • @react-three/postprocessing@^3.0.4
  • @tanstack/react-query@^5.100.14
  • @tanstack/react-router@^1.170.8
  • better-sqlite3@12.11.1
  • clsx@^2.1.1
  • cmdk@^1.1.1
  • commander@^12
  • gray-matter@^4
show 28 more
  • js-yaml@^4
  • lucide-react@^1.16.0
  • onnxruntime-node@1.22.0
  • openai@^6.39.0
  • postprocessing@^6.39.1
  • react@^19.2.6
  • react-dom@^19.2.6
  • react-markdown@^9.1.0
  • remark-gfm@^4.0.1
  • remark-parse@^11.0.0
  • sqlite-vec@0.1.9
  • tailwind-merge@^3.6.0
  • three@^0.184.0
  • unified@^11.0.5
  • voyageai@~0.2.1
  • @electron/rebuild@4.0.4
  • @tailwindcss/typography@^0.5.19
  • @tanstack/router-plugin@^1.168.11
  • @testing-library/dom@^10.4.1
  • @testing-library/jest-dom@^6.9.1
  • @testing-library/react@^16.3.2
  • @types/js-yaml@^4
  • @types/jsdom@^28.0.3
  • @types/node@^20
  • @types/react@^19.2.15
  • @types/react-dom@^19.2.3
  • @types/three@^0.184.1
  • @vitejs/plugin-react@^4.7.0

12 more not shown — this panel samples each group; the count above is the real total.

transport_posture 2

  • network-listening, binds all interfaces, no auth detected GalaxyRuler-memory-fort-956815d/test/cli/commands/dashboard.test.ts :71 host: "0.0.0.0",
  • binds all interfaces (0.0.0.0) GalaxyRuler-memory-fort-956815d/test/dashboard/server.test.ts :361 host: "0.0.0.0",