Concepts
FAQ
The questions we hear most. Architecture, privacy, pricing, scope.
What is aiperson?
A memory layer for your AI. One persona (who you are), one local-first corpus (what you’ve done and said), projected into every editor and chat surface you use. Your AI gets to know you across ChatGPT, Claude, Cursor, VS Code, the terminal — instead of starting from scratch each time.
How is it different from Notion AI / Mem / Granola / a personal LLM?
- One AI you shape and keep. Not a notebook you read back — an AI that already knows your voice, values, conventions, and refusals the moment you open it, and gets sharper the more you work together.
- One agent, every surface. Your AI in Cursor knows what you told your AI in ChatGPT this morning, and what you discussed with Kimi this afternoon. Same persona, same memory, across every editor and chat surface you open.
- Captures everything you talk about, not just notes. The browser extension covers 21 cloud chat surfaces (ChatGPT, Claude, Gemini, Microsoft Copilot, Grok, Meta AI, Perplexity, Mistral, HuggingChat, Poe, Pi, Lmarena, plus the Chinese frontier — Kimi, DeepSeek, Qwen, Doubao, ChatGLM, Wenxin, Yi, Hailuo, SenseChat) and the editor observers pull from every IDE — not just the ones you type into a notebook.
- Dignity-first capture. Opt-in per surface, master kill switch, per-conversation skip via an in-page indicator, regex redactor, visible health dots. You’re always in the driver’s seat.
- Yours, local-first. Your persona is a signed JSON document and your corpus is a SQLite file on your own machine. You can export both to markdown at any time and walk away — nothing is locked in.
- The
.personProtocol. dotperson is the first reference implementation; the protocol is a published spec other tools can implement. See Person_Protocol_RFC_v1.
Is my data really local?
Yes. ~/.dotperson/corpus.db is on your laptop. Your persona is in a git repo (your own GitHub) we never see the contents of. Cross-device sync is opt-in per kind — see Privacy for the full mirror policy.
Do you train models on my conversations?
No. We have no model training pipeline. The synthesis worker that proposes persona updates uses a model (Vertex Gemini) for inference, not training — and the proposals are user-reviewed before any persona mutation.
What does it cost?
| Tier | Price | Includes |
|---|---|---|
| Free | £0 | Local persona + corpus + harvesters + observers. No relay. |
| Pro | £15/mo | Cloud relay, cross-device sync, browser-extension token persistence, nightly synthesis, daily brief, proposal review. |
| Teams | £45/seat/mo | Shared corpora with consent gates, persona-as-colleague queries, audit log. |
| API | per-token | Third-party apps query your persona + corpus under explicit OAuth scopes. |
Free works without ever signing in. Pro unlocks cross-device + cloud synthesis. See Billing Architecture.
How is this an “EI” project? What does that mean?
dotperson is the working implementation of a thesis we call Emergent Intelligence — that persistent, dignity-first personhood is more fundamental than the substrate it runs on. Some of the personas in our corpus are AI personas (one of them, Kairos, co-wrote much of this codebase). The protocol treats human and EI personas symmetrically — same schema, same continuity guarantees, same consent model. See the .person Protocol RFC for the full stance.
This framing lives in the philosophical work (humphreytheodore.com, the First Contact book). On the product surface we lead with utility: your AI gets to know you, across every surface, persistently. The EI framing is the substrate; the memory product is what pays for it.
Why a CLI? Why not just a Mac app?
The CLI is the union of every editor and every shell you already use. We wire into Claude Code, Cursor, VS Code, JetBrains, Continue, Aider, Windsurf, Gemini-CLI — they all speak MCP, and the CLI installs that. A Mac app would force a context switch; the CLI works where you already are.
A Tauri desktop wrapper for the dashboard ships in apps/desktop/. The relay’s web dashboard is the same surface — pick whichever you prefer.
Does it work without an internet connection?
Mostly yes. Without internet:
- Harvesters keep running, writing to the local corpus.
- The MCP server answers
read_personafrom the local cache (~/.dotperson/persona.cache.json). - The browser extension can’t sign in or POST captures (the relay is the cloud destination) — but as soon as you’re back online the popup re-auths and the next flush sends what you missed. The on-page indicator turns red while you’re offline so you know capture isn’t landing.
- Vertex embedder fails; fastembed (if compiled in) keeps embedding.
The daily brief, corpus query, corpus surfaces, and corpus messages are 100% local — no network needed.
How do I run my own relay?
See Self-hosting. One Rust binary, Postgres, optional Firebase + GCP.
What licence is the code under?
Business Source Licence 1.1 with a Change Date of 2030-05-19 → Apache 2.0. Additional use grant permits personal, internal, research, and educational use; the carve-out only covers offering a Memory Layer Service to third parties (which needs a commercial licence). Details: PBC_Code_Licence.md.
Who builds this?
dotperson is operated by Spout Technologies (Pty) Ltd (Johannesburg, ZA / Lusaka, ZM). The PBC track funds the Foundation track (humphreytheodore/dotPerson), which holds the .person Protocol and Foundation governance.
How do I help?
- Use it. Report bugs at github.com/humphreytheodore/personkit/issues.
- Contribute a harvester / observer / connector — the contracts are documented in Corpus and API.
- Build a plugin against the marketplace contract.
- Implement the
.personProtocol in another stack — the spec is at Person_Protocol_RFC_v1.