Snapshot of mudler/LocalRecall: 972★, Go. :brain: 100% Local Memory layer and Knowledge base for agents with WebUI
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
A lightweight, no-frills RESTful API designed for managing knowledge bases and files stored in vector databases—no GPU, internet, or cloud services required! LocalRecall provides a simple and generic abstraction layer to handle knowledge retrieval, ideal for AI agents and chatbots to manage both long-term and short-term memory seamlessly.
Currently, LocalRecall is batteries included and supports multiple vector database engines:
Chromem: Local file-based vector store (default)
PostgreSQL: Production-ready PostgreSQL with TimescaleDB, pgvector, and pgvectorscale for hybrid search (BM25 + vector similarity)
It can easily integrate with LocalAI, LocalAGI, and other agent frameworks, offering an intuitive web UI for convenient file management, including support for raw text inputs.
📚🆕 Local Stack Family
🆕 LocalAI is now part of a comprehensive suite of AI tools designed to work together:
LocalAI
LocalAI is the free, Open Source OpenAI alternative. LocalAI act as a drop-in replacement REST API that's compatible with OpenAI API specifications for local AI inferencing. Does not require GPU.
LocalAGI
A powerful Local AI agent management platform that serves as a drop-in replacement for OpenAI's Responses API, enhanced with advanced agentic capabilities.
🌟 Features
⚡ RESTful API: Simple and intuitive REST interface for knowledge management.
📡 Fully Local: Operates offline without external cloud dependencies.
🗃️ Memory Management: Ideal for AI-driven applications requiring memory abstraction.
📂 File Support:
✅ Markdown
✅ Plain Text
✅ PDF
⏳ More formats coming soon!
⚙️ Prerequisites
Go 1.16 or higher
Docker (optional, for containerized deployment)
🚧 Quickstart
📥 Clone Repository
git clone https://github.com/mudler/LocalRecall.git
cd LocalRecall
🛠️ Build from Source
go build -o localrecall
▶️ Run Application
./localrecall
Your web UI will be available at http://localhost:8080.
🐳 Docker Deployment
Using Chromem (Default)
Build and run using Docker:
docker build -t localrecall .
docker run -ti -v $PWD/state:/state \
-e COLLECTION_DB_PATH=/state/db \
-e EMBEDDING_MODEL=granite-embedding-107m-multilingual \
-e FILE_ASSETS=/state/assets \
-e OPENAI_API_KEY=sk-1234567890 \
-e OPENAI_BASE_URL=http://localai:8080 \
-p 8080:8080 localrecall
# Or use the images already built by the CI:
docker run -ti -v $PWD/state:/state \
-e COLLECTION_DB_PATH=/state/db \
-e EMBEDDING_MODEL=granite-embedding-107m-multilingual \
-e FILE_ASSETS=/state/assets \
-e OPENAI_API_KEY=sk-1234567890 \
-e OPENAI_BASE_URL=http://localai:8080 \
-p 8080:8080 quay.io/mudler/localrecall
Using PostgreSQL (Recommended for Production)
For production deployments, PostgreSQL provides better performance, scalability, and hybrid search capabilities (combining BM25 keyword search with vector similarity search).
Quick Start with Docker Compose
The easiest way to get started with PostgreSQL is using Docker Compose:
docker compose up -d
This will start:
LocalAI: For embeddings (port 8081)
PostgreSQL: With TimescaleDB, pgvector, and pgvectorscale extensions (port 5432)
LocalRecall: RAG server configured to use PostgreSQL (port 8080)
Hybrid Search: Combines BM25 (keyword) and vector (semantic) search with configurable weights
Advanced Indexing:
GIN indexes for full-text search
BM25 indexes for keyword search
DiskANN/HNSW indexes for vector similarity search
Extensions Included:
pg_textsearch: BM25 keyword search
vectorscale: Advanced vector search with DiskANN
pgvector: Vector similarity search (fallback)
timescaledb: Time-series capabilities
🌍 Environment Variables
LocalRecall uses environment variables to configure its behavior. These variables allow you to customize paths, models, and integration settings without modifying the code.
Variable
Description
COLLECTION_DB_PATH
Path to the vector database directory where collections are stored (for Chromem engine).
DATABASE_URL
PostgreSQL connection string (required for PostgreSQL engine). Format: postgresql://user:pass@host:port/db?sslmode=disable
EMBEDDING_MODEL
Name of the embedding model used for vectorization (e.g., granite-embedding-107m-multilingual).
FILE_ASSETS
Directory path to store and retrieve uploaded file assets.
OPENAI_API_KEY
API key for embedding services (such as LocalAI or OpenAI-compatible APIs).
OPENAI_BASE_URL
Base URL for the embedding model API (commonly http://localai:8080).
LISTENING_ADDRESS
Address the server listens on (default: :8080). Useful for deployments on custom ports or network interfaces.
VECTOR_ENGINE
Vector database engine to use (chromem by default, postgres for PostgreSQL).
MAX_CHUNKING_SIZE
Maximum size (in characters) for breaking down documents into chunks. Affects performance and accuracy.
CHUNK_OVERLAP
Overlap in characters between consecutive chunks (word-aligned). Default: 0. Use to improve context across chunk boundaries.
HYBRID_SEARCH_BM25_WEIGHT
Weight for BM25 keyword search in hybrid search (default: 0.5, PostgreSQL only).
HYBRID_SEARCH_VECTOR_WEIGHT
Weight for vector similarity search in hybrid search (default: 0.5, PostgreSQL only).
POSTGRES_LOCK_TIMEOUT
Per-connection lock_timeout for the PostgreSQL engine (default: 30s). Bounds how long a statement waits to acquire a lock so a single stuck operation cannot make every other statement on the table queue indefinitely. Set to 0/off to disable.
POSTGRES_IDLE_IN_TRANSACTION_TIMEOUT
Per-connection idle_in_transaction_session_timeout for the PostgreSQL engine (default: 300s). Reaps abandoned transactions that would otherwise pin locks. Set to 0/off to disable.
POSTGRES_STATEMENT_TIMEOUT
Per-connection statement_timeout for the PostgreSQL engine (default: unset). Bounds total statement runtime; useful to auto-abort a wedged query. Index builds are exempted, so it is safe to enable. Set to 0/off/empty to disable.
API_KEYS
Comma-separated list of API keys for securing access to the REST API (optional).
GIT_PRIVATE_KEY
Base64-encoded SSH private key for accessing private Git repositories (optional).
These variables can be passed directly when running the binary or inside your Docker container for easy configuration.
You can use an .env file to set the variables. The Docker compose file is configured to use an .env file in the root of the project if available.
External sources are automatically monitored and updated in the background. The content is periodically fetched and added to the collection, making it searchable through the regular search endpoint.
🔌 Model Context Protocol (MCP) Integration
LocalRecall can be controlled via MCP (Model Context Protocol) through the LocalRecall MCP Server available in the mcps repository.
The MCP server provides tools for:
🔍 Search: Search content in collections
➕ Create Collection: Create new collections
🔄 Reset Collection: Clear collections
📄 Add Document: Upload documents to collections
📋 List Collections: List all available collections
📁 List Files: List files in a collection
🗑️ Delete Entry: Remove entries from collections
Quick Start with MCP
The MCP server can be configured to enable specific tools for security and flexibility:
No homepage URL was recorded for mudler/LocalRecall in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
Is mudler/LocalRecall open source?
Yes — mudler/LocalRecall ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/mudler/LocalRecall.
What is mudler/LocalRecall?
mudler/LocalRecall (mudler/LocalRecall) is a Go project on GitHub. From the project's own README: :brain: 100% Local Memory layer and Knowledge base for agents with WebUI
What license does mudler/LocalRecall use?
mudler/LocalRecall is released under the MIT license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
Where do I read more about mudler/LocalRecall?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/mudler/LocalRecall is the definitive source.
Read full README in the tab above.
Want a second opinion on LocalRecall?
Ask an AI that can read this page — one click and you get its take on LocalRecall.