Start
Daily use
What to expect once everything is wired — your morning brief, the persona that gets sharper week by week, the dashboard.
Once personkit setup + personkit daemon --install have run, aiperson is doing work on your behalf every five minutes — quietly. Here is what you’ll actually notice day to day.
Your morning
Open your terminal:
personkit today
You’ll see something like:
Today · 2026-05-26 (last 24h)
────────────────────────────────
Threads (8)
· 09:14 claude_code [claude-opus-4-7] Migrate the corpus to schema v2
· 10:30 claude_web [claude-opus-4-7] Memory layer thesis — three goals
· 11:42 cursor [claude-opus-4-7] Wire the daemon plist
· 14:05 voice Notes after the call with Lerato
· …
Git activity (5)
· 09:12 feat: schema v2 — threads + messages
· 11:45 feat: unified daemon under one launchd plist
· …
The same brief is available as JSON (personkit today --json) — your morning workflow can paste it into a chat or feed it to a script.
The dashboard surfaces the same data at /dashboard — useful when you want to skim threads and click into one.
In your editor
Any MCP-aware editor (Claude Code, Cursor, VS Code Copilot, Windsurf, Continue, Aider, Gemini-CLI, JetBrains) lets your AI call:
corpus_query("what did we decide about pricing")— hybrid retrieval across every captured surface.corpus_recent({ surface: "claude_code", limit: 5 })— most-recent activity from one tool.read_persona()— full context on you. Most editors call this automatically on first response.record_turn(...)— log a conversation turn into the corpus. Useful when an editor doesn’t have a dedicated observer yet.
Your AI doesn’t need to be reminded. The MCP server is wired into every host via personkit connect.
In the browser — 21 cloud chat surfaces
The extension (v1.0) wires your persona into the global chat frontier — Western and Chinese — and does two things on each supported host:
- Injects your persona when you open a chat — one click in the popup. Voice, values, conventions, refusals all land at the top of the message you’re about to send.
- Captures the full conversation (opt-in per surface) as you go — user prompts and assistant replies both. Every turn lands in your local
messagestable; the relay mirrors it for cross-device sync if Pro is on.
Coverage:
- Verified (default-on): ChatGPT, Claude, Gemini, Microsoft Copilot, Grok, Meta AI, Perplexity, Mistral Le Chat, HuggingChat, Poe, Pi, Lmarena.
- Experimental (popup-flagged, Chinese frontier): Kimi, DeepSeek, Qwen / Tongyi, Doubao, ChatGLM, Wenxin (Ernie), Yi, Hailuo, SenseChat.
The popup shows per-surface health (green ≤5 min since the last accepted turn, yellow ≤60 min, red otherwise) and per-surface consent toggles. Default is off — explicit consent before any browser capture. A master kill switch pauses everything; the in-page indicator at the bottom of every captured chat is a one-click toggle for that conversation only.
From the terminal you can verify what’s landing in real time:
personkit corpus surfaces # per-surface roll-up
personkit corpus messages --surface=browser-ext:chatgpt --limit=10
Voice memos
personkit voice capture ~/Downloads/standup-2026-05-26.m4a
Bridges through a local whisper binary, transcribes, and lands the result as a user-role message in a voice thread. Use --model base.en (default) or larger for accuracy.
The persona that gets sharper
Two paths add to your persona:
- In-session — every ~10 messages a Stop hook fires inside Claude Code and nudges the model to consider whether anything emerged worth recording. The model decides whether to call
write_value,write_convention,write_refusal,record_relational_moment, etc. - Nightly synthesis — the daemon’s synthesis pass (
personkit synthesise) does entity-alias merging and templated thread summaries. The LLM-driven proposal generation lands behind the proposal-review surface (toggle on viaPERSONKIT_SYNTHESIS_LLM_OK=1once you trust it).
Proposed changes land in your inbox at /dashboard/persona/proposals — accept or dismiss each one. Accepting a proposal commits a signed update to your .person.json.
When something looks off
personkit doctor— surface-by-surface health.personkit corpus health— counts per table; the first thing to check when retrieval acts strange.tail -f ~/.dotperson/daemon.out.log— what the daemon is doing right now.- Troubleshooting — the common dead-ends.
Exporting
You own everything. Any time:
personkit export --format=markdown --out ~/dotperson-export
Produces one .md per thread, Obsidian-ready, with YAML front-matter. Move them, version-control them, drop the folder into another tool — dotperson keeps no claim on the files.