Stash
Memory server
First committed by alash3al
Published in alash3al/stash. Publisher page
772 GitHub stars
What it is
Stash — persistent memory layer for AI agents. Episodes, facts, and working context stored in Postgres. MCP server included. Self-hosted, single binary, no cloud required.
AutoGineer overview, from the brain’s own files
Stash functions as a cognitive middleware layer that bridges the gap between stateless LLMs and persistent knowledge requirements. By utilizing a Postgres database with pgvector, it captures raw agent interactions and processes them through a multi-stage consolidation pipeline. This pipeline transforms episodic data into structured facts, relationships, and patterns, allowing agents to maintain context across sessions. Stash is designed as a single-binary, self-hosted solution that integrates with any MCP-compatible agent, effectively eliminating the need for agents to restart their learning process with every new conversation.
How it works
Memory model: Hybrid
AutoGineer overview, from the brain’s own files
Stash operates as an MCP server that connects to your AI agent. It uses a Postgres database to store information. The system includes a background consolidation pipeline that processes new data in nine stages, converting raw observations into structured knowledge like facts, causal links, and goal tracking. It supports local embedding and reasoning models, such as those provided by Ollama, or can be configured with external OpenAI-compatible APIs.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 1 |
| docs | docs | 4 |
| cmd | folder | 15 |
| internal | folder | 49 |
Requirements
Apps: Docker
Runtimes: Go
Databases: PostgreSQL
API keys (by name): STASH_OPENAI_API_KEY
Works with: Claude apps
Set it up
- Not scanned by AutoGineerThe author’s README also describes installing it with Docker Compose. Read its install section: AutoGineer did not scan that path. https://github.com/alash3al/stash/blob/d34ed430c4348ef741ef95146b488aea8616f4fb/README.md#mcp-client-setup
- Not scanned by AutoGineerThe author’s README also describes installing it with Docker Compose. Read its install section: AutoGineer did not scan that path. https://github.com/alash3al/stash/blob/d34ed430c4348ef741ef95146b488aea8616f4fb/README.md#quick-start
- Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/alash3al/stash/blob/d34ed430c4348ef741ef95146b488aea8616f4fb/README.md#quick-start
First committed by alash3al. Published in alash3al/stash. Licence: Apache License 2.0.
Usage
AutoGineer overview, from the brain’s own files
- Providing long-term memory to AI agents
- Consolidating agent conversations into structured facts
- Tracking goals and patterns across multiple sessions
- Enabling local, private AI memory storage
- Integrating memory capabilities into MCP-compatible clients like Cursor or Claude Desktop
- “Remember that my preferred programming language is Go.”
- The agent stores this fact in the Stash memory layer, allowing it to recall this preference in future sessions.
- “What are the key project goals we discussed last week?”
- The agent queries the Stash memory layer to retrieve consolidated goal tracking information from previous interactions.
Documentation by alash3al
Stash
Your AI has amnesia. We fixed it.
Every LLM starts every conversation from zero. Stash gives your agent persistent memory — it remembers, recalls, consolidates, and learns across sessions. No more explaining yourself from scratch.
Open source. Self-hosted. Works with any MCP-compatible agent.
Don't want to self-host? usestash.io is the hosted cloud version — sign in with Google, copy one MCP URL, and you're done. Free to start.
Quick Start
git clone https://github.com/alash3al/stash.git
cd stash
cp .env.example .env # edit with your API key + model
docker compose upThat's it. Postgres + pgvector, migrations, MCP server with background consolidation — all in one command.
Next: Getting Started guide — connect your MCP client, run init / remember / recall, and verify everything works.
Fully local (no cloud API): Ollama setup guide — host Ollama + Docker Compose, private embeddings and reasoner.
Atlas Cloud
Atlas Cloud is a full-modal AI inference platform that gives developers a single AI API to access video generation, image generation, and LLM APIs. Instead of managing multiple vendor integrations, you connect once and get unified access to 300+ curated models across all modalities.
Check out Atlas Cloud's coding plan promotion: https://www.atlascloud.ai/console/coding-plan
Stash already supports Atlas Cloud through its OpenAI-compatible API. Set your .env like this:
STASH_OPENAI_API_KEY=your-atlas-cloud-api-key
STASH_OPENAI_BASE_URL=https://api.atlascloud.ai/v1
STASH_EMBEDDING_MODEL=text-embedding-3-small
STASH_REASONER_MODEL=deepseek-ai/DeepSeek-V3-0324
STASH_VECTOR_DIM=1536Atlas Cloud works well here because Stash only needs:
an embeddings model for vectorization
a chat-capable reasoning model for consolidation
an OpenAI-compatible base URL and API key
See Getting Started for a fuller configuration checklist.
MCP Client Setup
After docker compose up, Stash exposes an MCP server over SSE at:
http://localhost:8080/ssePoint any MCP-compatible client at that URL. Example configs:
Cursor — ~/.cursor/mcp.json
{
"mcpServers": {
"stash": {
"url": "http://localhost:8080/sse"
}
}
}Claude Desktop — claude_desktop_config.json
{
"mcpServers": {
"stash": {
"url": "http://localhost:8080/sse"
}
}
}OpenCode — ~/.config/opencode/config.json
{
"mcp": {
"stash": {
"type": "remote",
"url": "http://localhost:8080/sse",
"enabled": true
}
}
}Windsurf — ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"stash": {
"url": "http://localhost:8080/sse"
}
}
}Works with any agent that supports MCP over SSE — Claude Desktop, Cursor, Windsurf, Cline, Continue, OpenAI Agents, Ollama, OpenRouter, Atlas Cloud-backed setups, and more.
What It Does
Stash is a cognitive layer between your AI agent and the world. Episodes become facts. Facts become relationships. Relationships become patterns. Patterns become wisdom.
A 9-stage consolidation pipeline turns raw observations into structured knowledge — facts, relationships, causal links, patterns, contradictions, goal tracking, failure patterns, and hypothesis verification. Each stage only processes new data since the last run.
Stash Cloud (Beta — Free)
A hosted, multi-tenant version of Stash is available at usestash.io and is currently free while in beta.
The cloud version is written from scratch — it shares no code with this repository. It is designed from the ground up for scalability, multi-tenancy, and long-term sustainability as a product. Feature sets differ in both directions: some things available here aren't in the cloud, and vice versa.
Learn More
License
Apache 2.0
docs/GETTING_STARTED.md
Getting Started with Stash
You ran docker compose up. Here's what to do next.
1. Verify Stash is running
docker compose ps
docker compose logs stash | tail -20You should see the MCP server listening on port 8080. The SSE endpoint is:
http://localhost:8080/sseQuick check (expects HTTP 200 or SSE handshake):
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8080/sse2. Connect your MCP client
Point any MCP-over-SSE client at http://localhost:8080/sse.
Cursor — create or edit ~/.cursor/mcp.json:
{
"mcpServers": {
"stash": {
"url": "http://localhost:8080/sse"
}
}
}Restart Cursor (or reload MCP). Stash should appear in your MCP tool list.
See README MCP Client Setup for Claude Desktop, Windsurf, and OpenCode configs.
3. First session workflow
Once connected, ask your agent to use Stash tools in this order:
| Step | MCP tool | What it does |
|---|---|---|
| 1 | init | Creates /self namespace scaffold (capabilities, limits, preferences) |
| 2 | remember | Store an episode or fact ("User prefers Python", "Project uses Postgres") |
| 3 | recall | Semantic search over what you stored |
| 4 | consolidate | Run the pipeline that turns episodes into structured facts |
Example prompts to your agent:
"Call Stash
initto set up memory namespaces.""Use Stash
rememberto store: this project uses Stash on port 8080 with pgvector.""Use Stash
recallto find what you know about this project's stack.""Run Stash
consolidateto process recent episodes into facts."
4. Background consolidation
When started with mcp serve --with-consolidation (the Docker Compose default), Stash consolidates in the background. You can also trigger manually via the consolidate MCP tool or CLI:
docker compose exec stash /stash consolidate run5. Configuration checklist
If tools fail, check .env:
| Variable | Purpose |
|---|---|
STASH_OPENAI_API_KEY | Embeddings + reasoner (OpenAI, OpenRouter, or compatible) |
STASH_OPENAI_BASE_URL | API base URL |
STASH_EMBEDDING_MODEL | Must match STASH_VECTOR_DIM (1536 for text-embedding-3-small) |
STASH_REASONER_MODEL | Model used during consolidation |
Running fully local? See LOCAL_OLLAMA.md — Ollama on the host, no cloud API key.
Using Atlas Cloud? Stash already supports it through the OpenAI-compatible API:
STASH_OPENAI_API_KEY=your-atlas-cloud-api-key
STASH_OPENAI_BASE_URL=https://api.atlascloud.ai/v1
STASH_EMBEDDING_MODEL=text-embedding-3-small
STASH_REASONER_MODEL=deepseek-ai/DeepSeek-V3-0324
STASH_VECTOR_DIM=1536Atlas Cloud docs: https://www.atlascloud.ai/docs
Troubleshooting
MCP client can't connect
Confirm
docker compose upfinished and port 8080 is not in use elsewhere.Use
http://localhost:8080/sse(nothttps) for local Docker.
Empty recall results
Run
initfirst, thenremember, thenrecall.Embeddings require a valid API key in
.env.
Consolidation does nothing
Needs episodes via
rememberfirst.Check logs:
docker compose logs stash.
Provider returns auth or model errors
Confirm
STASH_OPENAI_BASE_URLpoints to the correct provider endpoint.Confirm the embedding and reasoner model names match what your provider exposes.
Atlas Cloud users should use
https://api.atlascloud.ai/v1and a valid API key.
Next steps
Explore namespaces:
list_namespaces,create_namespaceTrack goals and failures:
create_goal,create_failureFull tool list: see the docs site MCP section
78 files · 73 not served here
- .env.example (not served here)
- .github/workflows/release.yml (not served here)
- .gitignore (not served here)
- ATTRIBUTION.md
- Dockerfile (not served here)
- LICENSE
- README.md
- cmd/cli/causal.go (not served here)
- cmd/cli/cli_env.go (not served here)
- cmd/cli/commands.go (not served here)
- cmd/cli/consolidate.go (not served here)
- cmd/cli/context.go (not served here)
- cmd/cli/contradiction.go (not served here)
- cmd/cli/failure.go (not served here)
- cmd/cli/goal.go (not served here)
- cmd/cli/hypothesis.go (not served here)
- cmd/cli/main.go (not served here)
- cmd/cli/mcp.go (not served here)
- cmd/cli/mcp_prompts.tmpl (not served here)
- cmd/cli/namespace.go (not served here)
- cmd/cli/serve_all.go (not served here)
- cmd/cli/server.go (not served here)
- docker-compose.yml (not served here)
- docs/GETTING_STARTED.md
- docs/LOCAL_OLLAMA.md
- docs/index.html (not served here)
- docs/og-image.png (not served here)
- go.mod (not served here)
- go.sum (not served here)
- internal/bootstrap/bootstrap.go (not served here)
- internal/brain/brain.go (not served here)
- internal/brain/brain_test.go (not served here)
- internal/brain/causal.go (not served here)
- internal/brain/consolidate.go (not served here)
- internal/brain/consolidate_failure.go (not served here)
- internal/brain/consolidate_goal.go (not served here)
- internal/brain/consolidate_hypothesis.go (not served here)
- internal/brain/context.go (not served here)
- internal/brain/contradiction.go (not served here)
- internal/brain/decay.go (not served here)
- internal/brain/episode.go (not served here)
- internal/brain/fact.go (not served here)
- internal/brain/failure.go (not served here)
- internal/brain/goal.go (not served here)
- internal/brain/hypothesis.go (not served here)
- internal/brain/namespace.go (not served here)
- internal/brain/recall.go (not served here)
- internal/config/config.go (not served here)
- internal/db/db.go (not served here)
- internal/db/migrations/00001_enable_vector.sql (not served here)
- internal/db/migrations/00002_create_namespaces.sql (not served here)
- internal/db/migrations/00004_create_episodes.sql (not served here)
- internal/db/migrations/00005_create_facts.sql (not served here)
- internal/db/migrations/00006_create_fact_sources.sql (not served here)
- internal/db/migrations/00007_create_relationships.sql (not served here)
- internal/db/migrations/00008_create_patterns.sql (not served here)
- internal/db/migrations/00009_create_contexts.sql (not served here)
- internal/db/migrations/00010_create_consolidation_progress.sql (not served here)
- internal/db/migrations/00011_create_settings.sql (not served here)
- internal/db/migrations/00012_create_embedding_cache.sql (not served here)
- internal/db/migrations/00013_add_fact_structured_fields.sql (not served here)
- internal/db/migrations/00014_create_contradictions.sql (not served here)
- internal/db/migrations/00015_add_decay_checkpoint.sql (not served here)
- internal/db/migrations/00016_create_causal_links.sql (not served here)
- internal/db/migrations/00017_create_hypotheses.sql (not served here)
- internal/db/migrations/00018_create_goals.sql (not served here)
- internal/db/migrations/00019_create_failures.sql (not served here)
- internal/db/migrations/00020_add_consolidation_checkpoints.sql (not served here)
- internal/embedder/cache.go (not served here)
- internal/embedder/embedder.go (not served here)
- internal/embedder/openai.go (not served here)
- internal/models/models.go (not served here)
- internal/observability/metrics.go (not served here)
- internal/queries/consolidate.sql.tmpl (not served here)
- internal/queries/queries.go (not served here)
- internal/queries/recall.sql.tmpl (not served here)
- internal/reasoner/openai.go (not served here)
- internal/reasoner/reasoner.go (not served here)
Advantages
- Enables persistent memory across sessions, preventing agents from starting from zero. evidence: README.md
- Supports fully local operation with Ollama for private data handling. evidence: README.md
Limitations
- Requires self-hosting infrastructure including Postgres and Docker. evidence: README.md
Security
Risk level: No risk found
This brain runs
MCP servers (3)
README.md(stash):http://localhost:8080/sse· uses the networkREADME.md(stash):http://localhost:8080/sse· uses the networkREADME.md(stash):http://localhost:8080/sse· uses the network
Attribution and licence
- First committed by
alash3al
- Publisher
- Mohammed Al Ashaal (Community)
- Source
- alash3al/stash · commit d34ed43
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- alash3al, rudi193-cmd, ali-h-abbas, lucaszhu-hue, truffle-dev
AutoGineer is not affiliated with or endorsed by alash3al.
Install from source
73 of its files are not served here, so there is no ZIP. alash3al/stash at d34ed43