Skip to main content
Glama
AnirudhB-6001

Chronicle Beta

Chronicle Beta

A local-first personal RAG memory system that turns your AI conversation history into a searchable, retrievable knowledge base. Designed to work with any LLM via MCP (Model Context Protocol).

What It Does

Chronicle Beta ingests your exported AI conversations, chunks and embeds them into a local vector store, and exposes a retrieval interface via MCP. When connected to an LLM like Claude, the LLM can semantically search your entire conversation history. It finds relevant context, past decisions, code snippets, and ideas on demand.

The LLM handles query decomposition and answer synthesis. Chronicle handles storage and retrieval.

Related MCP server: OmniHub

Architecture

Your LLM (via MCP) -> Chronicle MCP Server -> Retriever -> ChromaDB
                                                ↑
                              Ingestion: parser -> embedder -> vector store

Two MCP tools:

  • retrieve_chunks - semantic search with optional metadata filters and date ranges

  • health_check - connectivity and status probe

Stack:

  • ChromaDB (persistent local vector store)

  • all-MiniLM-L6-v2 (sentence-transformers, ~22MB, runs locally)

  • MCP over stdio (JSON-RPC)

Quick Start

Full setup guide -> step-by-step instructions for macOS, Windows (WSL), and Linux, including how to install prerequisites.

The short version:

mkdir -p ~/Projects && cd ~/Projects
git clone https://github.com/AnirudhB-6001/chronicle_beta.git
cd chronicle_beta

Export your ChatGPT data (Settings -> Data Controls -> Export Data), unzip the archive, and place conversations.json in the data/ folder:

chronicle_beta/
└── data/
    └── conversations.json   ← place it here

Then run the install script:

bash scripts/install.sh

The script handles everything: verifies Python 3.10+, creates a virtual environment, installs dependencies (~2 GB first run), parses your conversations, embeds them into a local vector store, and prints the MCP config for Claude Desktop. It is idempotent, safe to re-run at any point, skipping completed steps.

Follow the printed instructions to connect to Claude Desktop, then ask Claude:

"Use chronicle health_check"

If it responds with status: ok and sample titles from your conversations, you're done.

Requirements: Python 3.10+, ~3 GB disk space, 30–90 minutes for first setup. See the full guide for how to install Python and other prerequisites on your OS.

Troubleshooting

See the Troubleshooting Guide for solutions to common installation, ingestion, and MCP connection issues across all platforms.

Configuration

Ingestion options

python -m scripts.embed_and_index \
  --input data/chunks.json \
  --db-path data/vector_store \
  --collection chronicle_memory \
  --model all-MiniLM-L6-v2 \
  --batch-size 100 \
  --reset  # drop and rebuild collection

Retrieval filters

The retrieve_chunks tool supports:

  • retrieval_query - string or list of strings for multi-query retrieval

  • k - number of results (default: 8)

  • date_from / date_to - ISO date strings for time-window filtering

  • filters - metadata filters: type, project, source, title, author, path

Eval

Chronicle Beta includes an evaluation pipeline for measuring retrieval quality.

# Run the eval suite
python -m eval.run_eval --dataset eval/golden_questions.json

See docs/eval.md for details on metrics (Precision@k, Recall@k, MRR, NDCG).

Project Structure

chronicle_beta/
├── mcp_server/
│   ├── server.py              # MCP JSON-RPC server (2 tools)
│   └── tools/
│       └── retrieve_chunks.py # Retrieval tool wrapper
├── retriever/
│   └── core.py                # Callable retriever: search(q, k, filters, dates)
├── scripts/
│   ├── install.sh             # One-command setup (install + ingest)
│   ├── parser.py              # ChatGPT export -> chunks.json
│   └── embed_and_index.py     # Chunks -> ChromaDB (stable IDs, rich metadata)
├── tests/                     # Unit + integration tests
├── eval/                      # Evaluation pipeline + golden datasets
├── data/                      # User data directory (gitignored)
├── docs/                      # Documentation
│   ├── QUICKSTART.md          # Full setup guide (macOS, Windows, Linux)
│   ├── TROUBLESHOOTING.md     # Solutions to common issues
│   └── eval.md                # Evaluation metrics and methodology
├── .github/ISSUE_TEMPLATE/    # Issue templates (setup, retrieval, feature request)
├── CONTRIBUTING.md            # Contribution guidelines
├── pyproject.toml
├── LICENSE                    # Apache 2.0
├── SECURITY.md                # Vulnerability reporting
└── README.md

Privacy

Chronicle Beta is local-first by design. Your conversation data never leaves your machine.

  • No cloud dependencies. Embeddings are computed locally using sentence-transformers. No OpenAI API, no external embedding services.

  • No telemetry. Chronicle Beta does not phone home, collect analytics, or transmit any data.

  • No API keys required. Everything runs on your hardware.

  • All user data is gitignored. The data/ directory (conversations, chunks, vector store) is excluded from version control by default.

  • MCP data flow. When connected to an LLM client like Claude Desktop, retrieved chunks are sent to the LLM via stdio for answer synthesis. At that point, the LLM provider's data handling policies apply. Chronicle Beta itself does not control what happens after chunks leave the MCP interface.

Security

See SECURITY.md for vulnerability reporting instructions.

License

License

Chronicle Beta v0.1.x was released under the Apache 2.0 license.

From v0.2.0 onwards, Chronicle Beta is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

You are free to use, modify, and distribute this software for personal and open-source use.
Any commercial use, hosted deployment, or product built on Chronicle requires explicit written permission from the author.

Copyright (C) 2024-2026 Anirudh Batra Contact for commercial licensing: [hello@anirudhbatraofficial.com]

See LICENSE for full terms.

Available Tools

2 tools
health_checkA

Light connectivity and status probe. Returns server info, environment flags, and runs a tiny test retrieval to verify the vector store is accessible.

ParametersJSON Schema
NameRequiredDescriptionDefault
probe_queryNoOptional test query to verify retrieval works (default: 'test').

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses returns (server info, environment flags) and behavior (runs test retrieval to verify accessibility). The phrase 'light probe' implies non-destructive, though read-only is not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence effectively conveys purpose, output, and verification behavior without redundancy. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description covers what it does, what it returns, and how it verifies. It omits return format details, but these are not critical for a health check.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter (probe_query). The description's mention of 'tiny test retrieval' complements the schema by linking the parameter's purpose, but adds minimal extra meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Light connectivity and status probe' with clear verb 'probe' and resource (server/vector store). It distinguishes from sibling retrieve_chunks by framing as a connectivity test rather than actual retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context implies use for checking health/connectivity, reinforced by 'tiny test retrieval' suggesting it is not for real queries. Does not explicitly name alternatives or exclusions, but context alone is sufficient for a simple probe tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_chunksA

Run Chronicle retrieval for one string query or a list of sub-queries; return standardized chunks with metadata. Supports optional date window and metadata filters.

Best practices for the calling LLM:

  • Decompose complex questions into 3-5 focused keyword queries.

  • Use array syntax: ["topic keywords", "related concept"] not full sentences.

  • Use filters when you know the content type or project.

  • Use date_from/date_to for temporal queries.

The returned chunks contain source_name, timestamp, relevance_score, content_raw, content_type, and project fields. The calling LLM should synthesize an evidence-based answer from these chunks, citing sources and presenting an evidence timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoNumber of results per query (default: 8).
date_toNoInclusive end date filter (YYYY-MM-DD).
filtersNoOptional metadata filters. Supported keys: type (chat|code|doc|unknown), project, source, title, author, path. All filters are case-insensitive substring matches.
date_fromNoInclusive start date filter (YYYY-MM-DD).
retrieval_queryYesOne or more retrieval queries. Use keyword-dense phrases, not full sentences. Array of 3-5 variations recommended for complex questions.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It thoroughly explains the behavior: it accepts one or more queries, returns structured chunks with listed fields, and instructs the LLM to synthesize evidence-based answers. It doesn't explicitly state read-only behavior or rate limits, but 'retrieve' implies it, and the return format and no-side-effect expectation are clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence, a bulleted list of best practices, and a final paragraph about return fields and follow-up synthesis. It is somewhat lengthy but every section earns its place by providing practical guidance. The bullet points improve scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 5 parameters, nested objects, and no output schema, the description covers all key aspects: what the tool does, how to structure queries, when to use filters, and what fields are returned. It also provides downstream instructions for the calling LLM. It doesn't mention error handling or pagination, but these are not essential for the tool's core purpose, so the completeness is high.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage of parameter descriptions. The description adds meaningful guidance beyond the schema, such as recommending 3-5 keyword-dense query variations, using array syntax instead of full sentences, and explaining how filters and date parameters should be used. This elevates the semantic clarity beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs Chronicle retrieval for a string or list of sub-queries and returns standardized chunks with metadata. It mentions optional date window and metadata filters, and the first sentence is specific and action-oriented. The sibling 'health_check' is clearly unrelated, so this tool is well-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a dedicated 'Best practices for the calling LLM' section with explicit guidance on decomposing complex questions, using array syntax, applying filters, and using date filters. It tells the agent exactly when and how to use the tool, effectively substituting for absence of sibling alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.0
    • First observedhealth_check
    • First observedretrieve_chunks

TDQS

A4.3/5.0
Disambiguation5/5

The two tools are completely distinct: retrieve_chunks handles data retrieval while health_check verifies connectivity/status. There is no overlap or ambiguity between their purposes.

Naming Consistency5/5

Both tools follow a clear verb_noun pattern using snake_case (retrieve_chunks, health_check). The naming convention is consistent and predictable.

Tool Count3/5

With only 2 tools, the set feels thin for a full-featured retrieval server, though it covers the core retrieval use case plus a health check. It is borderline but could be expanded.

Completeness4/5

The retrieval operation is well-covered with filtering and date windows, and health_check provides necessary diagnostics. However, there are no tools for browsing available filters, projects, or content types, which agents might need.

Maintenance

ActivityInactive
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A local AI memory system that stores all conversations verbatim and organizes them into navigable structures. It provides 19 MCP tools for AI assistants to search and retrieve past decisions, debugging sessions, and architecture debates automatically.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A local-first MCP server for personal memory management, enabling AI agents to store, search, and retrieve developer insights with offline semantic search and auto-categorization.
    17
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Local-first persistent memory for AI agents via MCP, enabling semantic search and memory sharing across agents with zero cloud cost and full privacy.
    16
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local-first memory MCP server that enables storing, searching, and managing personal memories with hybrid keyword and semantic recall, all on-device.
    21
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AnirudhB-6001/chronicle_beta'

If you have feedback or need assistance with the MCP directory API, please join our Discord server