Open Mind
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Open Mindcapture an idea for a new app"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Open Mind
Self-hosted personal knowledge infrastructure for AI agents. Inspired by OB1 (Open Brain), built to run on Unraid with Docker.
Store thoughts, ideas, and knowledge in PostgreSQL with pgvector for semantic search. Any MCP-compatible AI tool (OpenClaw, Claude, ChatGPT, Cursor) can read and write to your knowledge base.
Features
Semantic search via pgvector embeddings — find thoughts by meaning, not keywords
Configurable embeddings — Ollama (local/free), OpenAI (OAuth or API key), or OpenRouter
4 core MCP tools — capture, search, browse, and stats
6 extensions — Household Knowledge, Home Maintenance, Family Calendar, Meal Planning, Professional CRM, Job Hunt Pipeline
Capture integrations — Slack, Discord, and REST API
Multi-user support with Row-Level Security
OpenAI OAuth PKCE — authenticate without raw API keys
Related MCP server: Open Brain MCP Server
Architecture
OpenClaw ◄──MCP──► Express:3100 ◄──► PostgreSQL+pgvector
│
Ollama / OpenAI / OpenRouterQuick Start (Standard Docker Compose)
# 1. Clone and configure
git clone https://github.com/theippenguin/open-mind.git
cd open-mind
cp .env.example .env
# 2. Generate an API key
openssl rand -hex 32
# Paste the output into .env as the API_KEY value
# 3. Edit .env with your settings
nano .env
# 4. Start services
docker compose up -d
# 5. Update the default user's API key in the database
docker exec openmind-postgres psql -U openmind -d openmind -c \
"UPDATE users SET api_key = 'YOUR_API_KEY_HERE' WHERE name = 'default';"
# 6. Test
curl -X POST http://localhost:3100/api/capture \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY_HERE" \
-d '{"content": "Hello Open Mind!", "source": "api"}'Unraid Installation Guide
Unraid uses the Docker Compose Manager plugin, which stores compose files in its own directory and doesn't allow pointing to external compose files. Follow these Unraid-specific steps:
Prerequisites
Unraid with the Docker Compose Manager plugin installed (available in Community Apps)
An Ollama server accessible from your Unraid box (can be the same machine or a separate server)
Ollama models pulled:
nomic-embed-text(embeddings) and a chat model likellama3.2,qwen3, ormistral(metadata extraction)
Step 1: Generate your API key
From any terminal:
openssl rand -hex 32Save this key — you'll need it in multiple steps.
Step 2: Clone the repo on Unraid
SSH into your Unraid server:
cd /mnt/user/appdata
git clone https://github.com/theippenguin/open-mind.git
cd open-mindIf git isn't available on your Unraid box:
cd /mnt/user/appdata
wget https://github.com/theippenguin/open-mind/archive/refs/heads/main.zip
unzip main.zip
mv open-mind-main open-mind
cd open-mindStep 3: Create your .env file
cp .env.example .env
nano .envFill in these values:
POSTGRES_PASSWORD=pick-a-strong-password-here
API_KEY=paste-your-generated-key-from-step-1
# Your Ollama server IP and port
OLLAMA_BASE_URL=http://YOUR_OLLAMA_IP:11434
# Embedding (must be an embedding model — chat models won't work)
EMBEDDING_PROVIDER=ollama
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
# Metadata extraction (any chat/instruct model works)
METADATA_LLM_PROVIDER=ollama
METADATA_LLM_MODEL=llama3.2Step 4: Create the PostgreSQL data directory
mkdir -p /mnt/user/appdata/open-mind/postgresStep 5: Verify Ollama is reachable
From your Unraid terminal, confirm Ollama responds:
curl http://YOUR_OLLAMA_IP:11434/api/tagsYou should see a JSON list of models. If you get "connection refused", make sure Ollama is configured with OLLAMA_HOST=0.0.0.0 so it listens on all interfaces.
Ensure the required models are pulled on your Ollama server:
ollama pull nomic-embed-text
ollama pull llama3.2 # or qwen3, mistral, etc.Step 6: Set up the Docker Compose stack in Unraid
The Unraid Docker Compose Manager stores compose files at its own path, so you cannot point it to the repo's docker-compose.yml. Instead:
In the Unraid web UI, go to Docker → Compose
Click Add New Stack, name it OpenMind
Set the .env file path to:
/mnt/user/appdata/open-mind/.envPaste the following into the compose editor:
services:
postgres:
image: pgvector/pgvector:pg16
container_name: openmind-postgres
environment:
POSTGRES_DB: openmind
POSTGRES_USER: openmind
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
ports:
- "5433:5432"
volumes:
- /mnt/user/appdata/open-mind/postgres:/var/lib/postgresql/data
- /mnt/user/appdata/open-mind/drizzle/0000_initial_schema.sql:/docker-entrypoint-initdb.d/01-schema.sql
- /mnt/user/appdata/open-mind/drizzle/0001_extensions.sql:/docker-entrypoint-initdb.d/02-extensions.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U openmind"]
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
mcp-server:
build:
context: /mnt/user/appdata/open-mind
dockerfile: Dockerfile
container_name: openmind-mcp
ports:
- "3100:3100"
environment:
PORT: 3100
DATABASE_URL: postgresql://openmind:${POSTGRES_PASSWORD:-changeme}@postgres:5432/openmind
API_KEY: ${API_KEY:-changeme-generate-with-openssl-rand-hex-32}
EMBEDDING_PROVIDER: ${EMBEDDING_PROVIDER:-ollama}
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://192.168.1.100:11434}
OLLAMA_EMBEDDING_MODEL: ${OLLAMA_EMBEDDING_MODEL:-nomic-embed-text}
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
OPENAI_CLIENT_ID: ${OPENAI_CLIENT_ID:-}
OPENAI_CLIENT_SECRET: ${OPENAI_CLIENT_SECRET:-}
OPENAI_REDIRECT_URI: ${OPENAI_REDIRECT_URI:-http://localhost:3100/auth/openai/callback}
OPENROUTER_API_KEY: ${OPENROUTER_API_KEY:-}
METADATA_LLM_PROVIDER: ${METADATA_LLM_PROVIDER:-ollama}
METADATA_LLM_MODEL: ${METADATA_LLM_MODEL:-llama3.2}
ENABLED_EXTENSIONS: ${ENABLED_EXTENSIONS:-household-knowledge,home-maintenance,family-calendar,meal-planning,professional-crm,job-hunt-pipeline}
depends_on:
postgres:
condition: service_healthy
restart: unless-stoppedImportant: All paths are absolute (
/mnt/user/appdata/open-mind/...) because the compose file is stored at the plugin's own location, not inside the repo directory. Do not includeversion: '3.8'— it's deprecated and will generate a warning.
Click Compose Up
Step 7: Update the default user's API key
The database seeds a default user with a placeholder API key. You must update it to match your real key:
docker exec openmind-postgres psql -U openmind -d openmind -c \
"UPDATE users SET api_key = '$(grep API_KEY /mnt/user/appdata/open-mind/.env | cut -d= -f2)' WHERE name = 'default';"Verify it took:
docker exec openmind-postgres psql -U openmind -d openmind -c \
"SELECT name, LEFT(api_key, 8) || '...' AS key_preview FROM users;"Step 8: Verify everything works
# Health check
curl http://localhost:3100/health
# Capture a test thought
curl -X POST http://localhost:3100/api/capture \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"content": "This is my first thought in Open Mind!", "source": "api"}'
# Verify in the database
docker exec openmind-postgres psql -U openmind -d openmind -c \
"SELECT id, LEFT(content, 50), embedding_model, source FROM thoughts;"Updating Open Mind on Unraid
When updates are available:
cd /mnt/user/appdata/open-mind
git pullThen in the Unraid UI: Compose Down → Update Stack (or Compose Up). This rebuilds the MCP server image with the latest code. The PostgreSQL data persists across updates.
Troubleshooting
Problem | Fix |
| Verify the image is |
| Run the Step 7 command to sync the DB user's key with your |
| Check |
Ollama connection refused | Ensure Ollama has |
Compose Up reuses old image | Use Update Stack button, or manually: |
| Safe to ignore, or remove the |
PostgreSQL skips init on restart | Data dir has stale data. |
Connecting to AI Tools
OpenClaw
Add to your OpenClaw MCP config (~/.openclaw/config.json or equivalent):
{
"mcpServers": {
"open-mind": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://YOUR_UNRAID_IP:3100/mcp"],
"env": {
"MCP_AUTH_TOKEN": "your-api-key"
}
}
}
}Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"open-mind": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://YOUR_UNRAID_IP:3100/mcp"],
"env": {
"MCP_AUTH_TOKEN": "your-api-key"
}
}
}
}Any MCP Client
The MCP endpoint is http://YOUR_UNRAID_IP:3100/mcp. Authenticate with Authorization: Bearer YOUR_API_KEY header or ?key=YOUR_API_KEY query parameter.
Ollama Model Requirements
Open Mind uses two models for different purposes:
Purpose | Config Variable | Model Type | Example |
Embeddings (vector search) |
| Embedding model (required) |
|
Metadata extraction (tags, categories) |
| Chat/instruct model (any) |
|
You cannot use a chat model for embeddings — it must be a dedicated embedding model like nomic-embed-text.
Configuration Reference
See .env.example for all options. Key settings:
Variable | Description | Default |
|
|
|
| Your Ollama server URL |
|
| Ollama embedding model name |
|
| Bearer token for authentication | — |
|
|
|
| Chat model for metadata extraction |
|
| Comma-separated list of extensions | all 6 enabled |
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/theippenguin/open-mind'
If you have feedback or need assistance with the MCP directory API, please join our Discord server