Generated banner for data-olympus
Generated logo for data-olympus

data-olympus

Memory serverOfficial Knaisoma project

Created by Knaisoma

Published in knaisoma/data-olympus. Publisher page

30 GitHub stars

What it is

Governance-grade, OKF-compatible knowledge-base format with a single-writer MCP server and CLI. Pre-release.
— the description by Knaisoma

Summary from the brain’s metadata

Governance-grade, OKF-compatible knowledge-base format with a single-writer MCP server and CLI. Pre-release. New here? Start with WHY.md. It is the story behind the project: the problem we kept hitting with coding agents, what data-olympus does differently, how it relates to Google's Open Knowledge Format, and where our benchmarks say it is strong and where it is not. The rest of this README is the technical reference.

How it works

Memory model: Markdown vault

AutoGineer overview, from the brain’s own files

Memory model: Markdown vault. Folders: .github (agent config, 20 files); bin (scripts, 7 files); docs (docs, 47 files); scripts (scripts, 29 files); src (source code, 81 files); tests (tests, 286 files). The agent reads .rules/versioning.md, example-bundle.

Folders
FolderRoleFiles
.githubagent-config20
binscripts7
docsdocs47
scriptsscripts29
srcsource-code81
teststests286
.rulesfolder5
benchmarksfolder328
deployfolder19
example-bundlefolder27
releasefolder2

The agent reads

Requirements

Runtimes: Python >=3.13

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)

Set it up

  1. Not scanned by AutoGineerIts dependencies are installed by pip or uv when you run it and were not scanned by AutoGineer (5 declared). https://pypi.org/project/data-olympus/
  2. Not scanned by AutoGineerAutoGineer could not scan everything it runs. https://pypi.org/project/data-olympus/
  3. Created by Knaisoma. Published in knaisoma/data-olympus. Licence: Apache License 2.0.

Usage

From the brain’s own files

  • Requires Python 3.13+ and uv.
  • Run the stable CLI directly from PyPI:
  • Install it persistently when you are ready to create a bundle and run the server:
  • An announced candidate remains opt in through its exact PyPI version.
  • Replace X.Y.ZrcN with the candidate named on the releases page, if any:
  • See release channels for what each channel means, how to verify a candidate before adopting it, and how to roll back.
  • See docs/quickstart.md for bundle initialization, server startup, readiness, agent registration, and the contributor source installation.
  • See docs/adoption.md for the full bundle authoring guide.

Documentation by Knaisoma

data-olympus

Image: knaisoma/data-olympus MCP server Image: MCP Marketplace

<!-- mcp-name: io.github.knaisoma/data-olympus -->

New here? Start with WHY.md. It is the story behind the project: the problem we kept hitting with coding agents, what data-olympus does differently, how it relates to Google's Open Knowledge Format, and where our benchmarks say it is strong and where it is not. The rest of this README is the technical reference.

data-olympus is a governance-grade knowledge-base format and server for agent workforces. It is readable by Open Knowledge Format (OKF) v0.2 consumers: it inherits OKF's directory structure, frontmatter conventions, reserved filenames, and link model, then layers governance extensions on top (stable id, controlled type/status/tier fields, supersedes chains) plus a single-writer MCP server and a CLI. CI proves two concrete directions against official Google OKF v0.2 commit ad30107c31c06aec8a7d5636e0d1058118604e6f: its reference visualization consumer reads every concept in example-bundle, and data-olympus imports, lints, indexes, searches, and retrieves the pinned official Bitcoin sample. This is fixture-scoped interoperability evidence, not a blanket guarantee for every OKF bundle or future upstream revision. The result is a git-native, version-controlled document graph of engineering standards, architectural decisions, and project knowledge that agents and humans can read, search, and extend without any proprietary service.

It governs decisions, not code. When an agent is about to make a choice (a library, a pattern, a migration), data-olympus surfaces the established standard or decision that should govern that choice. It is deliberately not a code-search, reference-finding, or "where is X used" tool: LSP, grep, and Sourcegraph already do that well. The retrieval task it targets is coding-intent to governing-rule, and it helps where current model interaction during vibe-coding is weakest: keeping the model aligned to patterns the team has already established as correct.

Status: pre-1.0 beta. Stable releases are distributed through PyPI and GHCR.

Why

  • Portable, no lock-in. The entire KB is a directory of markdown files in git. No database, no proprietary schema, no vendor.

  • Git-native diffs and review. Every change is a commit. Proposed edits go through a pending queue before commit; history is plain git log.

  • Agent and human readable. Plain markdown with YAML frontmatter. No SDK required to read or author a document.

  • Governed multi-agent writes. The single-writer MCP pipeline (advisory locks, per-session worktrees, durable push queue) prevents concurrent write races without requiring distributed locking infrastructure.

  • Queryable by status, tier, and type. Filter by status: accepted, tier: T1, or type: decision without post-processing. The supersedes chain makes it possible to trace decision history across the graph.

  • Tested with official OKF tooling. CI pins an exact Google OKF revision and proves both consumption directions over committed fixtures. The pin, fixture checksum, and Apache 2.0 license provenance live in tests/okf/reference.json.

Quickstart

Requires Python 3.13+ and uv. Run the stable CLI directly from PyPI:

uvx --from data-olympus data-olympus --help

Install it persistently when you are ready to create a bundle and run the server:

uv tool install data-olympus
data-olympus init my-kb
data-olympus-mcp --help

An announced candidate remains opt in through its exact PyPI version. Replace X.Y.ZrcN with the candidate named on the releases page, if any:

uvx --from 'data-olympus==X.Y.ZrcN' data-olympus --help

See release channels for what each channel means, how to verify a candidate before adopting it, and how to roll back.

See docs/quickstart.md for bundle initialization, server startup, readiness, agent registration, and the contributor source installation.

See docs/adoption.md for the full bundle authoring guide.

Documentation

  • SPEC.md: format specification (bundle layout, frontmatter schema, serving contracts).

  • docs/quickstart.md: verified local-run procedure.

  • docs/adoption.md: bring-your-own-KB guide (author, lint, index, serve, wire an agent).

  • docs/serving.md: single-replica serving model, read-only replicas, git pull loop, health/readiness/liveness split, proxy headers, audit-log rotation.

  • docs/operations.md: production runbook: backup, upgrade, recovery playbooks (degraded/fetch-failed, history rewrite, frozen/demoted push entries, orphaned locks), the health/alerting model, and release channels (stable and candidate, verification, rollback).

  • docs/comparison.md: how data-olympus relates to OKF, enterprise catalogs, markdown KB tools, agent-context conventions, RAG, and ADR tooling.

  • docs/okf-profile.md: field-by-field OKF profile: which governance extensions are stable, which are runtime-only serving fields, and which are experimental candidates.

  • docs/glama.md: Glama registry claim, release, and score-maintenance notes.

  • docs/mcp-registry.md: official MCP Registry notes, what server.json declares, and the checklist for publishing.

  • docs/enforcement.md: turning the KB into a mandatory consultation gate (hooks, kb enforce).

  • benchmarks/README.md: retrieval benchmark methodology and how to reproduce the numbers in docs/comparison.md.

  • SECURITY.md: supported versions and how to report a vulnerability.

License

Apache 2.0. See LICENSE and NOTICE.

CONTRIBUTING.md

Contributing to data-olympus

Thank you for your interest in contributing. This document covers the two kinds of contribution, the dev setup, and the requirements every PR must meet.

Two kinds of contribution

(a) Tool and code changes

Bug fixes, new CLI commands, MCP server improvements, deploy configuration, test coverage, documentation fixes. These follow the standard fork-and-PR flow.

(b) Spec and format changes

Any change to the OKF-compatible format (bundle layout, frontmatter schema, reserved filenames, type/status/tier controlled vocabularies, serving contracts) is a spec change and must go through a Spec Proposal issue first.

Why the extra step: the format is the primary contribution of this project. Spec changes affect every bundle author and every downstream OKF consumer. A Spec Proposal gives maintainers and the community a chance to evaluate backward-compatibility and OKF-compatibility impact before implementation begins.

To propose a spec change, open an issue using the Spec Proposal template. Discuss it there before writing code. When there is rough consensus, implementation can proceed under a linked PR.

Development setup

Requirements: Python 3.13+, uv.

git clone https://github.com/knaisoma/data-olympus.git
cd data-olympus
uv venv
uv pip install -e '.[dev]'

Run the linter and tests:

uv run ruff check .
uv run pytest

Lint the example bundle to confirm the format tools work:

uv run data-olympus lint example-bundle

The expected output is 0 errors across 0 files (N linted), where N is the number of concept files found (nonzero for example-bundle). If you get errors, fix them before committing.

PR requirements

STD-U-821 states:

Start feature branches from release/new and open pull requests against release/new. Use Conventional Commits. Each pull request gets a preview; integration builds an RC for staging. The release process squash-merges the batch to main and deploys production from its stable version tag.

Today, this repository's CI runs tests and wheel/sdist smoke checks per pull request. There is no hosted preview and no per-PR image. After a merge into release/new, rc-build.yml builds the RC wheel, sdist and image, and rc-publish-stage.yml publishes them from trusted main. The target production flow pins artifacts by digest through reviewed gitops changes.

For a fork, fetch the upstream release/new, create your feature branch from that revision, push to your fork, and select upstream release/new as the PR base. External contributors target release/new, never main. If the branch has not yet been cut, wait for the maintainers to make it available. After a release recut, move your open PR onto the new cut and rerun checks and review. Fork PRs must not need publishing credentials or write tokens.

During a cycle, open each pull request directly against release/new (or hotfix/new for a coordinated hotfix). Do not stack pull requests on another feature branch: those branches declare the 0.0.0+unreleased placeholder, and CI refuses it on any other base, as described in docs/releases/placeholder-version.md.

The RC pipeline is enabled and produced the first new-model release, 0.11.1. The old-path release workflows were retired in 2026-10. Data Olympus is a public product, so STD-U-821's internal-tool preview exception does not apply; its public-product preview exception was ratified on 2026-10-07 as STD-U-821 amendment 1.3.

Every pull request must satisfy all of the following before it will be reviewed:

  • Tests pass (uv run pytest).

  • ruff reports no errors (uv run ruff check .).

  • data-olympus lint exits 0 on any bundle you touch (zero errors, warnings are acceptable).

  • Documentation is updated if the behaviour you changed is documented.

  • SPEC.md and the validator stay consistent: if you change the schema (allowed field values, required fields, reserved names), update SPEC.md and the corresponding validator code together in the same PR.

  • CHANGELOG.md is updated. Any PR that makes a functional change (CLI, MCP tools, REST endpoints, format/schema, enforcement, security, or a behaviour-changing bug fix) MUST add an entry under the topmost ## [Unreleased] block. This is mandatory: every release must ship a changelog of its important functional changes. See .rules/changelog-per-release.md.

For spec changes specifically, a Spec Proposal issue must be linked in the PR description and must show maintainer sign-off before the PR is merged.

Commit style

This project uses Conventional Commits. Commit messages must use a type prefix:

  • feat: for new features

  • fix: for bug fixes

  • docs: for documentation-only changes

  • ci: for CI configuration changes

  • chore: for maintenance work (dependency bumps, tooling)

  • test: for test-only changes

  • refactor: for code restructuring without behaviour change

Example: feat(cli): add export command

Every non-merge source commit and the proposed squash message must use type(scope)!: description, with scope and ! optional. Use ! or a nonempty BREAKING CHANGE: / BREAKING-CHANGE: footer for breaking changes. Malformed messages fail lint. The PR title supplies the proposed squash subject; its impact must be at least the highest impact of the source commits, and the squash body must preserve breaking details. Do not squash a feature under chore: or discard a breaking footer. Rewrite default revert subjects as revert: <original subject>; reverts do not cancel earlier version impact.

Below 1.0.0, features and fixes bump patch, breaking changes bump minor, and other valid types floor to patch for a nonempty integration. The release batch uses the special release: X.Y.Z squash record with generated notes; contributors do not choose or commit the target package version.

Code of Conduct

By contributing you agree to abide by the project's Code of Conduct.

Releases

The target flow follows STD-U-821 v1.2 and .rules/versioning.md. The engine scripts/sdlc_version.py and the version overlay in scripts/release_artifacts.py derive X.Y.Z-rc.N from content and commit count, mapped to X.Y.ZrcN in Python metadata. After the cut, the first commit on release/new sets the pyproject.toml version to 0.0.0+unreleased; builds inject the computed version through the overlay.

After review and gates, the agent holding operator authorization squash-merges the batch to main with release: X.Y.Z and generated notes. Reserved cases (including migrations and destructive changes) need explicit operator authorization. The release proves the squash tree equals the reviewed tree, creates annotated vX.Y.Z, and promotes the tested image digest. Production deployment is a separate reviewed gitops change. Verified delivery is followed by deleting and recutting release/new from tagged main.

Maintainers cut urgent fixes on hotfix/new from the current stable main tag, with fixes only and the same gates. Candidates use X.Y.Z-hotfix.rc.N, mapped to Python X.Y.Z.devN; features and breaking changes use the normal path. Coordinate hotfix contributions with maintainers, still targeting release/new for external PRs. After a hotfix, preserve pending work and recut the normal branch. Staging selection uses the active branch head and digest, not version ordering. A cut-only candidate (N=0) is never published or promoted.

See the release routine for activation prerequisites, security gates and delivery.

512 files · 486 not served here

Advantages

  • Local-first: the memory stays in files or a database on your own machine (a rule-derived fact from the brain’s files, evidence: README.md)
  • Works with 14 MCP clients (a rule-derived fact from the brain’s files, evidence: README.md)
  • Plain markdown memory that you can read and edit yourself (a rule-derived fact from the brain’s files, evidence: README.md)
  • No API key is named in its files (a rule-derived fact from the brain’s files, evidence: README.md)
  • Open licence (Apache-2.0) (a rule-derived fact from the brain’s files)

Limitations

  • No ZIP download: install it from its source (a rule-derived fact from the brain’s files)

Security

Risk level: Low risk

This brain runs

Agent instructions that run or fetch something (5)

  • AGENTS.md: `uv run pytest` on its own is not equivalent.
  • AGENTS.md: `tests/test_server_cli.py` and `tests/test_smoke.py` spawn a subprocess with `sys.executable` and read installed distribution metadata, so without the editable install they fail with `No module named data_olympus.server` and a stale version assertion.
  • AGENTS.md: Anything that gates on `uv run pytest` without the editable install (a release routine, a scheduled job) will block on a false failure.
  • AGENTS.md: Run the linter before the tests.
  • tests/importer-fixtures/.cursorrules: Run the type checker in CI and treat type errors as build failures rather than warnings.
  • Low risk: network-instructions (AGENTS.md:75)
  • Low risk: scripts-present (scripts/check_benchmark_docs.py)
  • Low risk: scripts-present (scripts/okf_conformance.py)

Attribution and licence

Created by
Knaisoma
Declared authors
  • knaisoma (declared in pyproject.toml)
Publisher
Knaisoma (Official Knaisoma project)
Source
knaisoma/data-olympus · commit 6d46033
Licence
Apache License 2.0 (files served here)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Knaisoma.

Install from source

486 of its files are not served here, so there is no ZIP. knaisoma/data-olympus at 6d46033