github TypeScript analyzed 16e2f15

salishforge/memforge

github

Neuroscience-inspired memory for AI agents — sleep cycles that rewrite and strengthen knowledge over time. TypeScript, PostgreSQL, MCP.

maintainer
salishforge
license
MIT
first seen
2026-07-25
last seen
2026-07-29
releases · 30d
0
short id

Drift inferred · capture-to-capture

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

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

tools

  • memforge_active_recall
  • memforge_add
  • memforge_anthropic_push
  • memforge_cold_restore
  • memforge_cold_search
  • memforge_consolidate
  • memforge_declare_role
  • memforge_dedup_entities
  • memforge_deprecate_namespace
  • memforge_detect_roles
  • memforge_dreams_cancel
  • memforge_dreams_create
  • memforge_dreams_list
  • memforge_dreams_status
  • memforge_drift
  • memforge_entities
  • memforge_expertise
  • memforge_feedback
  • memforge_graph
  • memforge_health
  • memforge_list_deprecated_namespaces
  • memforge_meta_reflect
  • memforge_procedures
  • memforge_publish_procedures
  • memforge_query
  • memforge_record_procedure_outcome
  • memforge_reflect
  • memforge_reflections
  • memforge_roles
  • memforge_set_validity
  • memforge_shared_procedures
  • memforge_sleep
  • memforge_sleep_advisory
  • memforge_stats
  • memforge_timeline
  • memforge_undeprecate_namespace
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 16e2f15 · analyzer v33 · 1d ago

skills & prompt files 1

danger signals2

code evidence vv3.0.0-beta.4 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 100

filesystem 6

  • fs (weak) salishforge-memforge-16e2f15/benchmarks/longmemeval-qa/evaluate.ts :13 import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
  • fs (weak) salishforge-memforge-16e2f15/benchmarks/longmemeval-qa/run.ts :6 import { writeFileSync, existsSync, mkdirSync } from 'node:fs';
  • fs (weak) salishforge-memforge-16e2f15/benchmarks/longmemeval/download.ts :6 import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
  • fs (weak) salishforge-memforge-16e2f15/benchmarks/longmemeval/evaluate.ts :6 import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
  • fs (weak) salishforge-memforge-16e2f15/benchmarks/longmemeval/ingest.ts :6 import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
  • fs (weak) salishforge-memforge-16e2f15/benchmarks/longmemeval/report.ts :6 import { readFileSync, writeFileSync, readdirSync, mkdirSync } from 'node:fs';

network 18

  • net (weak) salishforge-memforge-16e2f15/benchmarks/lib/llm.ts :111 response = await fetch(`${config.baseUrl}/chat/completions`, {
  • net (weak) salishforge-memforge-16e2f15/benchmarks/longmemeval/download.ts :44 const response = await fetch(url, { signal: AbortSignal.timeout(60_000) });
  • net salishforge-memforge-16e2f15/src/auth.ts :130 const response = await fetch(INTROSPECT_URL, {
  • net salishforge-memforge-16e2f15/src/dashboard.ts :104 const r = await fetch(BASE + '/admin/cache/stats');
  • net salishforge-memforge-16e2f15/src/dreams-anthropic.ts :248 const res = await fetch(url, {
  • net salishforge-memforge-16e2f15/src/embedding.ts :68 const response = await fetch(`${this.baseUrl}/embeddings`, {
  • net salishforge-memforge-16e2f15/src/llm.ts :176 const response = await fetch('https://api.anthropic.com/v1/messages', {
  • net salishforge-memforge-16e2f15/src/webhooks.ts :50 void fetch(webhookUrl, {
  • net (weak) salishforge-memforge-16e2f15/tests/abstractions.test.ts :15 import type { Server } from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/bootstrap.test.ts :15 import type { Server } from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/causal-graph.test.ts :14 import type { Server } from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/dreams-anthropic.test.ts :22 import http from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/dreams-bridge.test.ts :14 import http from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/dreams-compat.test.ts :17 import type { Server } from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/epistemic-confidence.test.ts :14 import type { Server } from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/explainable-memory.test.ts :14 import type { Server } from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/http-api.test.ts :16 import type { Server } from 'node:http';
  • net (weak) salishforge-memforge-16e2f15/tests/sentiment-tagging.test.ts :340 const res = await fetch(`http://localhost:0/memory/${E2E_AGENT}/add`, {

secrets 17

  • secrets (weak) salishforge-memforge-16e2f15/benchmarks/lib/config.ts :23 memforgeToken: process.env['MEMFORGE_TOKEN'],
  • secrets (weak) salishforge-memforge-16e2f15/benchmarks/lib/llm.ts :45 apiKey: process.env['QA_API_KEY'] ?? process.env['OPENAI_API_KEY'],
  • secrets (weak) salishforge-memforge-16e2f15/examples/quickstart.ts :15 token: process.env['MEMFORGE_TOKEN'],
  • secrets salishforge-memforge-16e2f15/src/app.ts :331 const allowAnyToken = process.env['ANTHROPIC_COMPAT_ALLOW_ANY_TOKEN'] === 'true';
  • secrets salishforge-memforge-16e2f15/src/audit.ts :63 hmacKey: process.env['AUDIT_HMAC_KEY'] ?? '',
  • secrets salishforge-memforge-16e2f15/src/auth.ts :31 const MEMFORGE_TOKEN = process.env['MEMFORGE_TOKEN'] ?? '';
  • secrets salishforge-memforge-16e2f15/src/cache.ts :22 process.env['CACHE_HMAC_KEY'] ??
  • secrets salishforge-memforge-16e2f15/src/client.ts :101 this.token = config.token ?? process.env['MEMFORGE_TOKEN'];
  • secrets salishforge-memforge-16e2f15/src/dreams-anthropic.ts :90 this.apiKey = config.apiKey ?? process.env['ANTHROPIC_API_KEY'] ?? '';
  • secrets salishforge-memforge-16e2f15/src/embedding.ts :50 this.apiKey = config.apiKey ?? process.env['OPENAI_API_KEY'] ?? '';
  • secrets salishforge-memforge-16e2f15/src/llm.ts :165 this.apiKey = config.apiKey ?? process.env['ANTHROPIC_API_KEY'] ?? '';
  • secrets salishforge-memforge-16e2f15/src/memory-manager.ts :233 if (!process.env['ANTHROPIC_API_KEY']) return null;
  • secrets salishforge-memforge-16e2f15/src/server.ts :25 const ADMIN_TOKEN = process.env['ADMIN_TOKEN'] ?? '';
  • secrets (weak) salishforge-memforge-16e2f15/tests/dreams-anthropic.test.ts :15 process.env['MEMFORGE_TOKEN'] = 'test-bearer';
  • secrets (weak) salishforge-memforge-16e2f15/tests/dreams-bridge.test.ts :8 process.env['MEMFORGE_TOKEN'] = 'test-bearer';
  • secrets (weak) salishforge-memforge-16e2f15/tests/dreams-compat.test.ts :12 process.env['MEMFORGE_TOKEN'] = 'test-bearer-token';
  • secrets (weak) salishforge-memforge-16e2f15/tests/epistemic-confidence.test.ts :730 const origToken = process.env['MEMFORGE_TOKEN'];

database 37

  • db salishforge-memforge-16e2f15/src/audit.ts :15 import type { Pool } from 'pg';
  • db salishforge-memforge-16e2f15/src/cache.ts :12 import { createClient } from 'redis';
  • db salishforge-memforge-16e2f15/src/db.ts :3 import { Pool } from 'pg';
  • db salishforge-memforge-16e2f15/src/dream-runs.ts :29 import type { Client, Pool } from 'pg';
  • db salishforge-memforge-16e2f15/src/dreams-anthropic.ts :32 import type { Pool } from 'pg';
  • db salishforge-memforge-16e2f15/src/memory-manager.ts :8 import { Pool } from 'pg';
  • db salishforge-memforge-16e2f15/src/sleep-cycle.ts :6 import type { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/abstractions.test.ts :17 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/adaptive-sleep.test.ts :13 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/bitemporal.test.ts :19 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/bootstrap.test.ts :17 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/causal-graph.test.ts :16 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/cold-tier-retention.test.ts :12 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/cold-tier-search.test.ts :9 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/consolidation-metadata.test.ts :22 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/contested-conflicts.test.ts :14 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/dream-runs.test.ts :16 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/dreams-anthropic.test.ts :24 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/dreams-bridge.test.ts :16 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/dreams-compat.test.ts :19 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/embedding-migration.test.ts :14 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/epistemic-confidence.test.ts :16 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/explainable-memory.test.ts :16 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/http-api.test.ts :18 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/integration.test.ts :12 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/llm-paths.test.ts :13 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/load.test.ts :10 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/memory-budgeting.test.ts :13 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/memory-namespaces.test.ts :13 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/multi-device.test.ts :14 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/outcome-revision.test.ts :12 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/reflection-revision.test.ts :13 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/retrieval-determinism.test.ts :18 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/selective-forgetting.test.ts :10 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/sentiment-tagging.test.ts :14 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/sleep-advisory.test.ts :12 import { Pool } from 'pg';
  • db (weak) salishforge-memforge-16e2f15/tests/streaming-consolidation.test.ts :13 import { Pool } from 'pg';

tool registrations 36

  • memforge_add salishforge-memforge-16e2f15/src/mcp.ts :58
  • memforge_query salishforge-memforge-16e2f15/src/mcp.ts :72
  • memforge_timeline salishforge-memforge-16e2f15/src/mcp.ts :88
  • memforge_entities salishforge-memforge-16e2f15/src/mcp.ts :103
  • memforge_graph salishforge-memforge-16e2f15/src/mcp.ts :117
  • memforge_reflect salishforge-memforge-16e2f15/src/mcp.ts :130
  • memforge_reflections salishforge-memforge-16e2f15/src/mcp.ts :142
  • memforge_consolidate salishforge-memforge-16e2f15/src/mcp.ts :154
  • memforge_procedures salishforge-memforge-16e2f15/src/mcp.ts :167
  • memforge_sleep salishforge-memforge-16e2f15/src/mcp.ts :180
  • memforge_health salishforge-memforge-16e2f15/src/mcp.ts :192
  • memforge_stats salishforge-memforge-16e2f15/src/mcp.ts :203
  • memforge_feedback salishforge-memforge-16e2f15/src/mcp.ts :215
  • memforge_meta_reflect salishforge-memforge-16e2f15/src/mcp.ts :228
  • memforge_dedup_entities salishforge-memforge-16e2f15/src/mcp.ts :240
  • memforge_active_recall salishforge-memforge-16e2f15/src/mcp.ts :252
  • memforge_cold_search salishforge-memforge-16e2f15/src/mcp.ts :265
  • memforge_cold_restore salishforge-memforge-16e2f15/src/mcp.ts :283
  • memforge_sleep_advisory salishforge-memforge-16e2f15/src/mcp.ts :296
  • memforge_publish_procedures salishforge-memforge-16e2f15/src/mcp.ts :307
  • memforge_shared_procedures salishforge-memforge-16e2f15/src/mcp.ts :321
  • memforge_expertise salishforge-memforge-16e2f15/src/mcp.ts :334
  • memforge_declare_role salishforge-memforge-16e2f15/src/mcp.ts :347
  • memforge_roles salishforge-memforge-16e2f15/src/mcp.ts :361
  • memforge_detect_roles salishforge-memforge-16e2f15/src/mcp.ts :372
  • memforge_set_validity salishforge-memforge-16e2f15/src/mcp.ts :383
  • memforge_record_procedure_outcome salishforge-memforge-16e2f15/src/mcp.ts :396
  • memforge_drift salishforge-memforge-16e2f15/src/mcp.ts :409
  • memforge_deprecate_namespace salishforge-memforge-16e2f15/src/mcp.ts :420
  • memforge_undeprecate_namespace salishforge-memforge-16e2f15/src/mcp.ts :433
  • memforge_list_deprecated_namespaces salishforge-memforge-16e2f15/src/mcp.ts :445
  • memforge_dreams_create salishforge-memforge-16e2f15/src/mcp.ts :456
  • memforge_dreams_status salishforge-memforge-16e2f15/src/mcp.ts :476
  • memforge_dreams_list salishforge-memforge-16e2f15/src/mcp.ts :488
  • memforge_dreams_cancel salishforge-memforge-16e2f15/src/mcp.ts :503
  • memforge_anthropic_push salishforge-memforge-16e2f15/src/mcp.ts :515

declared dependencies 17

  • express@^5.2.1
  • express-rate-limit@^8.3.2
  • pg@^8.13.3
  • pino@^10.3.1
  • prom-client@^15.1.3
  • redis@^6.1.0
  • zod@^4.3.6
  • @types/express@^5.0.6
  • @types/node@^26.1.1
  • @types/pg@^8.20.0
  • @types/pino@^7.0.5
  • @typescript-eslint/eslint-plugin@^8.58.0
  • @typescript-eslint/parser@^8.58.0
  • eslint@^10.2.1
  • tsx@^4.19.2
  • typescript@~6.0.3
  • @huggingface/transformers@^4.2.0