SAMEBLOCK
Your AI forgets everything between sessions. SAME fixes that. Local-first, no API keys, single binary.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](LICENSE) [](https://go.dev) [](https://github.com/sgx-labs/statelessagent/releases) [](https://github.com/sgx-labs/statelessagent) [](#mcp-server) [](https://discord.gg/9KfTkcGs7g)
Your AI forgets everything between sessions. SAME fixes that.
SAME gives every AI coding tool persistent memory. Claude Code, Cursor, Windsurf, Codex CLI, Gemini CLI — one memory layer that works everywhere. It indexes your markdown notes, surfaces relevant context automatically, and records decisions and handoffs so your AI picks up where it left off.
One binary. Fully local. No cloud. No telemetry. Mac, Linux, Windows, Raspberry Pi.
Install
# macOS / Linux curl -fsSL https://statelessagent.com/install.sh | bash # Windows (PowerShell) irm https://statelessagent.com/install.ps1 | iex
Or via npm (all platforms): npm install -g @sgx-labs/same
Installed via npm? Update with npx same@latest or npm update -g @sgx-labs/same.
See It Work
same demo
Indexing 5 sample notes... Searching: "authentication decision" 1. decisions/auth-strategy.md (score: 0.94) "We chose JWT with refresh tokens for..." 2. notes/api-security.md (score: 0.87) "Auth middleware validates tokens at..." Asking: "what did we decide about authentication?" Based on your notes, you decided to use JWT with refresh tokens (decisions/auth-strategy.md). The API middleware validates tokens at the g
0d5870d92624OBSERVED · 2026-10-10Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add same -- npx -y @sgx-labs/[email protected] mcp
Trust audit
BLOCKgrade F · trust 42/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (6 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- found
Findings (25)
echo " Install: sudo apt-get install build-essential"
echo " Install: sudo dnf install gcc"
if sudo apt-get install -y nodejs npm 2>/dev/null; then
if sudo dnf install -y nodejs 2>/dev/null; then
- **Fixed case-insensitive tag matching for `IMPORTANT`** — the `IMPORTANT` tag was listed in uppercase but compared against lowercased text, so `<IMPORTANT>` injection payloads were not neutralized.
SAME_BIN = shutil.which("same") or "/usr/local/bin/same"local ollama_url="${SAME_SMOKE_OLLAMA_URL:-${OLLAMA_URL:-http://127.0.0.1:11434}}"local ollama_url="${SAME_SMOKE_OLLAMA_URL:-${OLLAMA_URL:-http://127.0.0.1:11434}}"if curl -fsS --max-time 1 "http://127.0.0.1:${port}/api/status" >/dev/null 2>&1; then"sk-ant-abc123456789012345678",
line := "sk-ant-abc12345678901234567890 // test value"
{"anthropic_key", "sk-ant-api03-abcdefghijklmnopqrstuvwxyz", true},{"anthropic_key", "mixed_case_prefix", "Sk-ant-abcdefghijklmnopqrstuvwxyz1234"},content := "Here is my API key: sk-ant-api03-abcdefghijklmnopqrstuvwxyz\nAnd a Stripe key: sk_test_ABCDEFGHIJKLMNOPQRSTUVWXYZab"
results := scanLine("aws_key = AKIAIOSFODNN7EXAMPL0", "deploy.sh", patterns)results := scanLine(`api_key = "sk-abcdefghijklmnopqrst1234"`, "config.go", patterns)
{"ghp personal access token", "token: ghp_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl", true},{"ghs server token", "ghs_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl", true},"ghp_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl",
{"github_pat_fine", "github_pat_11AAAAAAA0abcdefghijklmnopqrstuvwxyz", true},{"github_pat_fine", "mixed_case_prefix", "GitHub_pat_11AAAAAAA0abcdefghijklmnopqrstuvwxyz"},results := scanLine("-----BEGIN PRIVATE KEY-----", "cert.pem", patterns){"xoxb bot token", "xoxb-1234567890-abcdefghij", true},{"xoxp user token", "xoxp-1234567890-abcdefghij", true},{"slack_bot_token", "xoxb-1234567890-abcdefghij", true},Gates applied: no_behavioural_pass.
0d5870d92624full audit observations/trust-audit/mcp-server/sgx-labs__same.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-10 | 0d5870d92624 | BLOCK | F | 42 | first audit |
Questions
What is the SAME MCP server?
Your AI forgets everything between sessions. SAME fixes that. Local-first, no API keys, single binary.
Is SAME safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (42/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does SAME need?
No credential environment variables were found in its source, so it appears to need none.
How does SAME run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @sgx-labs/same at 0.12.5.
How current is this page?
The grade is for one exact copy of the source (0d5870d92624), read on 2026-10-10. The repository is watched and re-audited when it changes.