mindfork 0.22.0 — a platform for a companion
mindfork 0.22.0 is out. It makes a profile something you can keep talking to over weeks: it knows when you last spoke, remembers what you told it from the first message, comes back to you on its own, and answers from your phone. Every part of it is a switch of the profile, off by default: an assistant profile, and a fresh install, work as before.
It knows when, and what you told it
- The time of messages. With Time of messages on, each of your messages reaches the model with when it was written and how long after the one before — "[Thursday, 22 October 2026, 18:40 · 2d 21h after the previous message]" — so it knows that three days have passed since you said the interview was tomorrow. The rows are worked out when the request is built; nothing is added to your chats, and the prompt cache holds.
- Your notes, from the first message. Notes in the prompt puts the notes the assistant wrote about you that are close to how a conversation opens into its prompt. Measured on five models: Gemma 4, which never searched its notes on its own, used the fact it needed 13 times in 15 with the block, from once without. A "latest notes" fallback was measured too, and left out: it carried your freshest news into answers about TCP and the planets on every model.
- Earlier conversations. Earlier conversations in the prompt lists the three before this one, so "let's pick up where we left off" works.
/notesshows every note the assistant keeps about you — search it, read where a note came from and what it replaced, edit it, delete it — and which of them this conversation's prompt carries.
It comes back, and tells you
- Follow-ups. The assistant can plan to come back to something you told it — how
the interview went, the reminder you asked for on Friday at 9 — and writes first when
the time comes. It plans only on what you said, may decide there is nothing to say
and then says nothing; quiet hours (22 to 8) and a cap of three a day are on from the
start. Every planned follow-up is on the tasks screen (
F7), whereDeltwice cancels it. - Notifications. Notify me tells you when the companion writes while you are not
looking: a desktop notification through the terminal (OSC 777 or OSC 9 — Ghostty,
WezTerm, kitty, foot, iTerm2, Windows Terminal Preview 1.26 with
compatibility.allowOSC777, tmux withallow-passthrough all), the bell, and a push to your phone through ntfy if you give a topic. Only who wrote and where is sent, unless you ask for the words.
An instrument for watching a self
- The self-model's history. Every change to the self-model is kept with who made
it — which model, in which conversation, or a background reflection, or you.
HonF3lists the versions with what each changed;mindfork stats --self-modelprints the whole timeline as JSON, from your data or from a backup. - Fork a companion.
/profile forkcopies a profile with its whole memory — notes, knowledge base, self-model and its history — without its chats. Give the fork another model and watch the two selves diverge; the history marks where the fork began. - Carry one.
mindfork companion exportwrites one companion into an archive, encrypted if you give a password, andmindfork companion importadds it on another machine as a new profile.
Characters, and a voice
- Character cards.
mindfork importreads the community's cards —.json,.pngwith the card inside,.charx— into a new profile, shows what will become the system message before it asks, and runs nothing from a card. Example dialogue goes in as examples the character speaks, with the other side a nameless visitor: with your name there, one model of five took the examples for things you had told it.{{char}},{{user}}and{{random:…}}work in any persona;/greetingmoves to a card's next opening. - A voice of its own. A profile can have its own voice under each speech provider, and Speak replies reads each reply aloud as it arrives.
From your phone
Messenger bridge makes a profile a Telegram bot of its own while the app runs: make
the bot with @BotFather, paste its token, type /bridge pair and open the link on your
phone. Your messages get a conversation of their own, answered while the terminal does
something else; typing…, then the whole reply; /new and /stop from the phone. A
follow-up the companion planned there reaches your phone.
- Pictures — a photo, an image file, an album — reach the companion with their captions.
- Voice messages are heard by the speech recognition you pick under
Model/server → Recognition: OpenAI (
gpt-transcribe), any of OpenRouter's recognisers, or a server of your own such as Whisper on vLLM. Sixteen phone-shaped notes on fifteen recognisers chose that design: every transcription API took a Telegram note as it is, and no single model was best at Russian. The conversation keeps the words, marked as spoken, not the recording, and the model is told it reads a transcript — tried on a real phone in very noisy surroundings, it flagged a word the recogniser had dropped. With Speak replies on, a voice message is answered with one, after the text. Voice notes are read and written by the app itself, in Rust; nothing to install. - What a reply from the phone cannot do: run code, write files, edit a project or call an MCP server. Only your account is answered.
- Who can read it. A chat with a bot is not end-to-end encrypted: Telegram can read it, and a voice message is heard by the recogniser you picked. The settings say so before the switch is on, and the privacy policy has the details.
Your data
No schema step: everything new is a field, a section or a table that an older version
skips. Checked with 0.21.0 on a copy of data this version wrote: it reads all of it.
The one thing it loses is the two new sections of settings.json — notifications and
speech recognition — which it drops when it saves its settings, at start; a profile's
companion settings are dropped only if 0.21.0 saves the profiles. Notes and backups do
not change.
Four security advisories published after 0.21.0 no longer apply: the bundled root
certificates and the certificate verifier refuse the distrusted emSign intermediates,
and tokio and ctutils are past two more.
The full list is in the
changelog;
downloads are on the
releases page, and
cargo install mindfork builds the same version from
crates.io.