Coach Memory
FreeNot checkedA personal career-coach memory service that ingests coaching logs, embeds them for semantic search, and exposes the memory to Claude clients via MCP, with a Nex
About
A personal career-coach memory service that ingests coaching logs, embeds them for semantic search, and exposes the memory to Claude clients via MCP, with a Next.js dashboard for browsing.
README
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)
Local setup
- Start Postgres:
docker compose up -d - Copy/create
.env.localwith the required env vars (see below). - Apply the schema (coach tables + better-auth tables):
npm run migrate - Create 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 |
|---|---|---|
DATABASE_URL |
app, migrate, scripts | Postgres connection string |
OPENAI_API_KEY |
app | Embeddings for ingest/search |
BETTER_AUTH_SECRET |
app | BetterAuth session/token signing secret |
BETTER_AUTH_URL |
app | Public base URL BetterAuth issues callbacks against |
COACH_MEMORY_URL |
sync CLI | Base URL of the Personal Coach server to sync against |
COACH_SYNC_API_KEY |
sync CLI | API key (from create-api-key) used to authenticate sync pushes/pulls |
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 progress
CLI
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 "cash management" --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 "Tom" --since=2026-01-01
personal-coach status
Add --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-cli - Connect 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.
Installing Coach Memory
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/gianniskotsas/personal-coachFAQ
Is Coach Memory MCP free?
Yes, Coach Memory MCP is free — one-click install via Unyly at no cost.
Does Coach Memory need an API key?
No, Coach Memory runs without API keys or environment variables.
Is Coach Memory hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Coach Memory in Claude Desktop, Claude Code or Cursor?
Open Coach Memory on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Coach Memory with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
