XDOX — a local documentation & notes assistant for Xojo

XDOX, a local AI assistant for Xojo. It answers questions from the documentation you have installed, and can also store your own notes and pull them into its answers.

Xojo’s Jade already works with local LLMs and project context, so there’s built-in AI assistance now. XDOX is a separate, standalone tool with a slightly different focus: the notes you write — conventions, fixes, project quirks — are retrieved into later answers and take precedence over the docs where they differ. If that idea is useful to anyone, or as inspiration, that’s a good outcome.

A few specifics:

  • 100% local — a bundled llama.cpp server over loopback. No API keys, no cloud, no telemetry.
  • Indexes several installed Xojo versions side by side; notes can be global or tied to a version.
  • A small catalog of chat models (Qwen3, Gemma 3, Phi-4, Qwen2.5 Coder, GPT-OSS, Mistral Small) — pick what fits your RAM, from 8 GB up.
  • The app is Xojo (Desktop, API 2); the UI is HTML/JS in a WebView.

There’s also a companion MCP server, XMCP, that exposes the same knowledge base to coding agents like Claude Code or Codex. Build it yourself from source: GitHub - o3jvind/XMCP · GitHub

Requirements: macOS on Apple Silicon and the Xojo IDE’s local documentation installed. The download is signed and notarised — no MBS licence needed to run it.

It’s an early v0.1.0, firmly pre-1.0 — expect rough edges, and note that a schema change in a future update will rebuild the index and clear saved notes.

Download & source: https://github.com/o3jvind/XDOX/releases/tag/v0.1.0

Feedback and questions welcome.

XDOX 0.2.0 — MBS docs, and dropping the chat-completion model entirely

Two real changes since 0.1.0, one of which walks back something I pitched in the original post.

MBS Xojo Plugins docs are now indexed too, alongside the built-in Xojo docs (Tools → Index MBS Docs…, point it at your MBS.docset). The MBS docs are huge and dense — thousands of classes across dozens of plugins — and it’s genuinely easy to not know a class or method exists unless you already know what to search for. This puts the same semantic/keyword hybrid search XDOX does over the native docs on top of MBS’s own docs too, so a question phrased in plain English can surface the right MBS class even if you don’t know its name yet. Native and MBS docs are searched as two independent pools rather than one merged ranking — each gets its own relevance gate, so a strong MBS match doesn’t get crowded out by a generic native chunk (or vice versa). Re-indexing after an MBS update only re-embeds chunks whose content actually changed, not the whole docset again.

One heads-up: indexing the full MBS docset is a lot more content than the native docs (tens of thousands of chunks), so the first index can take a while — mostly the embedding phase, which depends on your hardware. There’s a Pause button now if you need to stop partway and resume later.

The chat-completion model is gone. 0.1.0 shipped with a catalog of local chat models (Qwen3, Gemma 3, Phi-4, Qwen2.5 Coder, GPT-OSS, Mistral Small) that generated conversational replies from the retrieved docs. Over the following weeks it became clear that layer was the weakest part of the tool: it kept fabricating methods, properties, and whole code examples that didn’t exist in the docs it had just retrieved — exactly the failure mode a “trustworthy local answers” tool can’t afford. I pulled it entirely rather than try to prompt-engineer around it. XDOX now renders the retrieved documentation chunks directly as the answer — no generation step between the docs and what you read. Less conversational, but it can’t invent an API. If you updated from 0.1.0 expecting the model picker, it’s gone; the app now only downloads/runs the embedding + reranker models it needs for retrieval itself.

Also, from schema 4 onward, index/schema upgrades migrate your database in place instead of wiping it — the “expect notes to get cleared on update” caveat from the 0.1.0 post no longer applies.

A couple of smaller things for anyone curious about the internals:

  • Doc parsing and embedding are now parallelized (worker threads + concurrent embed-server slots), which helps with the MBS docset’s size specifically.

  • There’s a small, known, low-impact race in the parallel MBS parser — on the order of 0.1–0.2% of chunks can end up with a stray un-decoded HTML entity (e.g. ") if the docset changed since the last index. No data loss, just cosmetic; still chasing the root cause if anyone’s hit something similar with Xojo’s preemptive Threads under heavy fan-out.

Signed and notarised, same as before — no MBS licence needed to run it.

Download & changelog: Release XDOX 0.2.0 · o3jvind/XDOX · GitHub

Questions and feedback welcome, as always.