Releases: knaisoma/data-olympus
Release list
Data Olympus 0.6.0
Data Olympus 0.6.0 makes the product easier to discover, install, evaluate, and release with confidence. The default MCP catalog is now compact and searchable, PyPI is the primary installation path, public sandbox behavior is safer, and every release artifact is tied to one reviewed source commit through explicit provenance.
Highlights
Searchable MCP discovery
Agents now receive the seven core tools plus tool_search and call_tool from tools/list by default. The remaining tools stay directly callable with unchanged authorization, while discovery no longer consumes context with the complete catalog.
Operators that need the previous full catalog behavior can set:
KB_TOOL_DISCOVERY_MODE=allPyPI first installation
Try the CLI without installing it permanently:
uvx data-olympus --helpInstall or upgrade the persistent CLI:
uv tool install --upgrade data-olympusData Olympus 0.6.0 requires Python 3.13 or newer.
The wheel and source distribution include both console entry points and the enforcement files used by setup. Release automation verifies clean installation from both formats before publication.
Complete, reproducible releases
Release candidates now cover PyPI, GHCR, and GitHub from one exact source commit. Stable promotion requires explicit human approval, compares candidate and stable Python payloads after normalizing version metadata, and retags the verified candidate image digest without rebuilding it.
The 0.6.0 release provenance records:
- Source commit:
ee04c6ca65e525e63337bba30daf8f194d3b3062 - Promoted candidate:
0.6.0-rc.4 - GHCR digest:
sha256:d2388b3c5a96b2cda6f968db0b7403aae225d4a9cc3417c04fee4c59b6e3d77f - Candidate to stable comparison: 85 files equivalent
The downloadable release-provenance.json records the wheel, source distribution, source tree, dependency lock, and candidate to stable comparison. The GHCR digest above is verified separately against the registry.
Executable OKF interoperability
CI now proves both interoperability directions against a pinned revision of Google's Open Knowledge Format reference implementation. Checksummed fixtures detect meaningful upstream changes without treating unrelated repository commits as compatibility changes.
Better registry and sandbox quality
Tool descriptions now state behavior, parameters, side effects, and when a related tool is more appropriate. Glama metadata includes related servers and maintenance guidance, while the public sandbox starts with the safe example corpus instead of an empty index.
Safer incomplete index behavior
Search, document reads, lists, outlines, onboarding status, and cleanup planning now return safe empty results when SQLite exists but has not yet been populated. Raw database errors are no longer exposed during startup or sandbox evaluation.
Security
- Updated the MCP SDK to 1.28.1, removing the WebSocket transport vulnerability tracked as GHSA-vj7q-gjh5-988w. Data Olympus uses Streamable HTTP, but the affected code is no longer present in the dependency lock.
- Updated the optional benchmark stack to torch 2.13.0, addressing GHSA-rrmf-rvhw-rf47 in
torch.jit.script. Production embeddings do not use torch. - Updated FastMCP, regex, mypy, types-regex, Ruff, and GitHub Actions dependencies to their reviewed release baselines.
Benchmark evidence
Benchmark results now carry a deterministic receipt covering source, corpus and query hashes, dependency lock, environment, model and tokenizer identities, commands, seeds, result hashes, and metric summaries. Public claims remain explicitly labeled as maintainer produced and not independently reproduced.
Compatibility note
There is no MCP API removal in this release. Clients that assume every tool appears in the initial tools/list response should either adopt tool_search and call_tool, or set KB_TOOL_DISCOVERY_MODE=all while migrating.
Verification
The release passed the complete Python and Bats suites, Ruff, mypy, actionlint, CodeQL, packaging checks, documentation consistency checks, candidate to stable artifact comparison, PyPI hash readback, and local execution of the promoted container digest.
Full comparison: v0.5.0...v0.6.0
0.6.0-rc.4
data-olympus 0.6.0
New features
- MCP discovery is compact and searchable by default. Agents initially see the
seven core tools plustool_searchandcall_tool, while hidden tools remain
callable with unchanged authorization. Operators can select the complete
catalog withKB_TOOL_DISCOVERY_MODE=all. - PyPI is now the primary install path.
uvxprovides an immediate first run,
uv tool installprovides a persistent CLI, and the installed wheel includes
both console entry points and the enforcement machinery used by setup. - Release candidates are complete across PyPI, GHCR, and GitHub. Every candidate
includes a wheel, sdist, image, GitHub prerelease, and provenance receipt from
one exact source SHA. Stable publication uses Trusted Publishing and requires
an explicit human approved promotion of the highest complete candidate. - Executable OKF conformance now proves both interoperability directions against
a pinned upstream Google reference revision and checksummed fixtures. - Benchmark evidence now includes a deterministic provenance receipt covering
source, inputs, dependencies, commands, seeds, environment, and result hashes.
Public benchmark claims are labeled as maintainer produced and not independently
reproduced. - MCP catalog discovery is clearer. Eight tool definitions now describe their
behavior, parameters, side effects, and when to use a related tool instead,
giving registries and agents more useful guidance without changing the API. - The Glama sandbox now starts with the bundled example corpus, publishes
related server metadata, and documents the maintenance checks used to keep
the catalog profile complete.
Fixed
- Search, document reads, lists, outlines, onboarding status, and cleanup
planning now handle an empty or incomplete SQLite index without exposing raw
database errors. They return safe empty results until the index is ready. - The transitive MCP SDK was updated to 1.28.1, closing the WebSocket transport
advisory tracked as GHSA-vj7q-gjh5-988w. Data Olympus uses Streamable HTTP,
but the patched dependency removes the vulnerable code from the lock. - The optional benchmark stack now resolves torch 2.13.0, closing
GHSA-rrmf-rvhw-rf47 intorch.jit.script. Production embeddings do not use
torch, and the benchmark integration remains compatible with
sentence-transformers.
0.6.0-rc.2
data-olympus 0.6.0
New features
- MCP catalog discovery is clearer. Eight tool definitions now describe their
behavior, parameters, side effects, and when to use a related tool instead,
giving registries and agents more useful guidance without changing the API. - The Glama sandbox now starts with the bundled example corpus, publishes
related server metadata, and documents the maintenance checks used to keep
the catalog profile complete.
Fixed
- Search, document reads, lists, outlines, onboarding status, and cleanup
planning now handle an empty or incomplete SQLite index without exposing raw
database errors. They return safe empty results until the index is ready. - The transitive MCP SDK was updated to 1.28.1, closing the WebSocket transport
advisory tracked as GHSA-vj7q-gjh5-988w. Data Olympus uses Streamable HTTP,
but the patched dependency removes the vulnerable code from the lock. - The optional benchmark stack now resolves torch 2.13.0, closing
GHSA-rrmf-rvhw-rf47 intorch.jit.script. Production embeddings do not use
torch, and the benchmark integration remains compatible with
sentence-transformers.
0.6.0-rc.1 (REJECTED: wrong source)
REJECTED. DO NOT DEPLOY. This candidate was built from the wrong source SHA because the reusable image workflow ignored the requested release ref. It was never deployed. The workflow was fixed in PR #167; use 0.6.0-rc.2 instead.
data-olympus 0.6.0
New features
- MCP catalog discovery is clearer. Eight tool definitions now describe their
behavior, parameters, side effects, and when to use a related tool instead,
giving registries and agents more useful guidance without changing the API. - The Glama sandbox now starts with the bundled example corpus, publishes
related server metadata, and documents the maintenance checks used to keep
the catalog profile complete.
Fixed
- Search, document reads, lists, outlines, onboarding status, and cleanup
planning now handle an empty or incomplete SQLite index without exposing raw
database errors. They return safe empty results until the index is ready. - The transitive MCP SDK was updated to 1.28.1, closing the WebSocket transport
advisory tracked as GHSA-vj7q-gjh5-988w. Data Olympus uses Streamable HTTP,
but the patched dependency removes the vulnerable code from the lock. - The optional benchmark stack now resolves torch 2.13.0, closing
GHSA-rrmf-rvhw-rf47 intorch.jit.script. Production embeddings do not use
torch, and the benchmark integration remains compatible with
sentence-transformers.
v0.5.0
New features
-
Data Olympus can now tell you when a newer version has been published. The
running server checks PyPI and GitHub in the background and surfaces a
latest_version/update_availablesignal inkb_healthand the health
endpoint, so deployments that do not auto-update can see at a glance that they
are behind. Air-gapped installs can turn the check off with
KB_DISABLE_VERSION_CHECK=on. -
A first-class reverse-proxy host allowlist. Set
KB_PUBLIC_HOSTNAMESto the
hostnames your server is reached by, and Data Olympus configures the HTTP
layer's Host-header protection for you (instead of reaching for the underlying
dependency's env var). If you bind a public address with host protection on
and no hostname allowed, the server now warns loudly at startup, so the silent
"readiness green, every request rejected" failure mode can no longer catch you
out. -
An optional Prometheus
/metricsendpoint. Install themetricsextra and
GET /metricsexposes queue depths, push-failure and staleness counters, live
session counts, per-tool call counts, and index-build timing, so a
governance-critical single-writer service becomes alertable instead of
log-grepped. Without the extra installed, nothing changes and the route
returns501. -
Legacy corpus status migration. Documents from pre-0.4.0 corpora that predate
the mandatorystatusfield now default toactivein the search index (with
KB_STATUS_AUTOFILL=on, the default), so they stay searchable and in-force on
upgrade instead of silently dropping out. Adata-olympus migrate status
command persists the field to the files when you want it written to disk.
Release safety
- Publishing a version that already exists on a registry is now blocked. The
release pipeline refuses to republish an existingX.Y.Zto PyPI, ghcr, or a
GitHub release/tag, so a published version stays immutable. A legitimate
re-run of the same commit is still allowed.
Fixed
- The
demoted_writesreminder inkb_consultnow reflects the entries that are
actually still awaiting review for your session, rather than a session-lifetime
count, so it stops nudging you about demotions that are already resolved.
0.5.0-rc.2
New features
-
Data Olympus can now tell you when a newer version has been published. The
running server checks PyPI and GitHub in the background and surfaces a
latest_version/update_availablesignal inkb_healthand the health
endpoint, so deployments that do not auto-update can see at a glance that they
are behind. Air-gapped installs can turn the check off with
KB_DISABLE_VERSION_CHECK=on. -
A first-class reverse-proxy host allowlist. Set
KB_PUBLIC_HOSTNAMESto the
hostnames your server is reached by, and Data Olympus configures the HTTP
layer's Host-header protection for you (instead of reaching for the underlying
dependency's env var). If you bind a public address with host protection on
and no hostname allowed, the server now warns loudly at startup, so the silent
"readiness green, every request rejected" failure mode can no longer catch you
out. -
An optional Prometheus
/metricsendpoint. Install themetricsextra and
GET /metricsexposes queue depths, push-failure and staleness counters, live
session counts, per-tool call counts, and index-build timing, so a
governance-critical single-writer service becomes alertable instead of
log-grepped. Without the extra installed, nothing changes and the route
returns501. -
Legacy corpus status migration. Documents from pre-0.4.0 corpora that predate
the mandatorystatusfield now default toactivein the search index (with
KB_STATUS_AUTOFILL=on, the default), so they stay searchable and in-force on
upgrade instead of silently dropping out. Adata-olympus migrate status
command persists the field to the files when you want it written to disk.
Release safety
- Publishing a version that already exists on a registry is now blocked. The
release pipeline refuses to republish an existingX.Y.Zto PyPI, ghcr, or a
GitHub release/tag, so a published version stays immutable. A legitimate
re-run of the same commit is still allowed.
Fixed
- The
demoted_writesreminder inkb_consultnow reflects the entries that are
actually still awaiting review for your session, rather than a session-lifetime
count, so it stops nudging you about demotions that are already resolved.
v0.4.2
New features
- A new
data-olympus verifycommand checks that a running knowledge-base
server is healthy and answering correctly. It runs liveness, readiness, a
search round-trip, and an enforcement check against a target you name, prints a
clear pass/fail summary (or JSON), and returns a distinct exit code when the
server is unreachable versus when a check fails. Handy in scripts and as a
release or deployment smoke test. - Behind the scenes, the project gained a staged-promotion release pipeline: a
release candidate is built, verified on a live instance, and then promoted as
the exact same image, so what ships is exactly what was tested. This is
internal tooling and does not change how you run the server. - Registry listing polish: a Glama score badge and clearer MCP tool metadata so
catalog sites can describe the server more accurately.
Fixed
- Clarified, for anyone running the server behind a reverse proxy or ingress,
that the public hostname must be added toFASTMCP_HTTP_ALLOWED_HOSTS. Without
it, health probes pass while real requests are refused with a 421. See
docs/serving.mdanddocs/operations.mdsection 3.4.
v0.4.1
data-olympus v0.4.1
A small maintenance release: the dependency refresh queued up while v0.4.0
was in flight, with the full test suite verified green on the combined set.
Fixed
- Updated runtime dependencies (fastmcp 3.4.3, numpy 2.5.1) and continuous
integration tooling (mypy 2.2.0, GitHub artifact actions v7/v8) to their
current releases, keeping the published package and its build pipeline on
supported versions.
v0.4.0
data-olympus v0.4.0
The governance release: knowledge in your bundle now carries an explicit
lifecycle that retrieval actually enforces, and agents can propose knowledge
but only humans can promote it to a governing rule.
New features
- Agents propose, humans promote. A new governed-lane protection (on by
default,KB_GOVERNED_LANE_PROTECTION=offto disable) stops any
agent-initiated write from minting or silently rewriting a governing rule:
writes that claim in-force status or edit an in-force document are queued
for your review instead of committed, with an advisory injection-pattern
scan annotating anything suspicious. Nothing is rejected, and every demotion
is reported per write, per session (kb session-recap), and in the
consultation envelope. - Rules can expire. Documents may declare a
validitywindow
(valid_from,valid_until,last_verified,recheck_by). An expired
rule disappears from every default search until you explicitly ask for it
(include_expired,validity_statefilters, orkb_getby id), because an
expired rule with no successor must not keep governing decisions. A new
data-olympus validity-reportcommand lists what expired and what is about
to. - Supersession is now enforced, not just documented.
supersedes,
superseded_by, and the newcontradictsfields are parsed, indexed as
edges, lint-validated across the whole bundle (dangling, asymmetric, and
cyclic chains are flagged), and in-force retrieval excludes anything
superseded by an in-force document, even when someone forgot to flip the
old document's status. - The enforcement surface only serves governing rules.
kb_consultis
hard-filtered to in-force content, server-rendered memories are stamped
type: memory/status: proposed, memory-inbox documents can never be in
force regardless of claimed status, and responses expose a computed
in_forceflag plus proposal provenance (source_session,reason, a new
evidencelist). - The bundle audits itself. A maintenance ledger, committed to the bundle
and recomputed at every index build, tracks corpus health (documents missing
status, recently expired and soon-to-expire rules) and surfaces open items
aspending_actionsonkb_consultandkb_healthuntil they are fixed. - Secrets cannot reach your knowledge base. Every write path (memory
proposals, edits, onboarding bootstrap, review resolutions) is scanned for
credential patterns (private keys, GitHub/AWS/Slack tokens, passwords in
connection strings) and rejected with a redacted report; only an explicit
operator override through review can commit a flagged write. - Start a new bundle in one command.
data-olympus init <dir>scaffolds a
complete, lint-clean bundle with an example of every document type,
including a working supersession pair andapplies_whentriggers, so a new
team learns the differentiating features from the artifact itself. - New documents must declare a status. The write path now rejects new
documents withoutstatus, while legacy documents keep working through a
guided migration driven by the maintenance ledger. - The format is documented as an OKF profile.
docs/okf-profile.mdmaps
every field to OKF baseline compatibility, lint coverage, and stability
tier, so adjacent implementers can compare semantics without reading the
code.
Fixed
data-olympus indexsilently generated zero index files when the bundle's
absolute path passed through a directory with a skip-listed name (such as
.venvornode_modules); skip matching is now relative to the bundle
root.- The "Publish to PyPI" workflow failed at startup on every pull request due
to a reusable-workflow permissions mismatch; the dry-run build now runs on
packaging PRs as intended.
v0.3.5
v0.3.5
Fixed
- Fixed a confusing error when a write was rejected for being outside the
deployment's configured writable folders. It used to look identical to a
security rejection (like a path-traversal attempt), so a perfectly normal,
well-formed request could send someone hunting for a bug that wasn't there.
The rejection now says specifically whether the path just isn't in the
writable list, isn't a markdown file, or is genuinely malformed. Everything
else is unchanged from 0.3.4.