MCP server · Desktop · Web · Mobile

One knowledge base.
You and your agents.

Lore LLM is a markdown knowledge base you edit from your desktop, browser and phone, share with your team, and that Claude, Codex and other AI agents read and write through MCP, each with its own scoped, revocable token.

Plain markdown Per-agent permissions Full audit trail
How it works

The same files, from both sides.

You sign in with Google and work in the apps. Agents connect to the MCP endpoint with a token you issue. Both land in the same folders, and every agent change is logged against its name.

You

Desktop, web & mobile apps
  • Browse projects, write and organise notes
  • Tick checklists in place
  • Review agent changes, restore with one tap

Lore

Serverless backend on Cloudflare
  • Worker: MCP server + management API
  • R2: {user}/{project}/… markdown
  • D1: agent permissions & audit log

Your agents

Claude, Codex, any MCP client
  • List, read, write and append notes
  • Only inside the projects you allow
  • Read-only or read-write, per agent
Features

Built for sharing memory with agents.

Agents get long-term context that you can actually read and edit. You keep control over what each one sees and changes.

Projects of plain markdown

Each top-level folder is a project. Notes are ordinary .md files with folders, links between files, and attachments.

Living checklists

checklist.md renders as a nested task list. Ticking a box rewrites only that line, and concurrent appends never lose data.

Auto-compiled index

Every project has an index.md that the server rebuilds after each change. It gives agents a map of the project and can't be edited by hand.

Scoped, revocable tokens

Issue one token per agent, limited to projects like Work/* and to read or read-write. Revoking it takes effect immediately.

Activity & restore

Every agent write lands in an activity feed with a side-by-side diff. If you don't like a change, restore the previous version.

Desktop, web and mobile

An Electron editor for macOS, Windows and Linux, the same UI in your browser, and a native Expo app for iOS and Android, all signed in to the same knowledge base.

Teams and roles

Create a team, invite people by email as owner, editor or viewer, and move a project into it. Roles are enforced by the server, not just hidden in the UI.

Obsidian sync

Keep a local copy of your knowledge base as a plain folder and open it as an Obsidian vault. Edits sync both ways, concurrent changes are three-way merged, and wikilinks work.

Hosted MCP connectors

Add the /mcp URL to Claude.ai or ChatGPT and approve access with OAuth: you pick the projects and read or read-write, no token to paste.

Connect an agent

Three steps, one token.

The server speaks MCP over Streamable HTTP. Any client that can send a bearer header can connect.

  1. Sign in to the app

    Open Lore LLM on desktop, mobile or in the browser and sign in with Google.

  2. Create an agent

    In Settings → Agents, pick Claude or Codex, choose its projects and access level. The token is shown once and never stored by the server.

  3. Paste the setup

    Copy the generated command or config into your agent. It can now list, read and write notes in its scope.

Using Claude.ai, ChatGPT or claude mcp add without a header? Add your /mcp URL as a connector and sign in with OAuth instead: the consent page creates the agent for you.

terminal
claude mcp add --transport http lore \
  https://<your-worker>.workers.dev/mcp \
  --header "Authorization: Bearer $LORE_TOKEN"
MCP tools

Eighteen tools, all scoped.

Every call is confined to the agent's user and project scope, write tools need a read-write agent, and every write is recorded in the audit log.

readlist_projects

Projects this agent is allowed to see.

readlist_files

Notes and attachments in a project or folder.

readread_file

Read a markdown note, including the project's index.md.

readread_file_lines

Read just a range of lines from a long note.

readsearch_files

Case-insensitive keyword search across the notes in scope.

readget_checklist

A project's checklist with a completed/total summary.

writewrite_file

Create a note. Overwriting needs an explicit overwrite: true.

writeappend_file

Append safely with an etag precondition, ideal for logs.

writepatch_file

Replace a precise piece of text instead of rewriting the whole note.

writedelete_file

Remove a note the agent has read-write access to.

writeadd_checklist_item

Add an item, optionally under a ## version section.

writecheck_item

Tick or untick items by text; only that line changes.

writeedit_checklist_item

Reword an item without touching the rest.

writemove_checklist_item

Move an item to another section.

writedelete_checklist_item

Remove an item from the checklist.

writecreate_project

Start a new project folder.

writerename_project

Rename a project and move all its files.

writedelete_project

Delete a project; it needs an explicit confirm: true.

Security

Isolation by default.

The trade-offs are written down in ARCHITECTURE_DECISIONS.md.

Tenant isolation in one placeEvery object key is derived from the verified token's user. Paths with .., control characters or non-markdown extensions are rejected.
Instant revocationA token only identifies the agent. Its permissions live in D1, so deleting the row cuts access at once. Tokens expire after 90 days by default.
No silent clobberingWrites don't overwrite unless asked, appends use etag preconditions, and index.md is read-only for agents.
Attachments stay with youAgents see that images and PDFs exist but can't read or write their bytes.
Roles checked on the serverTeam viewers can read but never write: the Worker answers 403, whatever a client shows.
Agents stay on your own projectsAn agent token reaches the projects in your personal space only, never a team's.
Self-host

Runs on the free tier.

The backend fits Cloudflare's free plan: 100k requests a day, and every request is I/O-bound apart from a single JWT verification. Bring your own Cognito user pool and deploy with Wrangler: the step-by-step guide is in the README.

Cloudflare WorkersR2D1AWS CognitoMCP Streamable HTTP
terminal
# clone and test
git clone https://github.com/Davide255/lore-llm
cd lore-llm && npm ci
npm run typecheck && npm test

# run locally
cp .dev.vars.example .dev.vars
npm run db:migrate:local && npm run dev

# deploy
npx wrangler secret put AGENT_TOKEN_SECRET
npx wrangler d1 migrations apply DB --remote
npm run deploy