OpenKnowledge

v0.29.0

Released Jul 10, 2026. Part of the OpenKnowledge changelog.

Minor Changes

  • First-class support for Google Antigravity — the agentic IDE and the agy terminal agent (the Gemini CLI's successor). ok init now registers the OpenKnowledge MCP server for Antigravity, writing the standard mcpServers entry (the same resilient launcher every other editor gets) into Antigravity's single user-global config at ~/.gemini/config/mcp_config.json, shared by the IDE and agy alike. Antigravity has no project-scoped MCP config, so — like Claude Desktop and OpenClaw — it registers once at user scope, gated on the ~/.gemini/ home existing so a config is never written for a tool that isn't installed. It also appears in the macOS desktop app's consent dialog and is healed by the startup repair/reclaim sweeps.

    Antigravity also joins the docked-terminal launch registry: the OpenKnowledge desktop app's "Open in Antigravity" action launches agy '<prompt>' in the docked terminal, scoped to the current doc, folder, or project. The row appears only when agy is detected on your PATH. A new integrations docs page covers MCP setup and the agy CLI.

  • Built-in terminal now auto-approves OpenKnowledge's own tools for agents it launches, so the read/write loop runs without a per-call approval wall. Claude gets an allow-list (OK's MCP tools + the ok open command) with a deny-list that keeps delete/move/share_link/install prompting; Codex gets its per-server approve mode. Other shell commands, non-OK file edits, and other MCP servers stay gated as before. Applied per launch (nothing written to your CLI config files). Toggle in Settings → Terminal ("Let agents use OpenKnowledge without asking", agents.autoApproveOkTools), on by default, per machine. When Codex is installed but OpenKnowledge isn't configured for it, the toggle says so instead of letting Codex quietly keep asking.

Patch Changes

  • Fix "clone to a new folder" (Open shared document) failing with Use of "EDITOR" is not permitted without enabling allowUnsafeEditor for anyone who has EDITOR or GIT_EDITOR set in their environment — i.e. most developers. ok clone runs git as the user with the user's own environment, and simple-git 3.36 refuses to run when it sees an editor env var present (it checks presence, not value) unless explicitly told the env is trusted. The clone path already opted into the sibling PAGER / SSH / askpass flags for the same reason; this adds the missing allowUnsafeEditor opt-in. A clone never launches an editor, so honoring the env is safe.

    Also hardens the background sync path: the server's git merge now runs with GIT_MERGE_AUTOEDIT=no, so a merge commit can never launch an editor and hang the TTY-less sync process.

  • Fix the write and edit MCP tools failing with a schema-conversion error on constrained-decoding hosts like LM Studio (Error resolving ref #/definitions/__schema0). Their frontmatter field advertised a recursive JSON Schema ($ref: "#/definitions/__schema0"); LM Studio — and some function-calling APIs like Gemini — can't resolve an intra-schema $ref in a tool definition and reject the whole tool. Claude and most MCP clients resolve it leniently, so this only surfaced on local-inference hosts.

    The frontmatter value now advertises a flat, $ref-free JSON Schema (scalar | array | object | null), while a runtime refinement re-applies the exact recursive validation — so accepted/rejected inputs are unchanged for every client and every write path (nested null is still rejected, deep nesting and heterogeneous arrays still accepted). Added a test that compiles every tool's input and output schema and fails if any emits a $ref, so this can't silently regress.

  • Keyboard shortcuts for staging a selection into an AI CLI in the terminal, plus new terminal tabs:

    • ⌘J (Show/Hide Terminal): with text selected in the editor, ⌘J stages that selection into an AI CLI's input in the terminal — not submitted, so you can add context and press Enter yourself. If the active tab is already running a CLI (claude/codex/…), the passage goes into its prompt (no screen wipe); otherwise a new CLI tab opens and the passage is staged into it. With no selection, ⌘J toggles the terminal as before.
    • ⇧⌘J: opens a new terminal tab. With text selected, it opens a new CLI tab with the passage staged into its input; with no selection, it starts a new chat with your preferred CLI.

    The passage is grounded the same way the "Ask AI" selection button does (doc reference + text). Nothing is auto-run — the selection is staged for you to review, extend, and send. Brings AI-in-terminal keyboard parity with Cursor/Zed/VS Code.

  • Add LM Studio as a supported AI tool. ok init and the desktop consent dialog now register the OpenKnowledge MCP server into LM Studio's mcp.json, so a locally-hosted model in LM Studio's chat can read, search, and write your knowledge base through OK's tools — fully local inference, nothing leaves your machine.

    LM Studio is an MCP host that follows Cursor's mcp.json notation, so the entry is the same resilient stdio launcher every other editor gets. It's user-global only (no project-scoped config, like Claude Desktop). OpenKnowledge probes both the documented ~/.lmstudio/mcp.json and the location LM Studio actually uses on macOS (~/.cache/lm-studio/mcp.json, per lmstudio-ai/lmstudio-bug-tracker#1371) and writes wherever LM Studio already keeps its config.

View v0.29.0 on GitHub