Neuroscience-inspired memory for AI agents — sleep cycles that rewrite and strengthen knowledge over time. TypeScript, PostgreSQL, MCP.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
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
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
- agent-rules salishforge-memforge-16e2f15/CLAUDE.md
danger signals2
- suspicious endpoint 169.254.169.254 (cloud metadata) salishforge-memforge-16e2f15/tests/security.test.ts :253
() => validateProviderUrl('http://169.254.169.254/latest', 'test'), - committed secret Anthropic key salishforge-memforge-16e2f15/tests/http-api.test.ts :435
sk-ant…(37 chars, redacted)
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