Short-term memory proxy gateway with proactive memory surfacing for AI agents
Drift inferred · capture-to-capture
- HIGH code analysis flagged committed secret ×2 in memtomem/memtomem-stm
- HIGH code analysis flagged dynamic code execution ×2 in memtomem/memtomem-stm
transport stdio · streamable-http counts 4 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
stm_compression_feedback
-
stm_proxy_read_more
-
stm_proxy_select_chunks
-
stm_surfacing_feedback
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 1e839cd · analyzer v28 · 1h ago
skills & prompt files 1
- agent-rules memtomem-memtomem-stm-1e839cd/CLAUDE.md
danger signals2
- committed secret Anthropic key memtomem-memtomem-stm-1e839cd/tests/test_privacy.py :281
sk-ant…(47 chars, redacted) - committed secret GitLab token memtomem-memtomem-stm-1e839cd/tests/test_privacy.py :284
glpat-…(38 chars, redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 278
filesystem 40
- fs memtomem-memtomem-stm-1e839cd/notebooks/_helpers.py :14
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/_defaults.py :9
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/_write_lock.py :15
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/config_cmd.py :22
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/hook_hosts.py :74
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/mms_host.py :59
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/mms_import.py :58
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/mms_project.py :15
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/proxy.py :13
import shutil - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/selection_cmd.py :5
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/config.py :7
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/daemon/discovery.py :50
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/daemon/locking.py :39
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/logging_setup.py :25
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/mms/detect.py :33
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/mms/import_hosts.py :35
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/mms/state.py :30
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/cache.py :11
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/compression_feedback.py :13
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/compression_feedback_store.py :20
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/config.py :13
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/manager.py :20
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/metrics_store.py :9
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/pending_store.py :11
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/progressive_reads.py :12
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/progressive_reads_store.py :22
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/protocols.py :6
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/selection_eval.py :18
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/selection_log.py :78
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/toolgraph_bundle.py :18
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/toolgraph_cache.py :32
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/server.py :919
"open": "open (failing)", - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/surfacing/config.py :5
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/surfacing/engine.py :201
# restart. Runs after the store is known to be open (seed block above - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/surfacing/feedback.py :6
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/surfacing/feedback_store.py :11
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/surfacing/mcp_client.py :13
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/utils/fileio.py :14
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/utils/locking.py :14
from pathlib import Path - fs memtomem-memtomem-stm-1e839cd/src/memtomem_stm/utils/sqlite_private.py :22
from pathlib import Path
shell / exec 3
- shell memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/proxy.py :14
import subprocess - shell memtomem-memtomem-stm-1e839cd/src/memtomem_stm/daemon/server.py :41
import subprocess - shell memtomem-memtomem-stm-1e839cd/src/memtomem_stm/daemon/spawn.py :18
import subprocess
network 8
- net memtomem-memtomem-stm-1e839cd/src/memtomem_stm/cli/proxy.py :25
from urllib.parse import unquote, urlsplit - net memtomem-memtomem-stm-1e839cd/src/memtomem_stm/config.py :244
from urllib.parse import urlsplit, urlunsplit - net memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/compression.py :20
import httpx - net memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/config.py :10
from urllib.parse import urlparse - net memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/extraction.py :11
import httpx - net memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/relevance.py :206
import httpx - net memtomem-memtomem-stm-1e839cd/src/memtomem_stm/surfacing/mcp_client.py :16
import httpx - net memtomem-memtomem-stm-1e839cd/src/memtomem_stm/utils/redact.py :7
from urllib.parse import urlsplit, urlunsplit
secrets 1
- secrets memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/relevance.py :157
api_key = os.environ.get("OPENAI_API_KEY", "").strip()
database 9
- db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/cache.py :7
import sqlite3 - db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/compression_feedback_store.py :17
import sqlite3 - db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/manager.py :11
import sqlite3 - db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/metrics_store.py :6
import sqlite3 - db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/pending_store.py :7
import sqlite3 - db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/progressive_reads_store.py :19
import sqlite3 - db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/proxy/toolgraph_cache.py :29
import sqlite3 - db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/surfacing/feedback_store.py :8
import sqlite3 - db memtomem-memtomem-stm-1e839cd/src/memtomem_stm/utils/sqlite_tuning.py :16
import sqlite3
tool registrations 4
- stm_proxy_select_chunks memtomem-memtomem-stm-1e839cd/src/memtomem_stm/server.py :801
- stm_proxy_read_more memtomem-memtomem-stm-1e839cd/src/memtomem_stm/server.py :825
- stm_surfacing_feedback memtomem-memtomem-stm-1e839cd/src/memtomem_stm/server.py :1266
- stm_compression_feedback memtomem-memtomem-stm-1e839cd/src/memtomem_stm/server.py :1911
declared dependencies 13
- cryptography@>=48.0.1
- idna@>=3.15
- pyjwt@>=2.13.0
- python-multipart@>=0.0.31
- starlette@>=1.3.1
- langfuse@>=4.0
- urllib3@>=2.7.0
- opentelemetry-sdk@>=1.30
- opentelemetry-exporter-otlp-proto-http@>=1.30
- langchain@>=1.0
- langchain-mcp-adapters@>=0.1
- langchain-anthropic@>=0.3
- langsmith@>=0.8.18
transport_posture 1
- binds all interfaces (0.0.0.0) memtomem-memtomem-stm-1e839cd/tests/test_config_constraints.py :646
cfg = DaemonConfig(host="0.0.0.0", allow_non_loopback=True)