Monday, September 7, 2026

What is ConvertX

ConvertX is a free, open-source, self-hosted online file converter that you can deploy as a single Docker container. Developed by user C4illin on GitHub, it is designed to replace sketchy third-party file conversion websites, giving you 100% data privacy by processing all your files locally on your own server or computer. [1] (https://www.youtube.com/watch?v=3xQvxa7WGFc&t=54), [2] (https://daily.dev/posts/this-docker-container-converts-any-file-to-any-format-so-i-stopped-trusting-sketchy-websites-with-m-9ykzj06el), [3] (https://www.makeuseof.com/ditched-online-file-converters-for-a-docker-container-with-1000-formats/), [4] (https://www.youtube.com/watch?v=aqRr0cijPv0)The technical stack is built on TypeScript, Bun, and Elysia, ensuring the application is incredibly fast and lightweight. [1] (https://www.youtube.com/watch?v=0INt3gFFoEY), [2] (https://www.youtube.com/watch?v=3xQvxa7WGFc&t=54)


How It Works: "20 Engines in a Trenchcoat"Rather than writing conversion tools from scratch, ConvertX wraps over 20 well-known open-source backend conversion engines into a single unified graphical user interface (GUI). When you upload a file, ConvertX automatically passes it to the correct specialized tool: [1] (https://www.xda-developers.com/this-one-docker-container-converts-any-file-to-any-format/), [2] (https://www.makeuseof.com/ditched-online-file-converters-for-a-docker-container-with-1000-formats/), [3] (https://www.youtube.com/watch?v=3xQvxa7WGFc&t=54)🎬 FFmpeg: For high-speed audio and video conversions (e.g., MKV to MP4).🖼️ ImageMagick & GraphicsMagick: For handling complex images and vector assets.📄 LibreOffice & Pandoc: For text documents, spreadsheets, and LaTeX files.📚 Calibre: For e-book conversions.📐 Assimp: For 3D assets and modeling files.Other engines include Inkscape, libheif, Vips, XeLaTeX, Potrace, and Markitdown. [1] (https://www.makeuseof.com/ditched-online-file-converters-for-a-docker-container-with-1000-formats/), [2] (https://www.youtube.com/watch?v=3xQvxa7WGFc&t=54), [3] (https://www.youtube.com/watch?v=0INt3gFFoEY), [4] (https://daily.dev/posts/this-docker-container-converts-any-file-to-any-format-so-i-stopped-trusting-sketchy-websites-with-m-9ykzj06el), [5] (https://www.xda-developers.com/this-one-docker-container-converts-any-file-to-any-format/)Because it links all these engines together, it supports over 1,000 different format combinations


What is NextCloud Self hosting

 Nextcloud is a free, open-source Nextcloud Platform that lets you host your own personal cloud storage, file sync, and collaboration services on your own hardware or server


What is Nextcloud?Nextcloud functions similarly to commercial services like Google Drive or Dropbox, but it gives you complete control and privacy over your data. [1] (https://www.youtube.com/watch?v=jT7CUK5UNrw), [2] (https://www.digitalocean.com/community/tutorial-collections/how-to-install-and-configure-nextcloud), [3] (https://medium.com/@ayanpande/how-i-set-up-my-own-personal-cloud-with-nextcloud-ddb56bd00963)Core Features: File storage, automatic device syncing, calendar, contacts, and notes.Nextcloud Hub: Combines file sharing with online office editing, text chat, and video conferencing (Talk).Self-Hosted: Runs on a local Linux server, a Network Attached Storage (NAS) device, or a rented cloud Virtual Private Server (VPS)


How to Set It Up (Using Docker All-in-One)The easiest way to set up Nextcloud without dealing with complex web server or PHP configurations is using Docker and the official All-in-One (AIO) image


Step 1: Install DockerInstall Docker and Docker Compose on your host system (such as an Ubuntu/Debian Linux server or a compatible NAS). [1] (https://www.youtube.com/watch?v=cSpTo8b7RLs&t=17), [2] (https://nextcloud.com/home-users/)


Step 2: Run the Master ContainerStart the Nextcloud AIO master container using your terminal with a command exposing ports 8080 and 8443:


docker run -d \

  --init \

  --sig-proxy=false \

  --name nextcloud-aio-mastercontainer \

  --restart always \

  -p 8080:8080 \

  -v nextcloud_aio_mastercontainer:/mnt/docker-aio-config \

  -v /var/run/docker.sock:/var/run/docker.sock:ro \

  nextcloud/all-in-one:latest



Step 3: Access the AIO InterfaceOpen your web browser and navigate to https://your-server-ip:8080 or https://localhost:8080.Follow the on-screen setup interface to configure your domain or local address, and let it automatically pull and start the dependent containers (Apache proxy, Nextcloud app server, PostgreSQL database, and Redis cache)


tep 4: Complete the InstallationOnce the containers are running, open the Nextcloud interface on the configured port/domain.Create your admin username and secure password.Choose whether to install recommended productivity apps, then finish and access your new cloud dashboard. [1] (https://www.youtube.com/watch?v=cSpTo8b7RLs&t=17), [2] (https://github.com/nextcloud/all-in-one)


What are Causal AI Models

 Causal AI models are artificial intelligence systems designed to understand and model cause-and-effect relationships rather than just statistical correlations. [1] (https://datapoem.ai/resources/article/what-is-causal-ai)Correlation vs. CausationTraditional AI: Finds patterns and correlations (variables that move together). For example, it might notice that high ice cream sales correlate with high shark attacks. [1] (https://datapoem.ai/resources/article/what-is-causal-ai)Causal AI: Understands the underlying mechanism and determines if one variable actually causes a change in another (the heat drives ice cream and swimming, but ice cream doesn't cause shark attacks). [1] (https://datapoem.ai/resources/article/what-is-causal-ai)How Causal AI WorksCausal Discovery: Algorithms look at data patterns to find potential cause-and-effect links.Structural Causal Models (SCMs): Uses tools like Directed Acyclic Graphs (DAGs) to map dependencies.Counterfactual Reasoning: Asks "what if" scenarios to simulate hypothetical interventions and predict outcomes before they happen in the real world. [1] (https://medium.com/@alexglee/causal-ai-current-state-of-the-art-future-directions-c17ad57ff879), [2] (https://www.infobip.com/glossary/causal-ai)Key BenefitsExplainability: Clearly explains why a decision or prediction was made.Reduced Bias: Explicitly models sensitive variables to detect and mitigate hidden biases.Better Decision-Making: Helps organizations test interventions safely in simulations before real-world deployment. [1] (https://kanerika.com/blogs/causal-ai/), [2] (https://www.techtarget.com/whatis/video/An-explanation-of-causal-AI)Common ApplicationsHealthcare: Evaluating how specific treatments directly impact patient recovery.Sales & Marketing: Figuring out if an ad campaign actually drove a purchase or if the buyer would have bought the product anyway.Supply Chain: Identifying the exact root cause of a production line breakdown. [1] (https://www.techtarget.com/whatis/video/An-explanation-of-causal-AI), [2] (https://kanerika.com/blogs/causal-ai/), [3] (https://datapoem.ai/resources/article/what-is-causal-ai)If you'd like, I can share:Specific Python libraries used to build causal models (like DoWhy or Pyro)How it differs from Generative AI

How does reference_agent work in OKF documentation?

 The reference_agent is primarily an AI-powered OKF documentation/enrichment pipeline. It does not itself create the Acme Retail metrics/, computations/, policies/, skills/, and attesters/ system.


Its implemented source pipeline is currently BigQuery → LLM → OKF documents, optionally followed by a web-crawling/enrichment pass → OKF documents → regenerated indexes.


                 BigQuery Dataset

                        │

                        ▼

              ┌──────────────────┐

              │   BigQuerySource │

              └────────┬─────────┘

                       │

                 discovers concepts

                       │

                       ▼

              ┌──────────────────┐

              │ Reference Agent  │

              │    Gemini LLM    │

              └────────┬─────────┘

                       │

          ┌────────────┼────────────┐

          │            │            │

          ▼            ▼            ▼

      metadata      existing     other

      from BQ         OKF       concepts

          │            │            │

          └────────────┼────────────┘

                       ▼

                 OKF Markdown

                       │

                       ▼

                index.md files

                       │

                       ▼

                 OKF Bundle

                       │

                optional Web Pass

                       │

                       ▼

                 enriched OKF



Google's README explicitly describes the reference agent as a two-pass system:


BQ pass — generates one OKF document per source concept using BigQuery metadata.

Web pass — optionally crawls documentation starting from supplied seed URLs and enriches existing concepts or creates reference documents.


3. The first major component: BigQuerySource


This is where the process starts.


The CLI currently supports:


--source bq


and requires:


--dataset project.dataset


The CLI constructs:


BigQuerySource(

    dataset=args.dataset,

    billing_project=args.billing_project

)



The BigQuerySource uses the Google BigQuery Python client.


4. What does BigQuerySource discover?


This is important.


It doesn't simply dump the BigQuery schema.


It creates concepts.


For example:


BigQuery Dataset

        │

        ├── BigQuery Table

        ├── BigQuery Table

        ├── BigQuery Table

        └── BigQuery Table


The source creates a concept such as:


datasets/my_dataset


with:


type = BigQuery Dataset


and a canonical BigQuery resource URI.


For tables it creates concepts like:


tables/orders

tables/customers

tables/products


with:


type = BigQuery Table



5. It even handles sharded BigQuery tables


There is a nice detail in the implementation.


Suppose your dataset has:


events_20260101

events_20260102

events_20260103

...


The source recognizes these as a sharded table family rather than blindly treating every table as an independent concept.


It detects suffixes using a regex and can create a wildcard concept such as:


tables/events_


with a resource like:


.../tables/events_*


and metadata indicating that it is a wildcard/family.


That's useful because an OKF bundle shouldn't necessarily contain thousands of nearly identical documents for date-sharded tables.


6. Then the agent gets raw metadata


The LLM has a tool called:


read_concept_raw()


This retrieves structured metadata for a concept.


For a BigQuery table, that includes things such as:


schema

nested RECORD fields

partitioning

clustering

row counts

timestamps


The tool implementation explicitly describes these capabilities.


So the LLM isn't guessing the schema.


It receives actual source metadata.



7. The LLM itself is a Google ADK Agent


This is a critical architectural point.


The reference agent is not just a Python script calling Gemini once.


It uses:


from google.adk import Agent


and creates an ADK agent.


The default model is:


gemini-flash-latest


The BQ agent is:


okf_bq_reference_agent


with these tools:


list_concepts

read_concept_raw

sample_rows

read_existing_doc

write_concept_doc


So conceptually:


                  Gemini

                    │

        ┌───────────┼───────────┐

        ▼           ▼           ▼

 list_concepts  read_raw   sample_rows

        │           │           │

        └───────────┼───────────┘

                    │

                    ▼

             reason about data

                    │

                    ▼

             write_concept_doc



8. What instructions does Gemini receive?


This is where prompts/reference_instruction.md becomes very important.


The agent is explicitly instructed to follow a workflow.


For each concept:


Step 1 — Check whether an OKF document already exists

read_existing_doc(concept_id)


If it exists, the agent is supposed to refine it rather than blindly replace it.


That's a significant design choice.


Step 2 — Read the source metadata

read_concept_raw(concept_id)


This gives the LLM the actual structured information from BigQuery.


Step 3 — Optionally sample data

sample_rows(concept_id, n=3)


The agent is allowed to do this when metadata alone isn't enough.


This is particularly useful when the schema is something like:


customer_id

product_id

status

amount

created_at


The schema tells you what the fields are, but sample rows can help the model understand what they actually represent.


9. Then it looks at other concepts


The LLM calls:


list_concepts()


This gives it the other concepts available in the bundle.


Why?


Because the generated documentation can create cross-links.


For example:


orders

   │

   ├──────────────► customers

   │

   └──────────────► products


Rather than creating isolated documents:


orders.md

customers.md

products.md


the agent can create relationships between them.


The prompt specifically tells the agent to use the list of concepts to weave cross-links into its prose.


10. Then Gemini writes the OKF document


The final tool is:


write_concept_doc()


The LLM supplies:


concept_id

frontmatter

body


The tool writes the Markdown file.


The OKF document contains YAML frontmatter and Markdown body. The implementation validates that at least type exists and automatically handles metadata such as generated.


For example, the generated document can conceptually look like:


---

type: BigQuery Table

title: Orders

description: Customer orders placed through the retail platform.

resource: https://bigquery.googleapis.com/...

tags:

  - orders

  - sales

  - transactions

generated:

  by: reference_agent/gemini-...

  at: ...

sources:

  - id: bigquery

    resource: ...

    title: BigQuery metadata

---


The Orders table contains one row per customer order...


# Schema


| Field | Type | Description |

|---|---|---|

| order_id | STRING | Unique order identifier |

| customer_id | STRING | Customer identifier |

| amount | NUMERIC | Order amount |

| created_at | TIMESTAMP | Order creation time |


# Common query patterns


```sql

SELECT ...


The exact content is generated by the model, but the prompt dictates this general structure: description, `# Schema`, and `# Common query patterns`. :contentReference[oaicite:12]{index=12}


---


# 11. So what exactly is AI-generated?


This is worth emphasizing.


The BigQuery API provides:


```text

facts

─────

table name

columns

types

modes

descriptions

partitioning

clustering

row counts

timestamps


The LLM turns those facts into:


knowledge

─────────

human-readable description

semantic interpretation

field explanations

relationships

common query patterns

cross-links

tags


So:


BigQuery Metadata

       │

       ▼

   deterministic

     metadata

       │

       ▼

      Gemini

       │

       ▼

   semantic OKF

   documentation


This is essentially metadata → semantic knowledge transformation.


12. Then comes the Web Pass


This is the second major capability.


You can supply:


--web-seed https://...


or:


--web-seed-file seeds.txt


The CLI also supports:


--web-max-pages

--web-max-depth

--web-allowed-host

--web-allowed-path-prefix

--web-denied-path-substring


So you might give it:


https://developers.google.com/analytics


as a seed.


The web agent doesn't simply download the page.


It crawls selectively.


13. The web agent decides what to follow


The web ingestion prompt tells it to start with the seed URL and follow links that look useful for the existing concepts.


For example:


Seed

 │

 ▼

GA4 documentation

 │

 ├── schema

 │

 ├── dimensions

 │

 ├── metrics

 │

 ├── query examples

 │

 └── unrelated pages


The agent might decide:


schema        → follow

metrics       → follow

query examples → follow

pricing       → skip

login         → skip

marketing     → skip


The crawler has hard limits on:


number of pages

hop depth

allowed hosts

path prefixes

denied path substrings


These are explicitly passed into the web agent.


14. What does the Web Agent do with a page?


For every fetched page, it decides among three possibilities:


A. Enrich an existing concept


For example:


tables/events.md


already exists.


The documentation says:


event_name represents the GA4 event name.


The web agent can augment the existing OKF document with that information.


B. Create a new reference document


For example:


references/event_parameters.md


if the page contains useful material that doesn't naturally belong to one existing concept.


C. Skip it


If it is:


marketing

navigation

login

irrelevant


it can ignore it.


This behavior is explicitly described in the web ingestion workflow.


15. This gives you an important two-pass architecture


The whole thing is:


                 SOURCE PASS

                     │

                     ▼

                BigQuery API

                     │

                     ▼

             discover concepts

                     │

                     ▼

             raw metadata tools

                     │

                     ▼

                 Gemini

                     │

                     ▼

              OKF documents

                     │

                     │

                     ▼

              WEB ENRICHMENT

                     │

                     ▼

                seed URLs

                     │

                     ▼

              Gemini crawler

                     │

           ┌─────────┼─────────┐

           ▼         ▼         ▼

        enrich     create     skip

        concept    reference

           │         │

           └─────────┼─────────┘

                     ▼

               OKF Bundle

                     │

                     ▼

              regenerate indexes


The runner implements exactly this sequence: enrich concepts, optionally run the web pass, then regenerate index.md files.


16. What runner.py is doing


runner.py is effectively the orchestrator.


It creates:


BQ ADK Agent


and, if web seeds are supplied:


Web ADK Agent


It then creates ADK Runner instances and sessions for them.


The BQ flow is approximately:


concepts = source.list_concepts()


for concept in concepts:

    enrich_concept(concept)


run_web_pass()


regenerate_indexes()


That's essentially what enrich_all() does.


17. One particularly useful feature: enrich only one concept


The CLI supports:


--concept tables/orders


and it is repeatable.


So instead of rebuilding everything:


reference-agent enrich \

    --source bq \

    --dataset myproject.sales \

    --out ./bundle \

    --concept tables/orders


you can target a specific concept.


The runner filters the discovered concepts and raises an error if the requested concept doesn't exist.


This is useful for incremental knowledge maintenance.


18. What it does NOT do


This is probably the most important part given your previous question about the Acme Retail bundle.


The reference agent does not appear to automatically discover and create:


metrics/

computations/

policies/

skills/

attesters/


from a BigQuery dataset.


Its documented BQ workflow creates/enriches concepts such as:


datasets/

tables/


and the web pass can create:


references/


The Acme-specific operational artifacts are therefore not something you should assume the reference agent generates automatically.


This is consistent with the current repository architecture and README description of the reference agent.


19. Then what is Acme Retail doing?


This is where the distinction becomes very interesting.


You effectively have:


Reference Agent

             DATA DISCOVERY

                   │

                   ▼

             BigQuery metadata

                   │

                   ▼

             semantic enrichment

                   │

                   ▼

                OKF docs


versus the Acme bundle:


              GOVERNED BUSINESS KNOWLEDGE

                         │

       ┌─────────────────┼─────────────────┐

       ▼                 ▼                 ▼

    Metrics          Policies        Computations

       │                 │                 │

       └─────────────────┼─────────────────┘

                         ▼

                       Skills

                         │

                         ▼

                     Attesters


The latter is an application of the OKF format, not the entire function of reference_agent.


And the current OKF specification is intentionally minimal: Markdown + YAML frontmatter, with no central schema registry or required tooling.


20. The visualization is a separate function


Another important distinction:


reference_agent enrich


and


reference_agent visualize


are separate CLI operations.


The visualization command:


reference-agent visualize \

    --bundle ./my_bundle


doesn't involve Gemini.


It reads the OKF bundle and generates a self-contained:


viz.html


The CLI explicitly describes it as:


Generate a self-contained HTML graph view of an OKF bundle.


and reports the number of concepts and edges generated.


So:


                  reference_agent

                       │

          ┌────────────┴────────────┐

          │                         │

       enrich                    visualize

          │                         │

          ▼                         ▼

     Gemini + BQ              OKF bundle

     + Web                     │

          │                     ▼

          ▼                  viz.html

      OKF files

21. The most important conceptual takeaway


If you're looking at this from your RAG / Agent / Knowledge Graph perspective, I would describe reference_agent as:


An AI-powered knowledge-catalog generation pipeline that converts source-system metadata and authoritative web documentation into interconnected, provenance-aware OKF documents.


It is not primarily a RAG engine.


It is not a vector database.


It is not GraphRAG.


It is not an agent answering end-user questions.


It is essentially a knowledge preparation / knowledge engineering agent.


                 Raw Enterprise Knowledge

                         │

            ┌────────────┴────────────┐

            │                         │

       Structured source          Web docs

       (currently BQ)                │

            │                         │

            ▼                         ▼

       Source tools             Web crawler

            │                         │

            └────────────┬────────────┘

                         ▼

                       Gemini

                         │

                  semantic enrichment

                         │

                         ▼

                  ┌──────────────┐

                  │  OKF Bundle  │

                  └──────┬───────┘

                         │

              ┌──────────┼──────────┐

              ▼          ▼          ▼

             RAG       Agent      Graph UI


And this last architecture is where I think OKF becomes particularly relevant to the work you've been doing with RAG/GraphRAG/agents: instead of asking your RAG pipeline to discover enterprise semantics every time a user asks a question, you can have a separate knowledge-engineering pipeline create and maintain the semantic layer first.


Then your runtime agent consumes that layer.

Analysing OKF samples from OKF Git repository

Exactly. That difference is intentional and quite important. The common directories represent the core OKF knowledge model, while the additional metrics / computations / policies / skills / attesters directories in acme_retail demonstrate a much more operational, governed, executable knowledge system.


The Acme Retail bundle is essentially showing how OKF can move beyond "documentation of data" toward trusted business intelligence that an agent can execute and verify.


Think of the bundles in two layers

Directory Purpose Typical role

datasets/ Describes datasets What data exists?

tables/ Describes BigQuery tables What does each table contain?

references/ Relationships/cross-references How are concepts connected?

metrics/ Business definitions What exactly does "Revenue" mean?

computations/ Approved SQL How should Revenue be calculated?

policies/ Business/Finance rules What rules govern the calculation?

skills/ Agent execution instructions How should an agent perform the calculation?

attesters/ Deterministic verification How do we verify the result?


The first three tell an agent what the data is.


The Acme-specific extensions tell an agent what the business means, how to calculate it, what rules apply, how to execute it, and how to verify the result.


                 OKF Bundle

                     │

       ┌─────────────┴─────────────┐

       │                           │

 Knowledge Layer             Execution Layer

       │                           │

       ▼                           ▼

 datasets                    metrics

 tables                      computations

 references                  policies

                                  │

                                  ▼

                                skills

                                  │

                                  ▼

                              attesters



The first three tell an agent what the data is.


The Acme-specific extensions tell an agent what the business means, how to calculate it, what rules apply, how to execute it, and how to verify the result.


Why metrics is particularly interesting


Suppose Acme Retail asks:


"What was our net revenue last quarter?"


A normal RAG system might retrieve documents containing:


Net Revenue = Revenue - Discounts - Returns


and then ask the LLM to figure out what to do.


Acme's OKF approach can instead have a formal metric:


metrics/

   net_revenue.md


which establishes the business definition.


Then:


net_revenue

      │

      ▼

computation

      │

      ▼

approved SQL

      │

      ▼

BigQuery


This is a major distinction.


The LLM isn't being asked:


"Write some SQL that you think calculates net revenue."


It can be told:


"The organization has already defined and sanctioned how Net Revenue is calculated. Execute that computation."


computations is the next important piece


This is where OKF starts looking like executable knowledge.


For example, conceptually:


metrics/net_revenue.md

          │

          │ defines

          ▼

computations/net_revenue.sql

          │

          │ executes against

          ▼

tables/orders

tables/refunds

tables/discounts


The computation is sanctioned SQL, rather than dynamically generated SQL.


That gives you a much stronger governance model.


Instead of:


User

 ↓

LLM

 ↓

Generate SQL

 ↓

Database


you have:


User

 ↓

Agent

 ↓

Identify metric

 ↓

Find sanctioned computation

 ↓

Execute computation

 ↓

Verify receipt

 ↓

Answer

policies adds the business governance


This is another very interesting part.


Imagine Finance has a policy saying:


Revenue must exclude cancelled orders and recognized revenue must follow a particular accounting rule.


That policy becomes part of the knowledge bundle.


So now the chain can be:


Finance Policy

       │

       ▼

Metric Definition

       │

       ▼

Sanctioned Computation

       │

       ▼

Execution


This is much stronger than simply putting the Finance policy into a vector database and hoping the LLM retrieves it.


skills is where agents come in


This is probably the directory I'd pay the most attention to if you're looking at OKF from an Agent/RAG architecture perspective.


A skill describes how an executor should perform an operation.


Conceptually:


skills/

   calculate_net_revenue.md


could tell an agent something along the lines of:


1. Identify the requested metric.

2. Load the corresponding Attested Computation.

3. Execute against the approved data source.

4. Produce a computation receipt.

5. Pass the receipt to the attester.

6. Only return the result after verification.


So the OKF bundle isn't merely providing information.


It's providing knowledge + instructions + executable artifacts + verification.


And attesters closes the loop


This is the really interesting architecture.


Imagine the computation produces:


Result:


Net Revenue = $12,481,235


You don't necessarily want the LLM to simply say:


"The calculation looks correct."


Instead, an attester can deterministically verify the computation receipt.


So:


                   ┌───────────────┐

                   │    Metric     │

                   └───────┬───────┘

                           │

                           ▼

                   ┌───────────────┐

                   │  Computation  │

                   └───────┬───────┘

                           │

                           ▼

                     ┌───────────┐

                     │ BigQuery  │

                     └─────┬─────┘

                           │

                           ▼

                  Computation Receipt

                           │

                           ▼

                   ┌───────────────┐

                   │    Attester   │

                   └───────┬───────┘

                           │

                     ┌─────┴─────┐

                     │           │

                   VALID       INVALID

                     │

                     ▼

                   Agent

                     │

                     ▼

                  User


That's a very different philosophy from conventional RAG.


This is why Acme Retail is a particularly good example


I would categorize the repository examples roughly like this:


Basic OKF bundles

──────────────────


datasets

   +

tables

   +

references


       ↓


"Understand my data"


whereas:


Acme Retail

──────────────────────────────


datasets

tables

references

      +

metrics

computations

policies

skills

attesters


       ↓


"Understand my business,

execute approved operations,

and prove the result"


That is the part I'd explore if you're evaluating OKF seriously.


It isn't necessarily a replacement for GraphRAG, vector RAG, or a knowledge graph. Rather, it can provide a structured, governed knowledge layer on top of which those systems and agents can operate.


And the Acme Retail example is essentially the repository's demonstration of that idea: "Don't just retrieve knowledge—define what is authoritative, executable, and verifiable."

Sunday, September 6, 2026

How to Run samples in OKF repo?

1. Clone the repository

git clone https://github.com/GoogleCloudPlatform/open-knowledge-format.git

cd open-knowledge-format


he current repository expects Python 3.13 and installs the project in editable mode


python3.13 -m venv .venv

source .venv/bin/activate


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



python -m reference_agent --help


2. Easiest way: use the existing sample bundles


You do not need BigQuery or Gemini initially just to see the visualization.


The repository already contains bundles such as:


GA4

Stack Overflow

Bitcoin

Acme Retail


and each has a viz.html.


For example:


ls bundles


You should see directories similar to:

stackoverflow

crypto_bitcoin

acme_retail


Then generate the visualization yourself:


.venv/bin/python -m reference_agent visualize \

    --bundle ./bundles/ga4


bundles/ga4/viz.html


The visualize command generates a self-contained interactive HTML file, so you don't need to run a web server or database to view it.


3. Open the visualization


On macOS:


open bundles/ga4/viz.html


open bundles/crypto_bitcoin/viz.html


You can also simply double-click the viz.html file in Finder.


The visualization contains a knowledge graph:


              ┌─────────────┐

              │   Dataset   │

              └──────┬──────┘

                     │

          ┌──────────┼──────────┐

          ▼          ▼          ▼

      ┌────────┐ ┌────────┐ ┌────────┐

      │ Table  │ │ Table  │ │ Table  │

      └───┬────┘ └───┬────┘ └───┬────┘

          │          │          │

          └──────────┼──────────┘

                     ▼

               ┌──────────┐

               │Reference │

               └──────────┘



The viewer provides a force-directed graph, concept details, backlinks, search, type filtering, and several graph layouts.


What is Cytoscape.js?

Cytoscape.js is an open-source, fully featured JavaScript library used for graph theory (network) analysis and visualization. It serves as a customizable software building block that allows developers to integrate interactive, responsive network diagrams into web applications, rather than being a standalone, out-of-the-box program

While it was originally designed for biological research and bioinformatics (such as molecular interactions and network biology), it is now used as a general-purpose platform to model relational data like social networks, utility maps, and financial transactions. [1] (https://github.com/cytoscape/cytoscape.js/), [2] (https://blog.js.cytoscape.org/2016/05/24/getting-started/), [3] (https://www.rapidops.com/blog/cytoscape-js/)

Key Features

Interactive Visualization: Out of the box, it supports native touch and mouse gestures, including pinch-to-zoom, box selection, and panning across desktop and mobile browsers.

Graph Theory Analysis: The library includes built-in functions for complex mathematical graph operations, data analysis, and running layout algorithms.

Headless Support: You can run it "headlessly" in server-side environments like Node.js to perform data analysis without rendering a visual interface

Data Formatting: It organizes network architecture and data tables inside the same object and relies on JSON as its primary data exchange format

Extensible Architecture: It features a large ecosystem of plugins that let developers easily append extra layouts, custom file-format parsers, and UI mechanics


Relationship to Cytoscape Desktop

Cytoscape.js is the spiritual successor to Cytoscape Web. Although it shares design concepts (like "Visual Styles") with the heavy-duty Cytoscape Desktop application, their codebases are entirely independent. Desktop users can seamlessly export their datasets into Cytoscape.js JSON formats to build interactive websites for their research