Overview
OpenChronicle is an open-source, local-first memory layer for any tool-capable LLM agent. It runs as a daemon on your Mac, captures structured context from what you are doing, and turns that stream into persistent Markdown memory: what you are working on, what you have decided, which tools you use, and which people, projects and organisations matter. Everything stays on the machine — Markdown files on disk with a local SQLite FTS5 index.
Its distinguishing choice is what it captures. Rather than a screenshot-and-OCR pipeline, OpenChronicle is AX-first: it reads macOS accessibility-tree events for the active app, focused element, edited text, URL and interaction state, with screenshots planned as a secondary signal. The project argues this is cheaper to process, better at capturing intent, and produces smaller memory that is easier to deduplicate and retain. Captured events are debounced and deduplicated, normalised into one-minute timeline blocks, grouped into sessions (idle 5m, app-switch 3m, max 2h), reduced into daily event files, then classified into user-, project-, tool-, topic-, person- and org- Markdown files, with history superseded rather than deleted.
It is positioned as an open alternative to OpenAI's Chronicle: MIT-licensed, model-agnostic (Ollama, LM Studio, OpenAI, Anthropic or any LiteLLM-compatible provider), inspectable, and usable by any agent that can call tools. The daemon hosts an MCP endpoint, which is the best-supported integration path today, with Claude Code, Claude Desktop, Codex, opencode and custom local agents listed. The README marks it as v0.1.0, macOS only, early alpha.
What it does
- AX-first capture from macOS accessibility events — active app, focused element, visible text, URL — instead of screenshot-heavy OCR
- Session-aware writing: events are deduplicated, debounced and normalised into a timeline, then reduced into sessions rather than noisy per-snapshot logs
- Human-readable Markdown memory on disk, classified into user-, project-, tool-, topic-, person-, org- and daily event- files
- Local SQLite FTS5 index for search, with supersede-not-delete history
- An MCP endpoint at http://127.0.0.1:8742/mcp so any tool-calling agent can query persistent context
- Model-agnostic: works with local runtimes such as Ollama and LM Studio or any LiteLLM-compatible hosted provider
Getting started
OpenChronicle requires macOS 13 or later and the Xcode Command Line Tools (`xcode-select --install`). It is installed from source with the bundled script.
Install from source
Clone the repository and run the install script.
git clone https://github.com/Einsia/OpenChronicle.git
cd openchronicle
bash install.shRun the daemon
Start capturing in the background, or in the foreground while you watch it. The daemon can be paused and resumed at any time.
openchronicle start
openchronicle status
openchronicle pause
openchronicle resume
openchronicle stopInspect what it captured
These commands run one stage of the pipeline by hand so you can see the raw capture, the timeline and the writer output.
openchronicle capture-once
openchronicle timeline tick
openchronicle timeline list
openchronicle writer run
openchronicle rebuild-indexConnect an agent over MCP
Point an MCP client — Claude Code, Claude Desktop, Codex, opencode or your own agent — at the local endpoint the daemon hosts. See docs/mcp.md in the repository for per-client setup.
http://127.0.0.1:8742/mcpCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Give a coding agent context about what you were working on yesterday without pasting it in again each session
- Keep working-context memory entirely on your own machine, in files you can open and edit, instead of a vendor's cloud
- Share one memory layer across several MCP clients so Claude Code and Codex see the same project history
- Build a custom agent on top of an inspectable memory store — Markdown for the facts, SQLite for the search
How OpenChronicle compares
OpenChronicle alongside other open-source agent memory tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Claude-Mem | ★ 94.3k | Persistent memory layer for coding agents: it captures what an agent does during a session, compresses it into semantic summaries, and injects the relevant parts back into later sessions. |
| Mem0 | ★ 65.6k | A memory layer that you add to existing LLM agents to extract, store, and recall user facts and preferences across sessions using vector, graph, and key-value backends. |
| MemPalace | ★ 59.2k | Local-first agent memory that stores conversations verbatim instead of summarising them, with a structured palace index, pluggable vector backends and an MCP server. |
| OpenViking | ★ 38.1k | A context database that stores an agent's memories, resources, and skills as one browsable viking:// filesystem with three-tier (abstract/overview/details) on-demand loading. |
| Graphiti | ★ 31k | A library that builds a temporal knowledge graph from an agent's conversations and data so facts can be tracked and queried as they change over time. |
| Cognee | ★ 30.8k | A graph-native memory engine that turns raw documents and conversations into a queryable knowledge graph for agents that need to build lasting knowledge. |
| Supermemory | ★ 30.6k | A memory and context engine that ingests information across tools and sessions and can run fully locally, acting as a second brain for AI applications. |
| OpenChronicle | ★ 2.8k | Local-first Mac memory built from what you actually work on, served over MCP |