Using OKF with Knowledge Catalog to serve context for agents Google Cloud announced that OKF v0.2 bundles can now be published into Knowledge Catalog, Google Cloud's context engine for agents, enabling organization-wide discovery, governance, and secure access. The integration uses a one-time setup and a single push via sample code in the Knowledge Catalog repository, mapping bundle concepts to EntryType 'okf-bundle' and AspectType 'okf' with 13 fields. This allows agents to retrieve context from a governed index alongside existing technical metadata, with IAM-based access control. We continue to iterate on the Open Knowledge Format https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing OKF , an open specification that formalizes the LLM-wiki pattern https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f into a portable, interoperable format. But a big question remains: How can you share and govern access to an OKF bundle across an organization? OKF v0.1 established a portable format for the context agents need: markdown files with YAML frontmatter, one required field, and five conventions. Then, OKF v0.2 https://cloud.google.com/blog/products/data-analytics/okf-v0-2-adds-trust-signals added the trust signals provenance, verification, freshness, attestation that a machine-authored bundle requires to be relied on, allowing a team to publish a trustworthy bundle for its own agents. However, what OKF does not answer is how teams share their bundles across an organization. A git repo per bundle is portable, but it is not searchable alongside the data it describes, it cannot be secured and governed using the same organizational identity and compliance policies, and it does not sit next to the technical metadata schemas, lineage, ownership that data teams already work in. Every downstream agent must know where each bundle resides, and that does not scale beyond a small number of bundles. To scale an OKF bundle across an organization, you can use Knowledge Catalog https://cloud.google.com/products/knowledge-catalog , Google Cloud's context engine for agents. By mapping the bundle onto Knowledge Catalog's existing types https://docs.cloud.google.com/dataplex/docs/catalog-overview terminology , every concept becomes discoverable, governed, and reachable by any agent already reading from the catalog. Every agent that queries Knowledge Catalog reads from one governed index over what the organization already has in BigQuery, Cloud Storage, operational databases, and applications. Each entry carries schema, lineage, ownership, and tags, and can be extended with typed aspects that add domain-specific fields. The same catalog exposes search and cross-project lookup to retrieve optimized context for each agentic query. The context retrieval is secure and governed by IAM controls, so agents can only see the entries they have access to based on IAM identity. Publishing an OKF bundle into Knowledge Catalog takes a one-time setup and a single push. Both use the OKF sample code https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/toolbox/mdcode/demo/okf in the Knowledge Catalog repository, whose wrappers call gcloud dataplex for setup and delegate push to kcmd the Metadata-as-Code CLI in the same repository . The setup registers three Knowledge Catalog resources: an EntryGroup to hold the bundle, an EntryType named okf-bundle for its concepts, and an AspectType named okf that carries the OKF signal fields from the okf-aspect.json schema in the sample code https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/toolbox/mdcode/demo/okf . The push then creates one okf-bundle Entry per concept, each with two Aspects: an overview Aspect for the markdown body, and an okf Aspect for the structured signals. Display name, description, and tags live on the Entry itself. The bundle's index.md navigation files and its root log.md are also published as Entries: index files carry only the overview Aspect no OKF frontmatter , and log.md carries both Aspects with okf type: Log . Everything Knowledge Catalog already does for technical metadata search, IAM, lineage, cross-project discovery applies equally to OKF bundles, alongside the data they describe. The okf-aspect.json https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/toolbox/mdcode/demo/okf/okf-aspect.json schema in the sample code defines the AspectType. It carries 13 fields covering the full | | | | | |---|---|---|---| | 1 | | string | The OKF document type freeform, e.g. | | 2 | | record | Actor and timestamp for the last meaningful change. | | 3 | | array of | Materials the concept derives from, with credibility signals. | | 4 | | array of | Verification events. A | | 5 | | string | Lifecycle state: | | 6 | | datetime | Absolute point in time RFC3339 with an explicit offset on or after which the content is stale. | | 7 | | record | Period the source usage counts were measured over. | | 8 | | string | How an Attested Computation runs e.g., | | 9 | | array of | Typed named holes a caller may fill. The only surface a caller may vary. | | 10 | | string | Path to a file holding the computation body. | | 11 | | record | How the computation runs and what evidence it must return. | | 12 | | record | Deterministic code that takes a receipt and returns a verdict. | | 13 | | string | Producer-defined frontmatter the template does not model, as JSON | Every field is annotated with a display name, a description, and a mandatory index. Any top-level scalar field in the okf Aspect okf type , status , stale after , runtime , computation , extra can drive Knowledge Catalog search predicates directly, so aspect:acme-analytics.us-central1.okf.okf type=Metric returns every OKF Metric in scope. Scalar subfields of record fields generated.by , usage window.from , executor.resource , attester.resource also drive predicates. The array fields sources , verified , parameters are not server-side searchable on their subfields; agents narrow on them client-side after entries.get with view=ALL . One caveat for search predicates on datetime -typed fields stale after , generated.at , usage window.from / .to , use a bare date stale after=2026-12-31 or a range comparison stale after 2026-01-01 , not the full RFC3339 timestamp. kcmd push reads an OKF bundle from git and writes each concept as an Entry in the target Knowledge Catalog EntryGroup. index.md files become Entries too, and each concept is parented to the index above it, so the bundle's directory structure survives as a browsable hierarchy. kcmd expects a bundle in the Documents Layout: markdown files under a catalog/ subdirectory, and a catalog.yaml at the bundle root that lists the snapshot's entry and aspect types. The sample code https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/toolbox/mdcode/demo/okf 's setup.ts generates catalog.yaml from its --entry-group flag default okf demo , so a reader wiring the sample to a new bundle passes the flag rather than editing catalog.yaml by hand. Here is an end-to-end workflow for the Acme Retail bundle https://github.com/GoogleCloudPlatform/open-knowledge-format/tree/main/bundles/acme retail that we introduced in the OKF v0.2 blog https://cloud.google.com/blog/products/data-analytics/okf-v0-2-adds-trust-signals?e=48754805 : To pick a different EntryGroup name or push a different bundle, pass --entry-group your-name to setup.ts and --bundle path/to/your/bundle to push.ts . For example: bun run setup.ts --entry-group acme-bundle followed by bun run push.ts . This regenerates the manifest, so subsequent push , pull , and cleanup all target the new EG; delete earlier EGs manually with gcloud dataplex entry-groups delete