Your agents forget. Squish doesn't.
Your AI agent's memory lies to it. Every memory tool returns an answer — but most return the same confidence regardless of whether the answer is fresh, stale, or contradicted by a newer fact. The agent repeats plausible garbage as fact.
Squish is the only memory runtime in this space that tells your agent how much each recollection deserves to be trusted, and says "I don't know" when nothing clears the bar.
- Calibrated recall confidence — ECE 0.055 on our eval set. When it says 90% confident, it is right about 90% of the time. Not a score. A number your agent can act on.
- Honest abstention — when nothing clears the confidence bar, Squish returns NO CONFIDENT MATCH instead of its best wrong guess. Your agent stops inventing plausible garbage from half-remembered context.
- Temporal validity windows — ask "what frameworks was I using in March?" and you get what was TRUE in March. Not today's setup rewritten into fake history.
- Local-first, open source — one SQLite file you own. No Docker. No API keys. No config files.
- Zero-config install —
npm install -g squish-memory && squish install --all. About 30 seconds, works on day one.
One memory system for every agent. Claude Code -- Codex -- OpenCode -- MCP -- your own agents
npm install -g squish-memory && squish install --allThat is it. CLI, MCP server, and hooks for every coding agent on your machine. No API keys. No config. No Docker.
One package. Three interfaces.
npm install -g squish-memory- squish CLI — remember, recall, search, stats, cloud sync
- squish mcp — MCP server for any MCP-compatible agent
- Desktop — visual memory browser and knowledge graph explorer
That's it. No separate SDK to install, no second package to version, no HTTP client to maintain.
If you need to access Squish from your own JS/TS code:
- Local: import from @squish/core-sdk (internal, workspace-only — not a public SDK)
- Remote: use any MCP-compatible client against
squish mcp --http
MCP is the standardized programmatic interface. There is no @squish/sdk.
Visual memory browser, knowledge graph explorer, and settings. Native installers for Mac, Windows, Linux.
Own this version forever. No subscription.
- Capture -- Squish runs in the background, capturing decisions, constraints, and preferences as you work
- Store -- Memories are stored locally in SQLite with automatic decay scoring
- Recall -- When your agent starts a new session, Squish injects only the relevant context (50-200 tokens)
- Connect -- Works with Claude Code, Cursor, Codex, OpenCode, Windsurf, and any MCP-compatible tool
| Agent | Install |
|---|---|
| Claude Code | npx squish install --claude-code |
| Cursor | npx squish install --cursor |
| Codex | npx squish install --codex |
| OpenCode | npx squish install --opencode |
| All at once | npx squish install --all |
Your AI Tool (Claude Code, Cursor, etc.)
|
squish-mcp (MCP server)
|
squish-core (memory engine)
|
SQLite (.squish/squish.db)
- Local-first: All data stays on your machine
- No account required: Works offline, no cloud dependency
- BYOK: Bring your own API keys for embeddings and inference
- MCP standard: Works with any MCP-compatible tool
squish remember "Use Drizzle ORM, not Prisma"
squish recall "What ORM should I use?"
squish search "database"
squish statsPrepaid credit packs for sync and managed AI services. No subscription.
| Pack | Price | Per Credit |
|---|---|---|
| 10,000 | $5 | $0.0005 |
| 50,000 | $15 | $0.0003 |
| 200,000 | $40 | $0.0002 |
Credits buy: cloud storage, managed embeddings, LLM inference, remote sync.
Squish's HTTP server (squish mcp --http) binds to localhost by default and is intended for local use only. HTTP mode transmits data in plaintext -- do not expose it to the internet without a TLS-terminating reverse proxy (e.g., Nginx, Caddy, Cloudflare Tunnel).
For remote access:
- Set up a reverse proxy with TLS termination in front of the Squish HTTP server.
- Restrict network access to authorized clients only.
- Never bind the Squish HTTP server directly to a public interface.
All local data is stored in SQLite at .squish/squish.db with no encryption at rest. The database file permissions should be restricted on shared systems.
Offline, deterministic benchmarks on a 60-memory corpus. No LLM calls. Reproducible.
| Metric | Score | Threshold |
|---|---|---|
| Recall@5 | 0.935 | 0.85 |
| MRR | 0.904 | 0.82 |
| Hit@1 | 0.870 | 0.78 |
| ECE (calibration) | 0.055 | 0.15 |
By query type:
| Category | n | Recall@5 | MRR | Hit@1 |
|---|---|---|---|---|
| Entity | 9 | 1.000 | 0.944 | 0.889 |
| Temporal | 8 | 1.000 | 1.000 | 1.000 |
| Multi-hop | 4 | 1.000 | 1.000 | 1.000 |
| Procedural | 8 | 0.875 | 0.888 | 0.875 |
| Paraphrase | 9 | 0.889 | 0.889 | 0.889 |
| Negation | 8 | 0.875 | 0.750 | 0.625 |
Resurrection: 5/5 scenarios pass (dormant strengthening, irrelevant decay, accidental retrieval immunity, contradiction handling).
AGPLv3 -- Free to use, modify, and self-host. Commercial license available for proprietary embedding.
See LICENSING.md for details.