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.

docs/mcp-registry.md

Official MCP Registry notes

Data Olympus is published in the official registry at https://registry.modelcontextprotocol.io as io.github.knaisoma/data-olympus. A search of its v0 API, ?search=data-olympus, listed versions 0.11.0 and 0.11.1 on 2026-10-18.

From the release after 0.10.0, the stable promotion workflow publishes the entry itself (see "Automated publication" below). This file records what publication needs and keeps the manual checklist as a fallback. It is the registry equivalent of glama.md.

Why it matters

modelcontextprotocol/servers no longer accepts new server implementations. Its CONTRIBUTING directs authors to the registry, and its README tells readers looking for a list of servers to browse the registry rather than that repository.

What is in this repository

server.json at the repository root declares the server:

  • name is io.github.knaisoma/data-olympus. The io.github.* namespace authenticates through GitHub, so no DNS verification is needed.

  • The package entry is registryType: pypi, identifier data-olympus, against https://pypi.org, which is on the registry's list of accepted package sources.

  • The transport is streamable-http at http://localhost:8080/mcp, which is what data-olympus-mcp actually serves and what adoption.md documents. This server is not stdio.

  • Both version fields in the committed file are a placeholder, not the latest release. They hold one concrete stable X.Y.Z (currently 0.11.0, while 0.11.1 is the latest release) because the release squash must be tree-equal to the reviewed head and cannot carry a version edit. The promotion job writes the released version into its own workspace copy just before publication, so the registry entry always names the actual release. A lagging value in the committed file is expected and is not a defect; the rule is in docs/releases/placeholder-version.md.

README.md carries <!-- mcp-name: io.github.knaisoma/data-olympus --> below the badges. That string is how the registry verifies package ownership: it looks for mcp-name: $SERVER_NAME in the README that PyPI serves as the package description.

What is not done, and why

Registry publication requires the marker-bearing package on PyPI. This change adds the marker to README.md. Every description published up to and including 0.7.3 predates it; this release includes it. Publish the registry entry only after the version-specific check below succeeds.

The package and the MCP executable have different names. The package is data-olympus, and the console script that starts the MCP server is data-olympus-mcp, alongside the data-olympus CLI. A consumer running uvx data-olympus would get the CLI, so the explicit form is:

uvx --from 'data-olympus==<release>' data-olympus-mcp

server.json deliberately declares no runtime launch metadata. The transport block describes where the server listens once somebody starts it, which matches how this project is deployed: the operator runs it against their own knowledge bundle. If automated launch is wanted later, that is a deliberate addition of runtimeHint and runtime arguments, and it should be tested against a real client rather than assumed from a schema that validates.

Publication authenticates as a person or as CI. The mcp-publisher flow signs in with GitHub OAuth for an io.github.* namespace, or uses GitHub OIDC when it runs from Actions. A person can publish under io.github.knaisoma/* only if their membership of the organization is public; otherwise the registry grants only their personal namespace and refuses the publish with 403. OIDC authorizes by the repository owner, so the workflow does not depend on anyone's membership visibility.

Automated publication

On the new release path, the publish-mcp-registry job in .github/workflows/promote-release.yml runs after the GitHub release, from the released source revision. It first writes the released version into both server.json version fields of its workspace copy (the committed file is not changed). The job:

  1. refuses unless both server.json versions equal the released version;

  2. reads that version's PyPI description and refuses unless it carries the exact mcp-name marker (the check in step 3 below);

  3. installs a pinned mcp-publisher release and verifies its SHA256 before running it;

  4. signs in with mcp-publisher login github-oidc and publishes, skipping the publish when the registry already lists that version, so a re-run is safe;

  5. reads the entry back from the registry API, filtered by version, and fails unless it is listed.

It runs last on purpose: a registry outage cannot hold back PyPI, the image or the GitHub release, and a failure is visible in the run and can be re-run on its own. To move to a newer publisher, change MCP_PUBLISHER_VERSION and MCP_PUBLISHER_SHA256 together, taking the digest from the registry release's published asset.

Manual checklist (fallback)

  1. Cut a release whose PyPI description contains the mcp-name marker.

  2. Set both version fields in server.json to that release: the top-level version and packages[0].version. Leaving the package pinned to 0.7.3 or earlier points the entry at a description that does not carry the marker. Then re-validate the file against the published schema. Make this edit in a local working copy used only for the manual publish. It does not need to be committed, because the committed fields are a placeholder (see "What is in this repository" above).

  3. Confirm that the pinned release's own description carries the exact marker. Run from the repository root:

    set -euo pipefail
    release=$(jq -er '.packages[0].version' server.json)
    server_name=$(jq -er '.name' server.json)
    curl -fsS "https://pypi.org/pypi/data-olympus/${release}/json" |
      jq -e --arg marker "<!-- mcp-name: ${server_name} -->" \
        '(.info.description // "") | contains($marker)'

    It reads the version-specific endpoint rather than /pypi/data-olympus/json, which returns the latest release, and it matches the complete comment rather than the fragment mcp-name anywhere in the response. It prints false and exits 1 for any version up to 0.7.3, which predate the marker, and is expected to pass once 0.8.0 is on PyPI. Run it rather than assuming it.

  4. Authenticate: mcp-publisher login github, or publish from Actions with OIDC.

  5. Publish, then confirm the entry resolves by searching the registry API for data-olympus.

  6. Record the resulting registry name here.

Status of the registry itself

The registry's development status reports an API freeze for v0.1 dated 2025-10-24, while development continues on v0, and a preview launch dated 2025-09-08 that warns of possible breaking changes or data resets. Treat an entry as something to re-verify after upstream changes rather than as permanent.

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