OTO

FAQ

Does the engine need a model?

No, not to build and not to answer a query. The build, the gates and the server are stdlib Python and call no model. Every query verb and every served tool reads the store directly, and search ranks passages from an index built at compile time, not from embeddings.

Asking in your own words is different. The graph answers a query, not a question: someone turns what was the deductible for a March incident? into entity Collision --as-of 2026-03-01. Either you do it at the terminal, or an agent does it through the query tools. That agent, Claude Code or any MCP client, brings its own model; the engine serves it facts and never calls one itself.

Two places a model is optional: oto draft writes the first draft of a document's proposal for a person to review, with the draft extra and an API key, and the bench's dense baseline needs the bench extra.

Who turns the text into facts?

An agent, for any real corpus. Ingest extracts a document's text; it does not decide what the text means. Someone then reads it and writes a proposal: which sentences are facts, which class each belongs to, which relations connect them, with the sentence as evidence. In Claude Code the build-knowledge-base skill has the agent do this one document at a time, and oto draft does it for one document with a model the engine calls. A person can do it by hand. Whoever writes it, the engine gates the proposal the same way: the vocabulary, the evidence, the supersession record, the privacy scan, and apply by name. From a document to the graph walks the four steps.

Where does my data go?

Nowhere. A project is a directory of files on your machine or in a git repository you control; the build writes a SQLite store beside it; the server listens on localhost unless you bind it elsewhere, and then it demands a bearer token. Neo4j, if you use it, is yours. Publishing a pack or an ontology to a registry pushes only the vocabulary, its reasoning and an invented sample graph, after a scan that refuses any deny term and any personal data.

Is it free?

Yes, and open: the engine is Apache-2.0 and stays so, and the ontologies, packs and skills in the catalog come with it. Clone it, run it, build a graph of your own documents, publish a registry of your own.

What does "controlled vocabulary" mean here?

That the ontology is the only vocabulary the graph and the agent use. Every class and relation is declared, with a reason and the person who confirmed it, and the build refuses a fact outside it. An agent on the graph proposes in those terms, answers in them with a citation, and can only act through the actions the graph declares, on the entities it holds, with every response written back. Three things follow: accuracy, because a fact cannot drift into an undefined word; alignment, because the agent reasons in the enterprise's own terms; and a bounded reach with a trail, which is what security means for an agent.

Does it need Claude Code?

No. OTO is built and tested with Claude Code, and that is the harness the getting-started page uses. The skills are Markdown playbooks in the repository, and the query tools are a standard MCP server over stdio or HTTP, so a harness of your choice can load them. We are working to test others; say which one you use.

Can I run a private catalog?

Yes. A registry is a git repository you own; oto ontology publish and oto pack publish write into it, oto registry site generates its catalog, and Claude Code adds it as a marketplace. Companies run their own; the public catalog is one of many.

Why does the build refuse my graph?

Because the graph uses a class or a relation the ontology does not declare, or an attribute typed differently from its declaration. That refusal is the point: the ontology is the contract, and a graph that drifts from it would answer questions with words nobody defined. oto ontology widen proposes the declarations the data implies; you accept them or fix the data.

What is the difference between an ontology and a pack?

An ontology is what a project starts from: the vocabulary, its recorded reasoning, its rules, a sample, a guide, its actions. A pack is what a person installs into Claude Code: an ontology embedded with everything it extends, the skills that know how to use it, and the views that show its graph. The catalog lists both.

Why is the previous fact kept when I correct one?

Because a correction is a fact about time, not an edit. The old fact is superseded, with the date, and stays queryable, so "what did we believe in March" has an answer and an audit has a trail. Nothing in the graph is ever overwritten.

Where is the code?

github.com/Cynergis/oto. Contributions take a Developer Certificate of Origin sign-off; the repository's CONTRIBUTING file says how.