Squish Memory
Squish - Memory Infrastructure for AI Agents
SDK, MCP server, and CLI for persistent agent memory. Local-first. Zero dependencies.
Squish is memory infrastructure for AI agents. Use the TypeScript SDK to build memory-powered apps, the MCP server to plug into any compatible agent, or the CLI for quick operations. Local-first with optional Cloud sync.
Get Started in 30 Seconds
npm install -g squish-memory && squish install --allThat is it. Squish installs the CLI, starts the MCP server, and configures hooks for every coding agent it finds on your machine. No API keys. No config files. No Docker.
Related MCP server: Tages
Build on Squish
The @squish/sdk is the recommended way to build memory-powered AI applications:
import { SquishClient } from '@squish/sdk';
const client = new SquishClient({ dataDir: './memory' });
await client.remember('key decision', { type: 'decision' });
const context = await client.getContext();SDK Documentation | API Reference
Pick Your Agent
Squish works with any MCP-compatible agent. Choose yours for a tailored quick start:
Claude Code
npm install -g squish-memory && squish install --allSquish detects Claude Code and adds plugin hooks automatically. Your next session starts with full memory context. To verify:
squish context # See what your agent remembers
squish status --stats # Check memory healthCodex CLI (OpenAI)
Add Squish to your Codex MCP config:
{
"mcpServers": {
"squish": {
"command": "squish-mcp",
"args": ["--http", "--port", "8767"]
}
}
}Codex now has persistent memory across sessions. Ask it "what did we decide about the database?" and it will recall your past decisions.
Cursor / Windsurf / Cline
Add the same MCP server block to your editor's MCP settings. One memory server, shared across all your editors and CLI agents.
OpenCode
squish install --allOpenCode gets both MCP tools and auto-capture hooks. Decisions, constraints, and preferences are captured as you work.
Any MCP Client
{
"mcpServers": {
"squish": {
"command": "squish-mcp",
"args": ["--http", "--port", "8767"],
"env": {
"SQUISH_DB_PATH": "./squish-data"
}
}
}
}What Just Happened
After install, Squish runs in the background. Here is what it does:
Captures -- As you work, Squish watches for decisions, constraints, preferences, and context. It filters noise and stores what matters.
Ingests -- Drop files into the inbox directory. Images, audio, video, and documents are automatically extracted, described, and stored as searchable memories.
Stores -- Memories go into a local SQLite database with AES-256-GCM encryption. Nothing leaves your machine.
Retrieves -- When your agent starts a new session, Squish injects only the relevant memories (50-200 tokens, not 2,000).
Decays -- Old, low-value memories fade automatically. Your agent stays focused on what matters now.
squish remember "We chose PostgreSQL for the main datastore" --type decision
squish recall "database decisions"
squish sessions search "postgres migration"Works with Every Agent
Agent | Integration | Auto-Capture |
Claude Code | MCP server + plugin | Yes |
Codex CLI | MCP server | No |
Cursor | MCP server | No |
GitHub Copilot | MCP server | No |
Gemini CLI | MCP server | No |
OpenCode | MCP server + hooks | Yes |
Cline | MCP server | No |
Goose | MCP server | No |
Windsurf | MCP server | No |
Roo Code | MCP server | No |
Claude Desktop | MCP server | No |
Aider | MCP server | No |
One memory server. Shared across all of them.
The SDK (@squish/sdk) works with any TypeScript or JavaScript environment -- not just coding agents. Build memory into web apps, CLI tools, backend services, or custom agent frameworks.
Why Squish
Most memory tools need a second LLM for embeddings and retrieval. That means extra API costs, latency, and infrastructure you have to manage.
Squish uses local embeddings by default. Zero LLM dependency. 1-5ms latency. $0 runtime cost in local mode.
Comparison
Feature | Squish | CLAUDE.md | agentmemory | mem0 | Letta | Zep |
SDK available | Yes (TypeScript) | No | No | No | No | No |
Auto-capture | Yes (hooks) | Manual | Yes (12 hooks) | Manual API | No | No |
Local embeddings | Yes (default) | N/A | Yes | No (cloud) | No | No |
External DB required | No (SQLite) | No | Yes (iii-engine) | Yes (Qdrant) | Yes (Postgres) | Yes (Postgres) |
MCP tools | 15 | 0 | 53 | 9 | 0 | 0 |
Knowledge graph | Yes | No | Yes | No | Yes | Yes |
Cross-agent sync | Yes (Cloud) | No | No | API-based | API-based | API-based |
Price | Free local / $9/mo cloud | Free | Free | $249/mo Pro | Free (self-hosted) | Free (self-hosted) |
Setup time | 30 seconds | 5 minutes | 15 minutes | 30 minutes | 30+ minutes | 30+ minutes |
Data ownership | Full (local SQLite) | Git repo | External DB | Cloud vendor | External DB | External DB |
What Makes Squish Different
Squish is the only tool that combines all of these in a single package:
SDK-first architecture --
@squish/sdkfor building memory-powered apps in any TypeScript/JavaScript environmentLocal-first by default -- SQLite storage, TF-IDF embeddings, zero API keys needed
MCP-native -- Works with every MCP-compatible agent out of the box
Knowledge graph -- Reinforced relationships between memories, not just flat storage
Decay system -- Old, low-value memories fade automatically so agents stay focused
Hybrid search -- BM25 keyword + semantic similarity with RRF fusion
Multimodal ingestion -- 27+ file types: images, audio, video, documents
Zero external dependencies -- No Qdrant, no Postgres, no vector DB required in local mode
Core Concepts
Concept | What It Is |
Recall | Durable memory -- decisions, preferences, constraints |
Sessions | Evidence from past agent runs |
Pinned | Stable facts that do not decay |
Beliefs | Passive model of user/project |
Strategies | Active operating rules |
Media Memories | Ingested images, audio, video, and documents with extracted text |
LLM Consolidation | Cross-connection finding via LLM-powered knowledge analysis |
Decay | Stale weak traces fade automatically |
Graph | Reinforced relationships from usage |
Features
Memory Intelligence
Auto-captures decisions, constraints, and preferences as you work
Restores relevant context when an agent restarts
Handles contradictions and temporal facts with expiration
Graph-boosted retrieval connects related memories across sessions
Contradiction detection flags conflicting information
Temporal reasoning tracks when facts were true vs. now
Confidence scoring adjusts memory relevance over time
Decay system automatically ages low-value memories
Multimodal Memory
Ingest images, audio, video, and documents into searchable memories
Automatic text extraction via OCR, speech-to-text, and document parsing
27+ supported file types: JPEG, PNG, GIF, WebP, TIFF, HEIC, MP3, WAV, OGG, FLAC, M4A, MP4, WebM, AVI, MOV, MKV, PDF, DOCX, XLSX, PPTX, TXT, MD, CSV, JSON, XML, YAML, HTML, RTF
File watcher for automatic inbox monitoring and ingestion
LLM-generated descriptions for each ingested file
Cross-connection finding via LLM consolidation across memory clusters
Session Search
Search previous Claude Code, Codex, and OpenCode sessions
Find related sessions by project path or file overlap
Inspect past decisions, errors, and commands as evidence
Separate from long-term memory -- raw session history, not distilled facts
Interfaces
CLI:
squish remember,recall,forget,link,context,stats(viastatus),clean,pin,sessions,doctor,cloudMCP Server: 15 tools for any MCP client -- remember, recall, forget, link, context, stats, inspect, skill, loadout, extract, feedback, places, sessions, tier, dedup (a 16th,
squish_maintenance, appears whenSQUISH_ENABLE_MAINTENANCE_TOOLS=true)Web UI: Local dashboard at
localhost:37777for visualizing memoriesCloud Dashboard: Paid analytics and management at squishplugin.dev
Storage
SQLite (local, default) or Squish Cloud team workspaces
Hybrid retrieval: keyword + semantic similarity with RRF fusion
AES-256-GCM encryption for sensitive memories
Places routing: organize memories by project, feature, or context
Full-text search with BM25 ranking
Vector search with TF-IDF embeddings (768-dimensional)
Self-Hosting
Squish is local-first by design: the default mode IS self-hosted. Everything runs on your machine, no account required.
Storage: single encrypted SQLite file (AES-256-GCM for sensitive memories) at
SQUISH_DATA_DIR(default~/.squish)Embeddings: local TF-IDF by default -- zero API keys, works fully offline. Optional providers (
openai,ollama,google) if you want themLLM: optional and off by default (
SQUISH_LLM_ENABLED=false) -- every core feature works without oneTelemetry: none. Nothing leaves your machine in local mode
License: MIT. Fork it, embed it, ship it
Point SQUISH_DATA_DIR at any volume or backup target and you are done. See Environment Flags for tuning knobs.
Environment Flags
Every flag ships with a safe default; nothing here is required for local use. See .env.example for the full annotated list.
Flag | Default | What it does |
|
| Where the SQLite DB and assets live |
|
|
|
| bundled MiniLM | Set |
|
| Candidate selection: |
|
| Include belief records in hybrid retrieval |
| unset | Recall-confidence floor; below it recall returns a |
|
| Serve v2 composite ranking ( |
Precision stack | see docs/v2-scoring.md |
|
|
| Geometry-aware consolidation guards (theta-prime split/consolidate decisions) |
| off | When |
|
| Enforce visibility rules on memory reads |
|
| Enables optional LLM features incl. cross-connection consolidation |
Feature flags | various |
|
Architecture
Three-Layer Memory Model
Connectors
Squish connects to your existing tools and ingests context automatically:
Connector | What It Ingests |
Google Drive | Documents, sheets, slides, and files |
GitHub | Issues, PRs, discussions, code context, and repo metadata |
Slack | Messages, threads, channel context, and decisions |
Notion | Pages, databases, docs, and wikis |
Connectors are available on Cloud tiers. Install with:
squish connect google-drive
squish connect github
squish connect slack
squish connect notionSquish Cloud
Persistent memory across ChatGPT, Claude Desktop, Claude Code, and local agents. One account, synchronized everywhere.
Cloud features: OAuth 2.1 + PKCE login, cross-platform sync, team workspaces, admin dashboard, priority support.
Pricing
Tier | Price | Features |
Local | Free forever | SQLite, 7 MCP tools, offline, knowledge graph, multimodal ingestion |
Cloud Solo | $9/mo | Everything in Local + cloud sync, 1 connector, 10K requests/mo |
Cloud Pro | $29/mo | Cross-tool sync, 3 connectors, 50K requests/mo, shared workspaces |
Cloud Team | $99/mo | Unlimited seats, all connectors, 200K requests/mo, RBAC, audit logs |
Sign up at squishplugin.dev -- 30 seconds, no credit card needed.
Benchmarks
Squish is tested against real-world memory retrieval tasks and synthetic benchmarks.
Metric | Result | Notes |
Core Tests | 9/9 passed (100%) | All memory operations |
LoCoMo Memory | 65% | 100 REAL questions from locomo10.json |
Throughput | 39 ops/sec | With local embeddings |
Total Time | 230ms | For 9 core tests |
Package Size | 674 KB | Lightweight footprint |
Latency (embed) | 6.6ms | Local TF-IDF embeddings |
Latency (search) | 6.1ms | Hybrid retrieval |
Full benchmark details: docs/BENCHMARK.md
Documentation
Document | Description |
All CLI commands and options | |
15 MCP tools and configuration | |
System design and data flow | |
How memories age and lose relevance | |
Importance and relevance scoring | |
Environment variables and settings | |
Hook system and agent integration | |
Getting started guide | |
Squish vs other memory tools | |
How to contribute | |
Changelog and version history |
FAQ
What is Squish?
Squish is memory infrastructure for AI agents. It provides a TypeScript SDK, an MCP server, and a CLI for persistent agent memory. Use the SDK to build memory-powered apps, plug the MCP server into any compatible agent, or use the CLI for quick operations. Local-first with optional Cloud sync. Think of it as a brain that persists between sessions -- your agents remember decisions, constraints, preferences, and context without you having to re-explain everything.
Does Squish require an API key?
No. Squish works locally by default with zero API keys. It uses local embeddings (TF-IDF) and SQLite storage. You can optionally configure an external LLM for enhanced reasoning, but it is not required. An API key is only needed if you want to use the paid Squish Cloud for cross-device sync.
How does Squish compare to mem0 or agentmemory?
Squish is the only option that works locally with zero external dependencies AND provides a TypeScript SDK. mem0 requires Qdrant (a vector database) and cloud API calls. agentmemory requires iii-engine. Letta and Zep require Postgres. Squish uses SQLite and local embeddings by default. See the full comparison in the Why Squish section above.
Can I use Squish with multiple AI agents?
Yes. Squish works with any MCP-compatible agent. One memory server is shared across Claude Code, Cursor, Codex, Copilot, Gemini CLI, and any other agent that supports MCP. Memories are available to all connected agents. You can also use the SDK directly in any TypeScript/JavaScript environment.
Is my data private with Squish?
Yes. In local mode, all data stays on your machine in an encrypted SQLite database. Nothing is sent to any cloud service. AES-256-GCM encryption protects sensitive memories. Cloud sync is opt-in and additive: data moves over TLS, connector credentials are encrypted at rest with AES-256-GCM, and synced memories live in the cloud database under your account's access controls -- which is exactly why local remains the default and sync stays optional.
What is the difference between recall and sessions?
squish recall searches your long-term memory -- distilled facts, decisions, and preferences that Squish has captured and organized. squish sessions search searches raw past agent runs -- the actual messages, commands, and file changes from previous Claude Code, Codex, OpenCode, or Gemini CLI sessions. Recall gives you what the system decided to remember. Sessions give you the evidence.
Every recall result carries a recall assessment with a verdict: confident (top result is reliable), qualified (usable but treat with care), or no_reliable_memory (nothing trustworthy found -- say so rather than guessing). Feed verdicts back via squish_feedback: confirm, used, or contradict.
Contributing
See docs/CONTRIBUTING.md for guidelines on how to contribute to Squish.
License
MIT -- see LICENSE for details.
Star the Repo
If Squish helps your project, consider starring the repo. It helps other developers find memory tools for their AI agents.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI memory layer — one shared, persistent memory across every AI tool you connect.
Shared memory for coding agents. Stop re-explaining your codebase every session.
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
One memory, every AI: Claude, ChatGPT, Perplexity, Gemini, Cursor, OpenClaw, Hermes, any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI coding assistants like Claude Code, Cursor, and Codex to share chat logs, terminal history, and session context with each other. Eliminates the need to re-explain context when switching between different AI coding tools.2MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI coding agents to maintain persistent, cross-session memory of codebase architecture, naming conventions, and decisions through MCP tools. Eliminates repetitive project re-explanation by automatically injecting stored context into every session with local-first SQLite storage and optional team sharing capabilities.4MIT
- AlicenseAqualityDmaintenanceHybrid semantic + keyword memory across all your projects. Works with Cursor, Claude Code, and your team.111MIT
- AlicenseAqualityCmaintenanceCross-project memory sharing for Claude Code and Cowork. Stop teaching Claude the same thing twice.66MIT