OpenLoreDocumentationGitHub ↗v0.8.0
Browse documentation
StartOpenLore / Manual

Import knowledge

On this page

Import your agent’s memory, a Git repository or any folder on your machine and keep it synced with your lore server.

The lore client copies the folder into the server’s docstore and refreshes the copy each time you run lore sync. The original stays where it is and stays yours to edit. This page walks through a plain folder; the same flow connects a Git repository, a Claude Code project or your own Claude memory.

lore installs beside openlore; the Homebrew cask and the release archives ship both binaries. Run lore with no arguments to confirm it is on your path; it prints its usage line. You also need a knowledge repository, the folder that holds the server’s openlore.yml.


1. Set up your lore server

In the knowledge repository’s openlore.yml, set the address lore connects to and enable the HTTP API it talks to:

external_url: https://lore.example.com
api:
  enabled: true
  path: /api

Restart the server. For a local server use http://localhost:8080. Minting tokens needs the tokens block described in Auth.


2. Log in

Run lore from your knowledge repository. lore finds it by walking up the directory tree, like Git.

lore login

Your browser opens for a passkey login. The token is stored under ~/.config/lore/ and never in the repository. Every later lore command runs as this identity, and lore remembers this repository as the default for commands you run from other folders.

Tip: On a machine without a browser, mint a token on the server with openlore token mint --identity <identity> and run lore login <server-url> --token "$TOKEN". Replace <identity> with your identity name from lore.json and <server-url> with the server’s external_url.


3. Add a source

Point lore at a folder of notes, keeping only the Markdown files:

lore source add ~/notes --name notes --include '**/*.md' --exclude 'drafts/**'

lore prints the source, its file count and the store path it will sync to, and writes the definition to home/<identity>/sources.yaml in the knowledge repository:

version: "1"
sources:
  - name: notes
    type: folder
    path: ~/notes
    include: ["**/*.md"]
    exclude: ["drafts/**"]

Commit home/<identity>/sources.yaml to the knowledge repository. It describes what you sync; it holds no credentials and no file contents. Each person’s sources live under their own identity, so a teammate’s file never lists yours.


4. Sync

Push the folder to the server:

lore sync

You should see:

Syncing as alice to https://lore.example.com. Identity-scoped sources:
  notes → folder/alice/notes
┃ Push these sources under this identity?
┃
┃                      Yes     No
←/→ toggle • enter submit • y Yes • n No

Press y. The question appears once per server and identity on this machine, and the source then reports what it uploaded:

notes: 14 files · 14 new blobs · +14 ~0 -0 · snapshot 3f9c1a2e…

Run lore sync again after you edit the notes; only changed content is uploaded, and files you deleted disappear from the new snapshot but stay in history.

Tip: lore status shows what a sync would change without uploading anything.


5. Let agents see it

Synced content is held in the docstore until a docset projects it. Add a projection to lore.json and grant the roles that can read it:

{
  "docsets": {
    "notes": {
      "projection": { "store": "folder/alice/notes" },
      "access": { "allow": { "engineers": "ro" } }
    }
  }
}

Run lore config reload in an OpenLore session with lore:config:edit; no server restart is needed. The docset mounts read-only at /notes, including in existing sessions, and everyone who holds the engineers role can read it. Leave out access and project the store under your home instead to keep it to yourself; Import your Claude memory shows that layout.


6. Read it from an agent

Ask the server for something the notes answer. Set OPENLORE_SERVER to your server’s hostname first, for example lore.example.com, or localhost for a local server:

ssh -p 2222 "$OPENLORE_SERVER" "grep -r 'retry policy' /notes"

The matching lines come back from the synced copy. Agents connected over SSH or MCP read /notes like any other docset.

Congrats! Your agents can now read knowledge you keep outside OpenLore, and one command keeps it current.


Next steps

Edit this page on GitHub ↗Source: docs/start/import-knowledge.md

Search the manual

Search the project documentation. No external service.