Skip to content

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, the daemon fires a full cycle every five minutes — quietly, in the background. (Each harvester is rate-limited to its own cadence inside that cycle, so a five-minute tick is cheap.) 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 (6)
  · 09:14  claude_code [claude-opus-5]    Migrate the corpus to schema v2
  · 11:42  cursor      [claude-opus-5]    Wire the daemon plist
  · 14:05  continue_dev                   Refactor the retrieval path
  · …

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:

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:

  1. Injects your persona — one click from the popup, on the chat you’re currently on. Voice, values, conventions, refusals all land at the top of the message you’re about to send. (There is no automatic injection on every chat you open; you press the button.)
  2. Captures the conversation on each surface you’ve enabled — user prompts and assistant replies both. Captured turns are POSTed to the relay, which is what carries them to your other devices and feeds persona synthesis. Browser captures do not currently land in your local corpus.db — mirroring them back down to the local messages table is being built.

Coverage:

The popup shows per-surface health (green ≤5 min since the last accepted turn, yellow ≤60 min, red otherwise) and a capture toggle for each surface. Every surface starts off — you switch on the ones you want, in the popup, before anything is captured. 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.

personkit corpus surfaces and personkit corpus messages read your local corpus, so they show your editor and harvester activity — not browser captures, which live on the relay until local mirroring ships:

personkit corpus surfaces                          # per-surface roll-up, local corpus
personkit corpus messages --surface=claude_code --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:

  1. 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.
  2. 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 via PERSONKIT_SYNTHESIS_LLM_OK=1 once 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

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.