open-knowledge-format README

The project's README from github.com/GoogleCloudPlatform/open-knowledge-format. As one markdown file: README.md.

Open Knowledge Format (OKF)

📖 Read the Open Knowledge Format v0.2 specification → SPEC.md

This repository is primarily about the Open Knowledge Format (OKF).

OKF is a universal, vendor-neutral format for representing knowledge as plain markdown files with YAML frontmatter. It is not tied to any particular agent, framework, model provider, or serving system. The goal is simple:

  • Anyone can produce OKF — humans authoring by hand, agents built on any framework (Google ADK, LangChain, custom), export pipelines from existing catalogs (Dataplex, Unity Catalog, Collibra, …), or scripts walking a database.
  • Anyone can serve and consume OKF — a static file server, a knowledge-management UI (Obsidian, Notion, MkDocs), an LLM loading files into context, a search index, or a graph viewer like the one bundled in this repo.

The agent below is a proof of concept demonstrating one way to produce OKF bundles automatically. The format itself is the contribution; this agent and the visualizer exist to make the format tangible at both ends — production and consumption.

See OKF in practice — three ready-to-browse bundles produced by this agent, checked into bundles/:

Why OKF?

OKF represents catalog knowledge as plain markdown files with YAML frontmatter, organized in a directory hierarchy. That choice unlocks a few properties that are hard to get from a service-owned metadata store:

The net effect is that reference agents, consumption agents, and humans collaborate on the same artifacts in the same way they already collaborate on source code.

Install

python3.13 -m venv .venv
.venv/bin/pip install --index-url https://pypi.org/simple/ -e .[dev]

Credentials

How the reference agent works

The reference agent runs in two passes. The BQ pass writes one OKF doc per concept the source advertises, using BigQuery metadata alone. The web pass then runs the LLM as its own crawler: it receives a list of seed URLs (provided via --web-seed or --web-seed-file), fetches the seeds via the fetch_url tool, and decides which outbound links are worth following based on whether they look like authoritative documentation for the existing concepts. For each page it fetches, the agent chooses to (a) enrich one or more existing concept docs, (b) mint a standalone references/<slug> doc, or (c) skip. A hard --web-max-pages cap and a same-domain allowed-hosts filter (configurable via --web-allowed-host) are enforced inside the tool, so the agent cannot overrun. Use --no-web to skip the web pass.

Run

Minimum invocation — point at a BigQuery dataset and a bundle output directory. Seeds for the web pass are explicit; omit them (or pass --no-web) to run BQ-only:

.venv/bin/python -m reference_agent enrich \
    --source bq \
    --dataset <project>.<dataset> \
    --web-seed-file <path/to/seeds.txt> \
    --out ./bundles/<name>

Iterate on a single concept by adding --concept <type>/<name> (e.g. --concept tables/events_); repeatable.

Samples

Each sample pairs a recipe (samples/<name>/, with the seed URLs and exact enrich command) with the produced bundle (bundles/<name>/) that the recipe generated. Open the recipe to reproduce; open the bundle to browse the result directly.

Visualize

The visualize subcommand renders any OKF bundle as a self-contained interactive HTML file — one file, no backend, no install on the viewing side. Open it in any modern browser, share it as an artifact, host it on a static file server, or commit it next to the bundle (as this repo does).

The viewer is itself a proof-of-concept consumer of OKF, mirroring the way the reference agent is a proof-of-concept producer. OKF bundles can be consumed by anything that reads markdown; this is just one shape.

What it shows

Generate

.venv/bin/python -m reference_agent visualize --bundle ./bundles/<name>

That writes bundles/<name>/viz.html. Flags:

Flag Default Description
--bundle (required) Bundle root directory.
--out <bundle>/viz.html Output HTML path.
--name bundle directory name Display name shown in the viewer header.

Example, writing the output somewhere else and overriding the header:

.venv/bin/python -m reference_agent visualize \
    --bundle ./bundles/crypto_bitcoin \
    --out /tmp/btc.html \
    --name "Bitcoin OKF"

How it's built

The HTML embeds the bundle as a JSON blob and uses Cytoscape.js for the graph and marked for in-browser markdown rendering, both loaded from a CDN. No data leaves the page; the bundle is parsed once at generation time and serialized into the file.

Tests

.venv/bin/pytest

open-knowledge-format (GoogleCloudPlatform/open-knowledge-format)

Searching Database…

What is this?OKF (Open Knowledge Format) is a vendor-neutral spec from Google Cloud for representing catalog knowledge as plain markdown files with YAML frontmatter, not tied to any specific agent, framework, or model provider. This repo also ships a reference agent that produces OKF bundles and a visualizer that renders them.
Is this just a file format spec, or does it include working tools too?It is both: SPEC.md defines the v0.2 format itself, and the repo bundles a proof-of-concept Python agent that auto-generates OKF bundles from BigQuery plus web docs, and a separate visualize command that turns any bundle into an interactive HTML graph.
How do I generate an OKF bundle with the reference agent?Point the agent at a BigQuery dataset and an output directory for the bundle; it writes one doc per concept from BigQuery metadata, then optionally crawls seed URLs you pass via --web-seed to enrich those docs, and you can run the visualize subcommand afterward to produce a viz.html.
What credentials does the reference agent need before it runs?You need gcloud authenticated with application-default login plus a billing project for BigQuery access, and either a GEMINI_API_KEY from AI Studio or Vertex AI env vars (GOOGLE_GENAI_USE_VERTEXAI, GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION) for the LLM.
Does the web-crawling pass of the agent run wild across the internet?No — it is bounded by a --web-max-pages cap and a same-domain allowed-hosts filter you configure with --web-allowed-host, and the whole web pass can be skipped with --no-web to run BigQuery-only.
Does the generated viz.html send any bundle data elsewhere?No, the viewer is a single self-contained HTML file with the bundle embedded as a JSON blob; nothing is sent out when someone opens it in a browser.
What sample bundles ship with the repo?Four ready-to-browse bundles are checked into bundles/: GA4 (Google Analytics e-commerce dataset), Stack Overflow (public schema), Bitcoin (blocks/transactions), and Acme Retail, each with its own viz.html.
What does the OKF viewer actually show?A force-directed graph of concepts colored by type with edges for cross-links, a detail panel showing frontmatter and rendered markdown for the selected concept, a 'Cited by' backlinks list, plus search, a type filter, and switchable layouts (cose, concentric, breadth-first, circle, grid).
Why use markdown and YAML frontmatter instead of a database-backed catalog?Because it's human- and agent-readable without an SDK, lives in git for diffs/PRs/review, ships as plain portable files with no vendor lock-in, and still lets you query a small set of structured frontmatter fields like type, tags, and trust signals.
How does the visualizer render the graph without a backend?It embeds the whole bundle as a JSON blob into a single HTML file and uses Cytoscape.js for the graph plus marked for in-browser markdown rendering, both pulled from a CDN, so the output file works standalone in any modern browser.
Size
0.2 MB
Stars
990
Updated
CommitAug 21
Age
2mo
Commits · 90 Days