Skip to main content
Glama

Why

AI assistants forget. Every conversation starts from nothing: the trip you planned last week, the budget you set, the injury you mentioned, the job you applied for, the problem you already solved. Unless you say it again, it's gone.

That's the difference between a chat box and an assistant. An assistant remembers what you've told it, notices when something you say connects to something from before, and doesn't make you repeat yourself.

Kronos gives an assistant that memory. It keeps every conversation you have, indexes it, and gives each memory a temperature. Recent and often-used memories are hot. When something you say connects to one of them, Kronos quietly hands the assistant a short note about it before it answers. Old memories cool down and stop interrupting, but nothing is ever deleted: anything can be found again by searching, or by opening the calendar to the day it happened.

It runs entirely on your machine. Nothing is uploaded, and it works with any assistant that can use tools.

Related MCP server: JauMemory MCP Server

What it's like

You mention your knee is sore after a workout. You told your assistant two weeks ago that lunges hurt it, and it suggested step-ups instead. Without Kronos, that conversation is gone. With Kronos, the assistant sees this next to your message:

kronos: possibly relevant past conversations (kronos read ID for more)
#2 2026-09-27 health · Knee hurts on lunges, what should I swap Swap lunges for step-ups to a low box…

So it answers knowing the history: "Still the left knee from lunges? Did the step-ups help?"

Say "thanks, that's perfect" and Kronos adds nothing. Most messages get nothing. It only speaks up when something actually connects.

And you can ask it directly:

  • "Where did we decide to stay in Lisbon?"

  • "What was I working on on the 24th?"

  • "What did we set the grocery budget to?"

  • "Forget that last message, it had my password in it."

What it does

  • Keeps everything. Every conversation is kept in a private vault on your machine, even after the app that created it cleans up its own history.

  • Brings up what matters, unasked. On every message, Kronos looks for past conversations on the same topic. If one clears the bar, the assistant gets up to three one-line notes. If nothing does, it gets nothing.

  • Picks up where you left off. Starting a conversation brings a short note of what you were last doing in the same place, if it was recent.

  • Lets memories cool. Each memory's temperature halves every two weeks unless it is used. Hot memories come up on their own, warm ones on a strong match, cold ones only when searched for. Nothing is deleted.

  • Has a calendar. Every conversation, by day. Open any day and see what you talked about.

  • Gives the assistant tools to search, read, browse the calendar and forget, through MCP, the standard way assistants use tools.

  • Gives you a window. A small app with the calendar, search, your memory's temperature, and a reader. It takes on your system's theme.

  • Costs almost nothing. No AI model of its own, no GPU, nothing running in the background, no internet. One 4.6 MB program.

How it works

 conversations ──▶ vault ──▶ exchanges ──▶ search index
                                               │
                 your message ──▶ recall ◀─────┤ temperature
                                    │          │
                     three notes or nothing    └──▶ search · read · calendar

The vault

Conversations are kept in ~/.local/share/kronos/vault, readable only by you. Kronos uses hard links where it can: a second name for the same file, so nothing is copied and no extra space is used. When the original app deletes its copy, the vault's name keeps the conversation alive.

The index

Each conversation is split into exchanges: one message from you and everything the assistant said back. Each exchange is indexed together with the conversation's opening request, so a later "where should we stay?" still belongs to the Lisbon trip. Tool output and the assistant's private reasoning are left out: they are large, noisy, and the likeliest place for secrets.

The index stores what is needed to find text, not the text itself. Results point to exact lines in the original conversation, which Kronos reads when needed. 90 MB of conversations make a 1 MB index.

Temperature

Every memory carries a heat and the time it was last set. Its temperature right now is

temperature = heat × 2^(−days since set / 14)

worked out whenever it's needed, so nothing has to run in the background. A new memory starts at 1. Reading it adds 0.4, being brought up adds 0.1, up to 1.

Tier

Temperature

What happens

Hot

0.5 and up

Brought up automatically when it connects.

Warm

0.15 to 0.5

Brought up only on a strong connection.

Cold

below 0.15

Never brought up on its own. Found by searching.

Left alone, a memory is hot for two weeks, warm for about five more, then cold. Using it heats it up again.

Recall

On each message, Kronos picks out the topic words. Filler like ok, thanks, sounds good, uh and go ahead doesn't count, and neither do words so common they appear in a fifth of everything. It finds hot and warm memories containing them and scores each on three things, from 0 to 1:

  • relevance: how well the words match, compared with the other candidates;

  • temperature: how recent and how used the memory is;

  • coverage: how many of your topic words the memory contains.

The score is the average. Coverage is also a gate: at least two topic words, and at least half of them, must appear. Without that, the best of a bad set would always win. Hot memories need a score of 0.6, warm ones 0.75. At most one memory per past conversation, three in all, and never from the conversation you're in.

Each note costs about 40 tokens. It takes around 35 milliseconds.

Use

Talking to your assistant

There's nothing to do. Talk as usual. Recall and the starting note happen on their own, and the assistant has these tools when it wants more:

Tool

What it does

search

Find past conversations by words. Filters: place, from, to.

read

Read a past exchange, optionally with what came before and after.

calendar

Recent days; one day's conversations; or a date range.

forget

Remove a memory from Kronos for good.

doctor

Check Kronos and repair what it can. The assistant calls it if a tool fails.

The app

Open Kronos from your app launcher.

View

Keys

1 calendar

arrows move the day · [ ] change month · t today · enter the day's conversations, enter again to read one

2 search

/ type · enter search · j k move · enter read

3 memory

how warm everything is, and the hottest memories · enter read

reader

j k scroll · space page · g G top and end · esc back

f forgets the selected memory (after asking). tab cycles the views, q quits.

The app uses your terminal's colours, so it matches your theme, including every Omarchy theme, and changes when you change it. The calendar and the memory list share one heat scale: blue is cold, yellow is warm, red is hot.

Your choices

kronos setup asks, and remembers the answers:

  • Which assistants to connect. It lists the ones installed on your computer.

  • Where to keep your memory. Any folder. Change it later and Kronos moves everything there.

  • Whether to add Kronos to your app launcher.

The rest are settings you can change at any time:

kronos config                 show your settings and where they are kept
kronos config recall off      stop bringing memories up on its own
kronos config brief off       no note at the start of a conversation
kronos config notes 2         at most two memories per message

It repairs itself

Updates happen: the program moves, an app rewrites its settings, a file gets damaged. Kronos checks for this and puts things back on its own:

  • At the start of every conversation, it reconnects any assistant you chose that has lost its connection.

  • If its index is ever damaged, it sets it aside and rebuilds it from the vault the next time it opens. Your conversations are never lost; only how warm each memory was.

  • Your assistant has a doctor tool and is told to call it when something fails. You can run it yourself too:

kronos doctor          check everything
kronos doctor --fix    and repair what it can

The command line

Everything in the app is also a command:

kronos                         open the app
kronos search WORDS [--limit N] [--project P] [--from DAY] [--to DAY]
kronos read ID [--around N]
kronos calendar [DAY | FROM TO]
kronos recall WORDS            what would be brought up for this message
kronos forget ID
kronos status [--json]         how much is remembered, and how warm
kronos config [KEY VALUE]      show or change settings
kronos doctor [--fix]          check, and repair
kronos sync                    take in new conversations now
kronos setup                   choose assistants, memory folder, launcher
kronos setup --remove          disconnect everything
kronos mcp                     the tool server, for assistants
kronos hook prompt|start       run by Claude Code's hooks, not by hand

Days are YYYY-MM-DD, in local time.

Where it works

Assistant

Remembers

Brings things up on its own

Tools

Claude desktop, Code tab (claude-code)

every conversation

yes

yes

Claude Code (claude-code)

every conversation

yes

yes

Claude desktop, chat (claude-desktop)

not yet (chats are kept on Anthropic's servers)

no

yes

Codex (codex)

not yet

no

yes

Any assistant that uses MCP tools

through the tools

no

yes

Kronos isn't tied to any one model or company. The memory, the search and the calendar are plain tools that any assistant can call, local models included. To add Kronos to an assistant that isn't listed, give it this MCP server:

{ "command": "kronos", "args": ["mcp"] }

Two pieces depend on the assistant: reading its conversation files, and hooking into each message so recall can happen on its own. Today Kronos does both for Claude Code, which also runs the Code tab of the Claude desktop app. Each other assistant is one reader and, where it allows, one hook.

It runs on Linux, macOS and Windows.

Install

Pick one. Each ends with kronos setup, which asks what to connect.

Ask your assistant. Give it skills/kronos/SKILL.md, the step-by-step guide for installing, connecting, repairing and updating Kronos on any system. In Claude Code you can add it as a plugin:

/plugin marketplace add dawestheperson/kronos
/plugin install kronos@kronos

Download it. Get the file for your system from the latest release, check it against SHA256SUMS, put kronos somewhere on your PATH, and run kronos setup. Claude desktop users can also open kronos.mcpb from the release to add the tools with one click.

Build it. With Rust installed, on any system:

cargo install --git https://github.com/dawestheperson/kronos
kronos setup

Restart the Claude desktop app afterwards. Before changing any file for the first time, setup saves a backup next to it (*.kronos-backup), and it only ever adds or removes its own entries.

Update

Install the new version the same way, then run kronos doctor --fix. Memory and settings carry over.

Remove

kronos setup --remove

Then delete the program. Your memory stays in its folder in case you come back; delete that too to remove everything. The original conversations are never touched.

Privacy and security

  • Nothing leaves your machine. Kronos never connects to the internet.

  • Only you can read it. Its folder is created readable by your user alone. See PRIVACY.md.

  • Secrets are hidden before anything is indexed and again before anything is shown: private keys, API keys and tokens in their known formats, values written as password=… or token: …, and a message that is nothing but a password-like word. A password inside a normal sentence can't be told apart from other words; if you typed one, ask the assistant to forget that message.

  • Forget is permanent for Kronos: the memory leaves the index and is never taken in again. The original conversation belongs to the app that wrote it and is not edited.

  • Encryption at rest is left to full-disk encryption, which Omarchy sets up when it is installed. A key stored on the same unlocked computer would not stop anything running as you; it would only add complexity.

  • Small enough to read. About 3,000 lines of Rust and four building blocks: rusqlite, serde_json, regex, ratatui.

Numbers

Measured on a real history of 34 conversations and 90 MB:

Taking in everything the first time

0.8 s

Checking for new conversations

4 ms

Recall on a message

~35 ms

Index size

1 MB

Program size

4.6 MB

Design

Every decision, and the reason for it, is in DECISIONS.md.

License

MIT

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides persistent local memory functionality for AI assistants, enabling them to store, retrieve, and search contextual information across conversations with SQLite-based full-text search. All data stays private on your machine while dramatically improving context retention and personalized assistance.
    3
    -
  • A
    license
    A
    quality
    D
    maintenance
    Gives AI assistants a persistent memory across conversations, allowing them to remember user preferences, notes, and facts between chats.
    6
    14 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides persistent memory for AI tools by building a local knowledge graph from conversations, enabling cross-session recall and context awareness without cloud dependencies.
    9
    MIT