A local-first context memory system for developers with multi-client support
Ingat is a Tauri-based desktop application that stores code snippets, fixes, discussions, and other development context locally on your machine. It provides semantic search capabilities and integrates with IDEs via the Model Context Protocol (MCP).
π New: Multi-Client Remote Mode! Use the UI and multiple IDEs simultaneously without database conflicts.
- π Privacy-First: All data stored locally, no cloud services
- π§ Semantic Search: Find context by meaning, not just keywords
- π Multi-Client Support: Use UI + multiple IDEs simultaneously
- π Universal MCP Integration: Works with all major IDEs via stdio and HTTP/SSE transports
- β‘ Multiple Embedding Backends: Choose between lightweight deterministic hash or high-quality FastEmbed
- π¨ Modern UI: Built with React, TypeScript, and Tailwind CSS
- π¦ Rust Backend: Fast, safe, and reliable
Windows:
# Clone and navigate
git clone https://github.com/sutantodadang/Ingat.git
cd Ingat
# Install dependencies
bun install
# Start everything (service + UI)
.\start-with-service.ps1This automatically:
- β Builds the backend service if needed
- β
Starts
mcp_service(holds database lock) - β Starts the UI in remote mode
- β Enables simultaneous IDE connections
# 1. Install dependencies
bun install
# 2. Build the service
cd src-tauri
cargo build --release --bin mcp_service --features mcp-server,tauri-plugin
# 3. Start the service (keep this terminal open)
./target/release/mcp_service
# 4. In a new terminal, start the UI
cd ..
bun run devThen connect your IDE(s) - see SETUP_GUIDE.md
If you already keep mcp-service running as a background process, configure Windsurf to spawn mcp-stdio.
What happens:
mcp-stdiodetects the runningmcp-serviceand automatically uses REMOTE MODE- All
ingest_context/search_contextscalls are proxied to the service over HTTP - This avoids local DB locks and makes βstore / retrieve contextβ reliable when multiple clients are open
See SETUP_GUIDE.md β Multi-Client Mode and Windsurf.
- SETUP_GUIDE.md - Complete setup guide for all users β
- START_HERE.md - Quick troubleshooting and startup guide
- IDE_MCP_SETUP.md - Setup for VS Code, Cursor, Windsurf, Sublime, Zed, Claude
- VS_CODE_MCP_SETUP.md - Detailed VS Code/Cursor/Windsurf guide
- QUICK_FIX.md - Fix database lock conflicts
- MULTI_CLIENT_USAGE.md - Use Ingat across multiple IDEs
- UNIFIED_SERVICE_SETUP.md - Production backend service guide
- docs/REMOTE_MODE.md - Technical details on remote mode
- MCP_INTEGRATION.md - Architecture and API reference
- docs/IMPLEMENTATION_SUMMARY.md - Implementation details
- docs/ARCHITECTURE_DIAGRAMS.md - Visual architecture guides
Ingat provides three MCP server binaries for different use cases:
| Binary | Transport | Best For | Setup Guide |
|---|---|---|---|
mcp_stdio |
stdin/stdout | VS Code, Cursor, Windsurf, Sublime | IDE_MCP_SETUP.md |
mcp_bridge |
HTTP/SSE | Zed, Claude Desktop | IDE_MCP_SETUP.md |
mcp_service π |
HTTP/REST + SSE | Multi-client simultaneous usage | SETUP_GUIDE.md |
Tip (Windsurf/Cascade): run mcp-service in the background and point Windsurf to mcp-stdio. Ingat will proxy calls to the service automatically.
cd src-tauri
# Build all MCP binaries
cargo build --release --bin mcp_stdio --features mcp-server
cargo build --release --bin mcp_bridge --features mcp-server
cargo build --release --bin mcp_service --features mcp-server,tauri-pluginBinaries will be in: src-tauri/target/release/
βββββββββββββββ
β Tauri UI βββββββΊ Local DB β
βββββββββββββββ
βββββββββββββββ
β Tauri UI ββββββ
βββββββββββββββ β
βββββΊ mcp-service ββββΊ Local DB β
βββββββββββββββ β (Single lock)
β VS Code ββββββ€
βββββββββββββββ β
β
βββββββββββββββ β
β Zed ββββββ
βββββββββββββββ
How it works:
mcp-serviceholds the exclusive database lock- All clients (UI, IDEs) connect via HTTP
- No database lock conflicts
- Automatic service detection on startup
See docs/REMOTE_MODE.md for details.
| IDE | Status | Transport | Configuration |
|---|---|---|---|
| VS Code | β Full Support | stdio | .vscode/settings.json |
| Cursor | β Full Support | stdio | .cursor/mcp.json |
| Windsurf | β Full Support | stdio | .windsurf/mcp.json |
| Sublime Text | β Full Support | stdio | Codeium config |
| Zed | β Full Support | SSE | settings.json |
| Claude Desktop | β Full Support | SSE | claude_desktop_config.json |
See SETUP_GUIDE.md for complete setup instructions.
# Service configuration
export INGAT_SERVICE_HOST="127.0.0.1" # Default: 127.0.0.1
export INGAT_SERVICE_PORT="3200" # Default: 3200
export INGAT_DATA_DIR="/custom/path" # Optional: custom data directory
export INGAT_LOG="info" # Logging: trace, debug, info, warn, errorNote: when a running mcp-service is detected, Ingat uses remote mode and proxies context operations to the service. In that mode, changing the embedding backend from the client is not supported.
Default data locations:
- Windows:
%APPDATA%\ingat\Ingat\data - macOS:
~/Library/Application Support/ingat/Ingat/data - Linux:
~/.config/ingat/Ingat/data
- Node.js (v18+) or Bun
- Rust (latest stable)
- Tauri Prerequisites
# Install dependencies
bun install
# Run Tauri app in dev mode
bun run tauri dev
# Or with all features
bun run tauri dev --features fastembed-engine,mcp-server# Build installer with all binaries
bun run tauri build --features mcp-server,tauri-plugin
# Or with FastEmbed
bun run tauri build --features fastembed-engine,mcp-server,tauri-pluginThe installer will include:
- Tauri UI application
mcp-stdio.exemcp-bridge.exemcp-service.exe
# Rust tests
cd src-tauri
cargo test
# Check compilation
cargo check --all-features
# Lint
cargo clippy --all-features
# Format
cargo fmt| Flag | Default | Description |
|---|---|---|
simple-embed |
β | Lightweight deterministic hash embeddings |
fastembed-engine |
β | High-quality semantic embeddings (ONNX) |
mcp-server |
β | Model Context Protocol server support |
tauri-plugin |
β | Required for mcp-service HTTP server |
- Store code snippets and solutions
- Semantic search across your knowledge base
- IDE integration for quick context access
- Run
mcp-serviceon a shared server - Team members connect their IDEs remotely
- Centralized context repository
- See UNIFIED_SERVICE_SETUP.md
- Use UI for browsing and management
- Use VS Code for coding
- Use Claude Desktop for AI assistance
- All accessing the same data simultaneously
Symptom: "could not acquire lock" error
Solution: Use multi-client mode with mcp-service
# Stop everything
Get-Process | Where-Object {$_.ProcessName -match "ingat|mcp"} | Stop-Process -Force
# Start in correct order
.\start-with-service.ps1See QUICK_FIX.md for detailed troubleshooting.
Check:
- Is another instance running?
curl http://localhost:3200/health - Is the UI holding the DB lock? Close it first
- Port 3200 available?
netstat -an | findstr 3200
Check:
- Service is running:
curl http://localhost:3200/health - Binary path is correct in IDE config
- Binaries are up to date: rebuild with
cargo build --release
See START_HERE.md for complete troubleshooting guide.
Contributions are welcome! Please:
- Follow clean architecture principles
- Use feature flags for optional dependencies
- Add documentation for new features
- Run
cargo clippyandcargo fmtbefore committing - Update relevant documentation files
- Write tests for new functionality
ingat/
βββ src/ # Frontend (React + TypeScript)
βββ src-tauri/ # Backend (Rust)
β βββ src/
β β βββ application/ # Business logic
β β βββ domain/ # Domain models
β β βββ infrastructure/ # External adapters
β β βββ interfaces/ # MCP servers
β β βββ bin/ # Standalone binaries
β βββ Cargo.toml
βββ docs/ # Additional documentation
βββ scripts/ # Helper scripts
[Your License Here]
- Tauri - Desktop app framework
- rmcp - Rust MCP SDK
- FastEmbed - Embedding library
- Sled - Embedded database
- Model Context Protocol - MCP specification
- π Setup Guide: SETUP_GUIDE.md
- π Report Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- β Quick Fix: QUICK_FIX.md
- β¨ Remote mode for simultaneous UI + IDE usage
- π§
mcp-serviceunified backend - π Comprehensive setup guides
- π Helper scripts for easy startup
- π Automatic service detection
See docs/IMPLEMENTATION_SUMMARY.md for technical details.
- VS Code + Tauri + rust-analyzer
- Zed with native MCP support
Get Started: Read SETUP_GUIDE.md for complete setup instructions! π