chartroom
Optionally uses OpenAI text embeddings to improve search relevance in the Chartroom knowledge base.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@chartroomsearch my notes for harbor sensor calibration"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Chartroom

A local second brain built on GBrain, with TypeSafe Jev for better search ranking and useful page connections. MIT licensed.
Save a note. Find the right source. Follow connections to related pages. Chartroom uses Jev to judge relevance, then records connection changes and their history so you can inspect what happened.
Your documents and receipts stay in your local data directory. Configured model providers receive the text needed for their calls. Bring your own API keys.
A small comparison
Same 30 synthetic notes, same 20 questions, same GBrain version. Jev off versus Jev on:

Measure | Jev off | Jev on |
Correct first search result | 17/20 | 20/20 |
Correct result in the first three | 19/20 | 20/20 |
Automatically added connections | 0 | 24 |
First-pass median search time | 34 ms | 150 ms |
23 of the 24 connections met the preset relevance rules, including 13 navigation links. Jev found 10 of 18 expected relationships; two enrichment calls failed validation, while their documents were still saved. The accounted Jev estimate was $0.00446, excluding unknown usage from rejected responses. Cached searches took about 31–35 ms.
This is a small synthetic demonstration, not a general accuracy claim. Read the results and limitations or reproduce the comparison.
Related MCP server: memory-mcp-server
How it works

Concept illustration; Chartroom currently runs through MCP and the command line.
Capture: save a document in GBrain.
Judge: Jev scores retrieved passages and candidate page connections.
Connect: Chartroom checks page revisions, publishes selected links and records receipts.
Inspect: read the history or resume queued graph work without repeating the model judgment.
Quickstart
Requires Bun 1.4 or later on Linux. Other platforms have not been tested. Download or clone this repository, then run:
bun install --frozen-lockfile --ignore-scripts
cp .env.example .envSet TYPESAFE_API_KEY in .env to your TypeSafe key. Optionally set OPENAI_API_KEY for embeddings. Without an embedding key, search uses keywords; Jev can still rerank candidates and connect pages. Provider usage is charged to your own account.
Start the owner in one terminal:
bun run startInitial schema creation may take a little time. Wait for the HTTP listening message. The local endpoint is http://127.0.0.1:3141/mcp. The generated bearer token is stored in .chartroom/client.token, never printed. Configure your MCP client with that endpoint and token if you want to use Chartroom from an agent.
In a second terminal, from the same directory:
bun run client status
bun run client capture notes/harbor-sensors examples/sensors.md
bun run client capture notes/garden examples/garden.md
bun run client capture notes/harbor-maintenance examples/maintenance.md
bun run client search "Harbor sensor calibration"
bun run client links notes/harbor-maintenance
bun run client history notes/harbor-maintenance
bun run client work
bun run client resumeConnection creation is a model judgment, not a promise that every capture produces a link. The capture response reports applied, abstained or a failure. work shows source-scoped work; resume retries at most 20 persisted capture batches without asking Jev to judge them again. Inspect held failures before changing their evidence.
Stop with Ctrl+C. Start the same directory again to retain documents, the token, history and queued graph work. Do not run another owner against the same database. The upstream engine enforces an ownership lock.
Configuration
Variable | Default | Purpose |
|
| Private database, bearer token and usage file |
|
| Loopback HTTP port |
|
| Set |
| unset | Jev API key |
| unset | Optional explicitly selected private Jev env file |
| unset | Optional OpenAI text embeddings |
The owner binds to loopback only. This preview is for local use; it does not configure remote hosting. Do not point CHARTROOM_HOME at an existing live GBrain installation. No personal credential directories are searched. Keep .env and the data directory private.
Jev is pinned to jev-1.13.0; GBrain is pinned to v0.48.2.0 plus the compact presentation patch, commit 2c332f7759d84a1862cf06bb39b520fedb051d9a. That commit is upstream 5cfb84f1d3a809c70064c292c23db3d538d5c551 with the presentation change. Internal upstream hooks stay coupled to that revision. Do not change the core version without retesting.
What is included
Jev relevance ranking over retrieved candidates, with bounded timeouts and baseline fallback
capture-to-connection judgments with literal source evidence and source/target revisions
conditional owner graph batches, idempotent receipts and provenance-preserving undo
persistent, source-scoped operation history
explicit, bounded graph-work resume; no unattended scheduler is installed
local usage accounting in
jev-usage.json; reported provider input-token cost is an estimate, not a provider invoice or spending cap
Use bun run client call <tool> '<json>' for other upstream MCP tools. Whole-page writes replace content; read the current page before editing.
Limits
This is a working preview, not a finished autonomous maintenance system. General fact/entity/contradiction enrichment, automatic prose editing, the private editorial controller and the personal Android viewer are not included. Captured role classification is an annotation, not an automatic type migration. Semantic links can be wrong; inspect their evidence and history.
Jev being unavailable does not undo a saved capture. The response exposes the enrichment failure; search retains its baseline results. Existing approved capture graph packets can be resumed with Jev disabled. A small synthetic Jev off/on comparison is available in benchmarks/RESULTS.md; it is not a general benchmark.
The integration's native usage record does not include embedding or other provider costs. Model keys and document content are not included in public examples or test fixtures.
Tests
bun test testsThe tests use synthetic data and disposable directories. Real-provider smoke testing is separate and requires your own credentials. See VERIFICATION.md for what was actually checked.
License and credit
MIT. GBrain is copyright 2026 Garry Tan; its notice is retained in LICENSE. See THIRD_PARTY_NOTICES.md. Chartroom is independent of GBrain and TypeSafe. Hosted provider services and model weights are not covered by this repository's code license.
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Personal context for every AI: search, read, and write back to your private Markdown library.
AI research library. Save, organise and reuse notes and webpages as clean markdown context.
A self-improving memory layer. Your memory, notes, tasks and goals, remembered everywhere.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to save, search, and manage bookmarks with semantic search, automatic metadata extraction, and optional LLM-powered enrichment, all running locally.86MIT
- AlicenseAqualityDmaintenanceGives any AI tool persistent, searchable memory across sessions using hybrid semantic and keyword search, running 100% locally with no API keys or cloud dependencies.61MIT
- AlicenseAqualityFmaintenanceTurns a local folder of notes and documents into a searchable knowledge base for AI assistants via MCP, enabling semantic search, reading, and adding notes entirely on-device.49MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural-language semantic search over a fully local knowledge base, keeping embeddings, storage, and retrieval on the machine.MIT