Skip to content

v0.8.0 — Knowledge Import

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Oct 13:46
· 5 commits to main since this release
b88a1a6

Release notes and downloads

Knowledge Import

Bring your agent memory and repo knowledge into OpenLore. Context that lives on
one person's machine can become shared, versioned knowledge for the team, without
moving the original files or giving the server access to your private Git
credentials. You choose which imported stores agents can read.

Knowledge Import is the first phase of the Knowledge Gateway, not the whole
gateway roadmap. This release delivers client-driven import from Claude Code,
local folders, and Git repositories, a versioned docstore, and read-only
projections. Automatic sync, arbitrary source connectors, importing as editable
documents, and gateway-wide link verification remain future work. Learn how it
fits together in the knowledge gateway guide.

New: the lore client

The release archives and Homebrew cask now ship two binaries: the openlore
server and the lore client. Run lore from your knowledge repository (the
folder containing openlore.yml). Enable the server's HTTP API, then:

lore login https://lore.example.com

# Choose and preview this project's Claude Code instructions and memory
lore agent import claude --project

# Or add a folder or Git repository
lore source add ~/notes --name notes --include '**/*.md'
lore source add https://github.com/acme/payments --name payments \
  --branch main --include 'docs/**' --include '*.md'

# Preview changes, then push a versioned snapshot
lore status
lore sync

For a new repository, lore init [directory] creates default server settings
without a login or overwriting an existing openlore.yml. It does not initialise
Git or create identities and access policy; configure those before syncing to a
shared server (#234).

lore login supports browser passkeys or a minted token. lore source list
shows your sources and lore source rm <name> removes a source definition
without deleting server history. lore agent connect claude|codex registers the
server with your coding agent.

Serve imported knowledge to agents

Add a projection to the docsets object in lore.json and grant its readers:

{
  "docsets": {
    "payments-docs": {
      "projection": {
        "store": "git/github.com/acme/payments",
        "subpath": "docs"
      },
      "access": { "allow": { "engineers": "ro" } }
    }
  }
}

Run lore config reload in an OpenLore session with lore:config:edit to mount
the read-only docset at /payments-docs. Agents can read and search it over SSH,
MCP, or HTTP. A projection under an identity's home can stay private to that
identity. The agent-shell command lore sources and the dashboard Sources view
show projected stores and their latest snapshots.

Supporting capabilities

  • Live configuration reload: docsets, projections, mount paths, aliases,
    grants, and folder rules update without restarting the server, including for
    existing sessions on subsequent reads. Invalid reloads leave the running
    configuration unchanged; an already-started read may finish against the old
    configuration. Transport, authentication-provider and other startup settings
    still require a restart.
  • Versioned docstore: sync uploads only new content-addressed blobs and
    retains snapshot history. Native writes to disk docsets are also snapshotted.
  • Skills integration: server-fetched public HTTPS skill sources use the
    docstore, with per-installation applied and rejected versions. Invalid
    upstream versions leave the last valid installed skill available. Client Git
    stores remain separate from server-owned skill source stores.
  • Content reorganisation: server file moves commit atomically and retain
    provenance through lore history <path>. Usage follows moves within the
    caller's readable query scope without counting moves as authored writes.
    Opt-in folder indexes refresh in the same governed batch. mv warns about
    stale references; lore links --to <path> lists readable references for
    repair, while replace and lore meta set / unset provide literal and
    structured edits. lore meta --missing finds missing frontmatter or named
    fields. References are not rewritten automatically
    (#231).
  • Dashboard: resizable desktop file tree, file refresh/retry controls, and
    a file-tab context menu.
  • Observability: opt-in OpenTelemetry tracing and correlation.

Reliability and documentation

  • Fixed sed basic regular expressions and invalid address handling (#201).

  • Fixed unsupported moves being reported as read-only sessions (#203).

  • Fixed file usage rankings consuming unbounded memory (#206).

  • Fixed hard-to-read analytics text tables (#209).

  • Fixed missing usage token counts using current knowledge facts (#215).

  • Fixed write-denial messages not explaining the failed gate (#216).

  • Fixed installed iOS PWA navigation leaving the dashboard scope (#217).

  • Fixed skills refusals and collection marker preservation (#218).

  • Fixed per-command --help requests not reaching command help (#222).

  • Fixed imported-skill installation reconciliation (#228).

  • Fixed jq subtraction filters being interpreted as flags (#227).

  • Fixed docstore guest access, cross-source blob authorization, and upload-size enforcement; client snapshots now require verified source-scoped uploads or committed history (#229).

  • Fixed unsupported < file input redirection being silently accepted; it now fails with guidance to use cat file | command (#233).

  • Virtual filesystem errors no longer expose host filesystem paths.

  • Added import guides and the lore CLI reference, a LangChain start guide,
    cloud agent setup guides, HTTPS and production guidance, and clearer
    documentation for public access, inbox publishing and multi-line heredocs.

  • Made repository setup discoverable from the documentation index and usage guide (#230).

  • Breaking: the MCP shell tool is now lore_bash. Claude Code's
    auto-mode classifier judges a call by the tool name and the command, and a
    tool called shell running grep -r term / reads as a scan of the local
    disk; under lore_bash the same calls were denied in 1 of 12 test runs
    instead of 4 and never sent for escalated review. The HTTP /api/shell
    endpoint and SSH are unchanged. Update any permission rule that names the
    tool, such as mcp__openlore__shell → mcp__openlore__lore_bash; the
    server-wide mcp__openlore rule keeps working. list_commands is unchanged.

  • Added the Share a coding style guide with every agent
    recipe: a style docset with size/lines and size/tokens budgets, a
    prompt that has an agent write the guide from Google's style guide, and an
    AGENTS.md section that points agents at it.

  • Added the Build an LLM wiki on OpenLore recipe, which runs
    Karpathy's LLM wiki pattern on a server: existing docsets as the read-only
    raw layer, a wiki docset as an OKF bundle for the index and log, a schema
    page every agent reads, and ingest, query and lint through any agent.

Install and upgrade

brew install --cask aakarim/tap/lore
# If already installed:
brew upgrade --cask aakarim/tap/lore
openlore version
lore

For other platforms, download the matching archive from this release. Existing
server configurations need no migration. To use imports, enable the HTTP API,
run lore sync, and explicitly configure projections. MCP clients must refresh
tool discovery and update rules that name the old shell tool.

On upgrade, SQLite-derived analytics views and daily partials rebuild once from
retained events; recorded events and content facts are preserved. Move continuity
requires retained move events and cannot be reconstructed for older unlinked
moves (#231).

Security boundaries and limitations

  • Client-synced stores are not exposed to agents until projected. The first
    identity to sync a Git repository owns its store.
  • Projected docsets are read-only on every transport. Edit the original and
    run lore sync again; sync is manual, not a background service.
  • The Claude profile excludes settings files, .env*, key/certificate files,
    and filenames containing credential, secret, token, password or api_key.
    This is filename filtering, not secret-content scanning. Review the preview
    before uploading. Session transcripts are opt-in and their contents are not
    filtered. Folder and Git sources need their own include/exclude choices.
  • Snapshot limits: 8 MiB per file, 128 MiB per snapshot, and 10,000 files.
  • Docstore access requires a named identity, not a public/guest token. Physical
    blob deduplication does not grant access across sources. Existing committed
    history remains usable; legacy pending uploads without proof need reupload.
  • Removing a source or projection does not erase retained server snapshots.

Artifacts and verification

Five archives contain both binaries: openlore_linux_amd64.tar.gz,
openlore_linux_arm64.tar.gz, openlore_darwin_amd64.tar.gz,
openlore_darwin_arm64.tar.gz, and openlore_windows_amd64.zip.
Use the release's checksums.txt to verify downloaded archives and
source-sha.txt to identify the exact source commit. Container images are
published as ghcr.io/aakarim/openlore:0.8.0 and :v0.8.0.

Full changelog: v0.7.5...v0.8.0