Operate
Running locally
The daemon, corpus and MCP server run entirely on your machine with no relay. What that covers today, and where self-hosting the relay stands.
Where self-hosting stands today
Being straight with you: you cannot stand up your own relay yet. The relay’s source is not public, so there is nothing for you to build or deploy. A self-hosting guide is planned, and this page will carry it when it lands.
What is available: the CLI, the corpus and the MCP server are source-available under the Business Source Licence 1.1 (Change Date 2030-05-19, then Apache 2.0). That covers everything that runs on your own machine.
What you can run locally, right now
This is not a consolation prize — it is a real mode, and it is the one most people want. Without any relay at all:
- Harvesters keep running and writing to
~/.dotperson/corpus.db. - The embedder keeps indexing, so hybrid search works.
- The synthesis pass runs.
- The MCP server answers
read_persona,corpus_query,corpus_recentand friends from local state. personkit today,personkit corpus query,personkit corpus surfacesandpersonkit exportare all local — no network needed.
personkit daemon --install # local-first cycle: harvest → embed → synthesise
If personkit login has never run, the daemon’s observe and sync stages early-return — no credentials means no POST. Nothing is sent anywhere.
What you give up by staying local: cross-device sync, browser-extension capture (the extension posts to the relay, so it needs one), and cloud synthesis.
Pointing the CLI at a different relay
The plumbing for a custom relay URL already exists, so it will work the moment a relay is something you can run. Pass it to setup or login:
personkit setup --relay https://your-relay.example.com
It is persisted into ~/.dotperson/credentials.json as relay_url, and every later command reads it from there — there is no relay environment variable to export. The daemon reads the stored URL on each cycle, so its harvest → embed → observe → sync loop follows it automatically. (The launchd plist itself only exports HOME and PATH; the Linux systemd unit takes the user manager’s environment.) To switch later, re-run personkit login --relay https://new-relay.example.com; the next cycle picks it up.
What the relay does
For context on what a self-hosted relay would need to replace, its jobs are narrow:
- Firebase auth and session handling.
- GitHub App brokerage for your persona repo.
- Persona synthesis from captured observations (Google Vertex AI).
- Cross-device sync: receiving mirrorable corpus events, browser-extension captures and IDE observer sweeps.
Everything that makes aiperson useful day to day — the corpus, the persona cache, retrieval, the daily brief — is local.