I pay for ChatGPT, Claude, Cursor, and use Gemini through work. Four vendors, four separate conversation histories, four profiles of how I think. None of them talk to each other. Switch providers and you start over.
So I built a system where the memory is mine. I run a knowledge graph in Postgres (Supabase, free tier) with pgvector for semantic search. A small MCP server reads and writes to it. That server sits behind an MCP Gateway on a $6/month VPS, along with Brave Search and a GitHub server. TypingMind connects to the gateway as a BYOK client -- any model, any device, same brain.
https://github.com/kaspnilsson/digital-twin-playbook
When I switch from Claude to GPT-5 to Gemini, the new model picks up where the old one left off. After three months of daily use, the AI knows my project architectures, my preferences, my side projects. I never re-explain any of it.
The MCP server is MIT-licensed: https://github.com/kaspnilsson/mcp-memory-supabase The playbook walks through the full setup -- Supabase schema, VPS hardening, Caddy, systemd, the system prompt that makes tool routing work: https://github.com/kaspnilsson/digital-twin-playbook
What it costs me: ~$45/month ($6 VPS + ~$36 API compute via OpenRouter + $3 amortized TypingMind license). More than a $20 subscription. But the $20 price is subsidized, and my data stays on my server. What does not work well: TypingMind is a PWA, not a native app. Voice is rough. iOS kills background processes on long tool chains. MCP config does not sync across devices. You are your own SRE.
This is not a consumer product. If you want polish, use Claude.ai. If you want to own the context that makes your AI useful, this is how I did it!