coach-memory
Click on "Deploy 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., "@coach-memorysearch my coaching notes about leadership skills"
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.
Personal Coach
A personal career-coach memory service. It ingests daily/weekly/quarterly coaching logs and notes, embeds them into Postgres (pgvector) for hybrid semantic + keyword search, and exposes that memory to Claude clients over an MCP server behind BetterAuth (OAuth + API keys). It also serves a small Next.js dashboard (timeline, search, notes capture, analytics) for browsing the same data directly.
Prerequisites
Node.js 22+
Docker (for the local Postgres/pgvector instance)
Related MCP server: hippocampus-mcp
Local setup
Start Postgres:
docker compose up -dCopy/create
.env.localwith the required env vars (see below).Apply the schema (coach tables + better-auth tables):
npm run migrateCreate a login user and a sync API key:
ALLOW_SIGNUP=true npm run create-user -- <email> <password> npm run create-api-key -- sync-cli
Environment variables
Variable | Used by | Purpose |
| app, migrate, scripts | Postgres connection string |
| app | Embeddings for ingest/search |
| app | BetterAuth session/token signing secret |
| app | Public base URL BetterAuth issues callbacks against |
| sync CLI | Base URL of the Personal Coach server to sync against |
| sync CLI | API key (from |
Scripts
npm test # run the test suite (vitest, against .env.test)
npm run build # production build (next build)
npm run sync # push local docs, pull notes mirror, watermark progressCLI
A standalone personal-coach CLI is available for ingest and read access
(search, notes, context, person history, sync status) without the MCP/OAuth
flow — useful for scripts, cron jobs, or terminal use.
npm link # one-time, from this repo
personal-coach login # one-time: prompts for server URL + API key,
# verifies them, and stores them (0600) in
# ~/.config/personal-coach/config.json
personal-coach ingest # push career-coach/state/, pull new notes
personal-coach ingest path/to/file.json # push just one file
personal-coach search "top priorities" --topK=5
personal-coach notes list --type=idea
personal-coach notes add "some thought" --type=thought --tags=a,b
personal-coach context week 2026-06-15
personal-coach person "John" --since=2026-01-01
personal-coach statusAdd --json to any read command for machine-readable output.
Authentication. After personal-coach login, credentials persist, so no
secret needs to live in a script or scheduled-routine prompt. COACH_MEMORY_URL
and COACH_SYNC_API_KEY environment variables still work and take precedence
over the stored login when set (handy for CI or one-off overrides). Non-interactive
login: personal-coach login --url https://… --key <key>, or pass the key via the
COACH_SYNC_API_KEY env var to keep it out of shell history.
Production deploy
Coolify (recommended — one resource, no manual proxy/DB wiring)
docker-compose.coolify.yml deploys the app and its pgvector database together as a
single "Docker Compose" resource:
In Coolify: New Resource → Docker Compose, point it at this repo, and set the Compose file path to
docker-compose.coolify.yml.Set two environment variables in the Coolify UI:
OPENAI_API_KEYandBETTER_AUTH_SECRET(openssl rand -hex 32). Everything else — the DB credentials, the app's public domain and TLS cert — is generated and wired automatically via Coolify'sSERVICE_FQDN/SERVICE_URLmagic variables.Deploy. The schema applies itself on every container boot (see
scripts/docker-entrypoint.mjs), so there's no separate migrate step.One-time bootstrap: temporarily expose the
dbservice's port (or use an SSH tunnel to the Coolify host), then from your local checkout run against thatDATABASE_URL:ALLOW_SIGNUP=true npm run create-user -- <email> <password> npm run create-api-key -- sync-cliConnect a Claude client to
https://<the-domain-coolify-assigned>/mcp.
Any other container host
The plain Dockerfile at the repo root also builds a standalone image on its own —
point it at any pgvector/pgvector Postgres instance, set the environment variables
above, and front it with your own TLS/reverse-proxy setup (e.g. a Cloudflare
Tunnel). The image still self-migrates on boot, so no separate npm run migrate
step is needed; only the one-time user/API-key bootstrap above applies.
This server cannot be deployed
Maintenance
Related MCP Connectors
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP Memory Server for Claude Code that provides persistent context across sessions using semantic search (RAG).Apache 2.0
- AlicenseAqualityBmaintenanceA personal memory MCP server that ingests AI agent conversation logs from multiple platforms into a searchable PostgreSQL+pgvector database, enabling cross-session recall of past reasoning and decisions.6MIT
- FlicenseNot gradedqualityDmaintenancePersistent memory server for AI assistants with semantic search and three-layer context (global, project, personality). Works with MCP-compatible AI tools like Claude Code, Cursor, Continue, Cline, and more.1-
- AlicenseAqualityDmaintenanceA zero-dependency MCP server for cross-session memory recall in Claude Code. Provides lexical search, listing, and retrieval of past session memories to avoid re-explaining context.315 npmMIT