EST. 2026 · OPEN SOURCE · SELF-HOSTED

Your life,
filed properly.

Modern AI has memory — bound to one product, opaque, single-user, deletable when the vendor changes their mind. MyPA is the archive underneath: structured, queryable, exportable, multi-tenant, and yours. Today Claude reads from it. Tomorrow whatever comes next does too.

  • MIT licensed
  • SQLCipher AES-256
  • Multi-tenant per install

Yes — Claude has memory now. ChatGPT too. They're useful for "remember I prefer Python." But that memory lives on their servers, is bound to your subscription, can be silently rewritten by the vendor, doesn't move with you when the next AI gets better, and can't reach outside the chat to remind you about anything. This is convenience without sovereignty. MyPA is the archive at the back of the study — structured, queryable, yours for decades.

The honest question

"Claude already remembers me.
So why MyPA?"

Native AI memory and a personal archive answer different questions. Both useful. Both can coexist. But the shape of the problem is different.

What native AI memory does

  • Carries context across chats in the same product
  • Stores freeform text the vendor curates
  • Useful for small conversational preferences
  • Always on, zero setup
  • Bound to one account, one vendor, one app

Great for: "Use Python 3.12 by default." "I prefer brief answers." "I live in London."

What MyPA does differently

  • Structured — items have kinds, dates, fields. Filter "all decisions about investments." List "places rated 5★." Query like a database.
  • Append-only decisions — your original reasoning is preserved verbatim. The vendor can't quietly rewrite it later.
  • Reaches outside the chat — daily morning digest, real push reminders, integrations. Memory that does things.
  • Multi-user per install — your whole family on one VPS, each with isolated data. Not five subscriptions.
  • AI-portable — MCP is an open protocol. Switch from Claude to whatever's next without migrating data.
  • On your hardware — SQLCipher-encrypted, your key, your VPS. Anthropic never sees a single item.
  • Exportable — Markdown + YAML, Obsidian-shaped. Will outlive any of today's vendors.

Great for: durable life data — decisions, contracts, places, preferences, todos, anything you'll still care about in 5 years.

The model: native memory holds your conversational style; MyPA holds the durable facts of your life. They complement each other. Use both.

A live demonstration

Watch Claude actually use it.

Three real flows — saving a decision, getting a morning push, recalling a past choice — animated in your browser. Not a screen-recording, not a slide deck. Press play, or it'll loop on its own.

Scene 1 of 3 — Save a decision
claude.ai · with MyPA connector
your MyPA · encrypted on your VPS ● online
— no items saved yet —

What goes in the archive

The shape of a personal life, organised.

Six kinds of durable life data that benefit from being structured, queryable, and held across decades — not lost in chat transcripts.

01

Decisions, with reasoning intact.

"Bought 100 ABC at £2.10 because Q4 margins expanded and the sector hasn't rotated yet." Append-only by design — five years later when you ask "why did I buy that?", your own past reasoning is verbatim. The vendor can't quietly rewrite it.

02

Contracts & durable facts.

Renewal dates, account numbers (never passwords — use a password manager), support phone trees, policy IDs, IBANs. The stuff you Google in a panic. Your AI should already have it. Filter kind:contract end_before:2027 — done.

03

Places, with how you felt about them.

"Pizza Express on King's Road, rated 5★, visited 20 May." Months later: "What restaurants have I rated 5★ in London?" — Claude opens the drawer and reads. Filter by city, by tag, by date.

04

Preferences, captured casually.

"Pizza is so good, help me remember." "Cilantro tastes like soap." "Kepei loves dinosaurs." Casual remarks become structured records. Next time you ask for restaurant ideas or birthday-gift suggestions, your AI already knows the whole family.

05

Todos & reminders that actually fire.

"Remind me at 14:00 to pick up Kepei." The push lands on your phone — authenticated, on your own infrastructure, no Slack-style notification overload. Daily morning digest of what's due. Per-user-configurable hour and channel.

06

Multi-user by design.

One MyPA install serves your family or small team. Each member has their own credentials, their own archive, their own notifications. No cross-tenant leakage — verified by tests. The architecture you wish Notion had at five seats.

A fair comparison

Side by side, with all the modern features acknowledged.

Claude memory and ChatGPT memory are real and useful. They solve a different problem. Here's the line-by-line:

Claude.ai memory ChatGPT memory MyPA + any MCP AI
Carries context across chats yes — within one Claude account yes — within one ChatGPT account yes — across any MCP-compatible AI
Structured queries (kind, date, tag) no — freeform text only no — freeform text only yes — kinds, fields, FTS5 full-text, filters
Append-only decision history no — silently revised by the model no — silently revised yes — your past reasoning is verbatim, forever
Pushes reminders to your phone no — chat-bound no — chat-bound yes — self-hosted ntfy, authenticated, free
Daily morning digest of what's due no no yes — per-user configurable hour
Where your data physically lives Anthropic's cloud OpenAI's cloud your VPS — SQLCipher-encrypted, your key
Vendor can read your data yes — for safety + model training opt-out flow yes — same no — they never see it
Survives if vendor changes ToS / pricing no — bound to subscription no — same yes — you own the install + data
Moves with you to the next AI no — Claude-only no — ChatGPT-only yes — MCP is an open protocol
Family of 5 (each isolated) 5 × Pro at ~£15/mo = £75/mo 5 × Plus at ~£16/mo = £80/mo 1 VPS at ~£10/mo = £10/mo
Exportable to Obsidian/Notion/anything limited — copy/paste only limited yes — Markdown + YAML frontmatter, one command
Setup effort zero — just opens zero — just opens ~45 minutes, one time

Use both. Native AI memory for conversational style and small preferences. MyPA for the durable, structured, queryable facts of your life. They aren't rivals — they're layers.

The compound advantage

What changes when AI can reason over your archive.

Storage on its own is a Notes app. The interesting thing happens when an AI can read it, write to it, search it, push from it, and reason across years of your life — all through one open protocol.

Longitudinal reasoning

"Look at my last 10 investment decisions — which ones with outcomes recorded actually played out? What's the pattern?" Claude reads every decision with an outcome, compares your thesis to what happened, finds the common thread. Native AI memory can't compare freeform entries across years; structured records can.

Decision review, pattern detection, gift-buying retrospectives, "have I gotten better at this?"

Proactive surfacing

The scheduler runs while you sleep. Your AI can be told to think, not just remind: "any contracts renewing in 30 days I should review?", "places I rated 5★ but haven't been back to in a year?", "anyone I haven't logged a call with in 6 weeks?" Surface what you'd want to be told.

→ Contract renewals, relationship maintenance, "you're slipping on X" nudges, weekly retrospectives.

Cross-AI orchestration

MCP is open. One AI summarises your inbox into notes. Another reads your preferences and drafts gift ideas. A third pulls decisions + outcomes for end-of-quarter review. They share the same archive. Switch vendors any time without migrating data.

→ Email-to-archive pipelines, gift planners, calendar agents, journaling assistants — all on the same data.

Hybrid agency

"Plan my Tokyo trip — I have places saved there, dentist's on Friday, Kepei has piano Thursday." Your AI reads the archive, drafts the itinerary, schedules the dependencies, writes the emails. Memory becomes the substrate for action, not just retrieval.

→ Trip planning, gift research, weekly schedule drafting, contract-renewal email drafts.

Native AI memory is a sticky note on your monitor. MyPA + an AI is a private analyst who's read every page of your life so far — and can write the next one alongside you.

How it plugs in

One MCP connector, every AI ecosystem.

MyPA speaks the Model Context Protocol — Anthropic's open standard for connecting tools to LLMs. Claude.ai supports it natively today. Other vendors are following.

🤖

Claude.ai (mobile + desktop)

Add `https://mypa.<your-domain>/mcp/sse` as a custom connector. OAuth 2.1 with PKCE, family-friendly auth. Mobile inherits desktop's connectors — no second setup.

Settings → Connectors → + Add custom
💻

Claude Code (CLI)

Add MCP server via the CLI. Same endpoint, same tools (`pa_add`, `pa_search`, `pa_get`, `pa_list`, `pa_delete`, ...). Works from any laptop you SSH from.

claude mcp add mypa <url>
📱

Push notifications (optional)

An add-on, not a requirement. If you want phone push for reminders + the morning digest, MyPA ships an integration with self-hosted ntfy — authenticated, per-user topics, free mobile apps. If you don't want notifications, skip this entirely; the archive + Claude integration works fine without it.

ntfy.<your-domain> · or skip
🌐

REST + Web dashboard

FastAPI REST for scripts/cron, Angular dashboard for browsing. Email + password login per user. Read your data from any browser, anywhere.

mypa.<your-domain>/api/*

Self-host it

Docker on your NAS, or one bash command on a VPS.

Two install paths — pick the one that matches your hardware. Both run the same MyPA, both take well under an hour.

🐳 Docker (recommended for NAS & home server)

Synology, QNAP, Unraid, TrueNAS, Raspberry Pi, mini-PC, even a spare laptop. Anywhere Docker runs.

git clone https://github.com/kensterinvest/mypa.git
cd mypa/docker
cp .env.example .env
# edit .env: hostnames + admin email + secrets
docker compose up -d

Brings up API + MCP + ntfy + Caddy with TLS as four containers, on an internal bridge network. Persistent named volumes. Updates: git pull && docker compose up -d --build.

Docker install guide →

🐧 Bare-metal Ubuntu (VPS path)

For a dedicated Ubuntu 22.04 / 24.04 VPS at Hetzner, IONOS, DigitalOcean — anywhere you have root SSH.

git clone https://github.com/kensterinvest/mypa.git /opt/mypa
cd /opt/mypa
sudo bash setup.sh

Installs everything system-wide: Python, SQLCipher, ntfy, Caddy, systemd units, Let's Encrypt certificates. Interactive prompts for your hostnames + admin email.

Source on GitHub →

Hardware & DNS

Modest hardware, two DNS records.

Minimum hardware

  • 1 CPU · 1 GB RAM · 10 GB disk
  • Any Linux VPS for £5-15/mo
  • Verified: Hetzner CX22 (£4/mo), IONOS Linux S (£8/mo), DigitalOcean Basic ($6/mo)
  • Ubuntu 22.04 LTS or 24.04 LTS

Comfortable hardware

  • 2 CPU · 2 GB RAM · 25 GB disk
  • Family of 5+ with photo attachments: this tier
  • Hetzner CX32 (~£6/mo), DigitalOcean Premium ($12/mo)

Network & DNS

  • Ports 22, 80, 443 open (cloud firewall + OS UFW)
  • Two DNS A records → your VPS IP:
    mypa.yourdomain.com
    ntfy.yourdomain.com (optional, only if you want push notifications)
  • Root SSH access (you'll harden it via setup.sh)
  1. Point your domain at the VPS

    Add two A records: mypa.example.com and ntfy.example.com → your VPS IP. (ntfy is optional — skip it if you don't want push notifications.)

  2. Clone & install

    git clone https://github.com/kensterinvest/mypa.git /opt/mypa
    cd /opt/mypa
    sudo bash setup.sh

    The installer pulls dependencies (Caddy, Python, SQLCipher, ntfy), generates secrets, sets up systemd, configures TLS via Let's Encrypt, provisions ntfy with auth on by default. Prompts for your domain, timezone, your admin email.

  3. Save the credentials it prints

    At the end you'll see your BEARER_TOKEN_RW, SQLCIPHER_KEY, OAUTH_JWT_SECRET, and the ntfy publish + admin passwords. Save them in your password manager. Lose the SQLCipher key, lose the database. (There is no recovery.)

  4. Connect Claude.ai

    On a desktop browser: claude.ai → Settings → Connectors → + Add custom → URL: https://mypa.example.com/mcp/sse → Connect → login with your email + admin password. Your phone inherits the connector automatically.

For family members: scripts/add_user.py alice@example.com creates their account + ntfy login. Share the credentials securely once.

Honest about security

What's protected. What isn't.

No magic. The threats MyPA defends against and the ones it doesn't, in plain English.

✓ Protected against

  • Stolen disk / backup snapshot — SQLCipher AES-256, opaque without the key
  • Cross-tenant data leakage — every query scoped by user_id at three layers, regression-tested
  • Notification spoofing — ntfy auth-default-access: deny-all, authenticated publish only
  • Refresh token theft — single-use rotation per RFC 6749 §10.4; replay revokes the whole token family
  • OAuth login brute force — per-(IP, email) throttling (5 fails / 5 min)
  • Stale credentials after user removal — disable_user() surgically revokes refresh tokens + ntfy account

✗ Not protected against (and why)

  • Compromise of the running mypa-api process — the encryption key lives in memory by definition. Defence-in-depth via narrow sudoers and audit log.
  • Operator with VPS root — they see everything. That's you. Trust your VPS provider accordingly.
  • Apple/Google seeing notification content — every iOS/Android push system has this hop. Don't put secrets in notification text.
  • ntfy cache (12h) is plaintext — operator-root readable. Lower retention if it matters.

Operators get the full threat-model write-up after install (it ships in the install bundle, not in the public repo — see SECURITY.md for vulnerability disclosure).

Frequently answered

Questions you'll have.

Claude already has memory. Isn't this redundant?

Claude memory and ChatGPT memory are great for conversational continuity — "use Python", "I live in London", "I prefer short answers." They aren't great at: structured queries ("all decisions about investments"), preserving the why of past choices without silent revision, surviving a vendor change, multi-user architecture, reaching outside the chat to push a reminder, or being yours when the company gets acquired. Use both — they're different layers of the same need.

When MyPA has updates, do I need to reconnect the Claude connector?

For data changes — no. Every Claude tool call hits the live MyPA database in real time. Save an item now → ask Claude about it in the next message → it's there. mypa-api restarts, refresh-token rotation, and new users added on the server are all transparent — Claude auto-reconnects on the next tool call.

Reconnect IS needed only for:

Why ntfy for push? Can't Claude just notify me?

Claude.ai's mobile app shows notifications for new messages in conversations you're already in — it doesn't have a "wake me at 14:00 with this reminder" API. MyPA's notification layer is a separate concern: a self-hosted ntfy server we wire into the install, with mobile apps that work on iOS + Android. It's optional — if you don't want phone push, skip the ntfy step in setup; the archive itself, Claude integration, and the web dashboard all work without it. We chose ntfy specifically because it's open-source, self-hostable, and doesn't put a third-party notification provider in the middle of your data.

What if I switch from Claude to a different AI later?

MyPA speaks MCP — Anthropic's open protocol that other vendors are adopting. Switch from Claude.ai to whatever comes next; your archive doesn't move. The new AI plugs into the same MCP endpoint, reads the same data. No migration, no export-import, no lost history. This is the entire point.

What does it cost to run?

£0 software + the cost of a place to run it. If you already have a NAS or a home server, that's free. Otherwise: a £4-15/mo VPS works. No per-user fees — a 5-person family install costs the same as a 1-person install. No API calls to Anthropic are made by MyPA itself (Claude calls Anthropic; MyPA just holds the data).

Can I install it on my Synology / QNAP / Unraid?

Yes. The Docker compose stack runs on any Docker host — Synology Container Manager, QNAP Container Station, Unraid Community Apps, TrueNAS Scale. Same single-file .env to configure. Walkthrough: docker/README.md.

What happens to my family photos when I save them?

Phone photos (typically 5-10 MB at 4032×3024) are downscaled to a 2048 px longest edge on upload, re-encoded at 85% JPEG quality, and the EXIF metadata — including GPS coordinates — is stripped. A 6 MB photo typically becomes ~700 KB. The image is still high enough resolution to identify everything in the frame, just not big enough to waste your VPS disk. If you'd rather store originals exactly as uploaded, set IMAGE_RESIZE_ENABLED=false. The operator can also tune IMAGE_MAX_DIMENSION + IMAGE_JPEG_QUALITY.

What protects my MyPA from being filled up?

Five layers, each independently capable of refusing an oversized or abusive upload:

  1. Caddy rejects uploads larger than 10 MB at the proxy.
  2. FastAPI rejects them again from the Content-Length header.
  3. A streaming read aborts immediately if the body exceeds the cap during transfer.
  4. Magic-byte validation refuses bytes that don't match a real image / PDF / audio format — clients can't lie about Content-Type.
  5. A 1 GB-per-user lifetime quota stops a compromised account from filling the disk. The system also refuses uploads when the disk has < 1 GB free.

Every attempt — success or failure — is written to the audit log. All knobs are env-tunable per install.

What about a Raspberry Pi?

Pi 4 (2 GB+) or Pi 5 runs MyPA comfortably. Use the Docker path or the bare-metal setup.sh on Raspberry Pi OS / Ubuntu Server arm64. For public access without a static IP: Cloudflare Tunnel or a dynamic-DNS provider does the job.

Will it work with GPT / Gemini / Copilot?

Today: Claude.ai natively (mobile + desktop), plus any agent that speaks MCP. Other vendors are adopting MCP — once their clients support custom connectors, MyPA works without code changes. The MCP protocol is the abstraction.

What happens to my data if the project dies?

Your data lives on your VPS, in a SQLite file you can open with standard tools. There's a Markdown-export tool. If MyPA the project goes dormant tomorrow, your install keeps running. Self-hosted means self-sovereign.

Is the dashboard required?

No. The dashboard is for browsing. Everything you actually do happens through Claude (or REST scripts). You can skip the dashboard install entirely if you only ever interact via AI.

Can I use this for work / sensitive data?

MyPA is meant for personal-life data — decisions, preferences, life admin. We don't recommend it for regulated data (PII at scale, PHI, financial-services records) without an additional review of your specific compliance regime.

An honest fit-check

Is this for you?

You'll like this if…

  • You already have a NAS (Synology, QNAP, Unraid, TrueNAS) or a Raspberry Pi / mini-PC running 24/7 — Docker install does the rest.
  • You have a £5/mo VPS or are comfortable getting one (Hetzner, IONOS, DigitalOcean…) — the bash installer is one command.
  • You'd rather pay £4-15/mo for infra you own than per-seat subscriptions you don't.
  • You have a family or small team who'd each benefit from their own AI memory on one install.
  • You think "vendor lock-in" sounds like something to avoid.
  • You can follow a setup README. (You don't need to know what an MCP server is — just that one runs on your box.)

Skip this if…

  • You don't have a box that's on 24/7 and don't want one — Claude's hosted memory is for you.
  • You handle regulated data (PHI, financial-services records at scale) — talk to a compliance specialist instead.
  • Your AI usage is occasional. The setup cost pays back through years of use, not weeks.
  • You want an iOS app on the App Store, polished onboarding, a 24/7 support line. MyPA is software you self-host, not a product you buy.

One hour to set up. Years of use.

The hard part — security model, multi-tenant correctness — is done. The rest is on your hands and your VPS.

Get it on GitHub → Read the admin guide