Frontmatter5 fields
type- Changelog
title- CLI Changelog
description- Release-level history for the Open Knowledge CLI.
tagstimestamp
CLI Changelog
Current behavior belongs in the command reference. This page records release-level changes.
Unreleased
2026-07-31 — Bounded scheduled-job storage
- A scheduled job now runs at most once for each job ID and schedule slot. Repository or job-file changes do not replay the same slot.
- Each private jobs worker now reads its runtime-specific state directory.
- Private workers now remove terminal worktrees and large temporary artifacts after proposal export. Publishers remove branch bundles after publication.
- Source:
packages/cli/internal/agents/plan.go,packages/cli/cmd/openknowledge/runtime_worker.go. - Docs:
Wiki/features/commands/jobs.md,Wiki/features/commands/runtime.md.
2026-07-31 — Open-ended agent setup
- Bare
okn setupnow prints the open-ended setup interview forWiki. - The README and website now show setup with an existing agent or a selected CLI runtime.
- The website copy action now gives an agent installation, verification, and setup instructions.
- The README workflow diagram now includes MCP.
- Source:
packages/cli/cmd/openknowledge/setup_command.go,packages/web/index.html. - Docs:
README.md,Wiki/features/commands/setup.md.
v0.9.0 — 2026-07-30
2026-07-30 — Automatic release version update
- The manual release workflow now updates all package and CLI versions from the requested release version.
- The workflow runs the release checks before it creates and pushes the version commit. Release tags and npm packages use that verified commit.
- Source:
.github/workflows/release.yml,scripts/set-release-version.mjs. - Docs:
Wiki/features/operations.md.
2026-07-30 — Streamlined multi-panel viewer
- The viewer no longer duplicates open panels in a fixed bottom navigator.
- Links open beside the active panel by default. The current panel mode remains available through the header control.
- Each panel keeps its close control. The horizontal scroll rail remains available for multi-panel navigation.
- Source:
packages/web/src/viewer/,packages/web/scripts/browser.e2e.mjs. - Docs:
Wiki/features/commands/view.md.
2026-07-29 — Focused viewer navigation
- A persistent header control now selects the current panel mode or the open-beside mode. Shift temporarily uses the other mode.
- A visible navigator now lists open panels and can close one panel or all panels.
- Search results now group section matches by document. The file explorer now reveals the active branch and can collapse directories.
- The knowledge graph now reports its selected note and connection count. A left detail panel now keeps graph instructions outside the canvas. High-contrast mode also applies to graph colors.
- Viewer settings now provide a reset-to-defaults action.
- Source:
packages/web/src/viewer/,packages/web/scripts/browser.e2e.mjs. - Docs:
Wiki/features/commands/view.md.
2026-07-29 — Unified product story
- The website, README, npm package, wiki, setup prompt, and root help now use one product description.
- The description presents flexible Markdown knowledge bases that agents can create, retrieve, maintain, validate, and publish for different use cases.
- Source:
packages/web/,packages/npm/README.md,packages/cli/{cmd/openknowledge,internal/okf/setup.go}. - Docs:
README.md,Wiki/index.md.
2026-07-28 — Shared Vite viewer build
- Vite built the landing page and the shared viewer assets.
- The web workspace added TypeScript checks and Oxlint.
- Local and static viewers used the same generated JavaScript and CSS bundle.
- Static HTML pages referenced one shared data file instead of embedding the complete note collection in every page.
- Static exports became independent of installed editor applications and supported nested pages through direct
file://URLs. - Browser tests covered Mermaid errors and direct file viewing.
- Source:
packages/web/src/,packages/web/vite*.config.ts,packages/cli/cmd/openknowledge/{viewer_export,viewer_assets}.go. - Docs:
Wiki/features/{exporters/html,commands/view,operations}.md.
2026-07-28 — Explicit automation namespace
okn automationbecame the canonical namespace forjobs,insights,runtime, anddeploy.- Root help separated local work, sharing, and automation.
- The old top-level forms remained functional as hidden compatibility aliases.
- JSON error envelopes reported the canonical automation command identity for both forms.
- Generated job and deployment commands used the automation namespace.
- Source:
packages/cli/cmd/openknowledge/{automation_command,command_catalog}.go. - Docs:
Wiki/features/commands/{automation,index,help}.md,Wiki/features/tooling-model.md.
2026-07-28 — Runtime-specific project integration
okn integration installinstalled only the selected runtime skill.- Session observation became opt-in through
--observe. - The new
statuscommand reported missing and modified managed files without changing them. - The new
removecommand deleted unchanged owned files. It preserved user changes and unrelated hook settings. - The integration manifest restricted managed paths to the selected runtime.
okn agent integrateremained as a deprecated alias.- Automated
okn setup --agentinstalled the selected skill without an observation hook. - Source:
packages/cli/cmd/openknowledge/{integrate_command,setup_command}.go,packages/cli/internal/integration/{integration,manage}.go. - Docs:
Wiki/features/commands/{integration,integrate,setup}.md.
2026-07-28 — Focused README
- The README became a short product entrypoint.
- It now gives one setup path, one local usage path, and one publication path.
- Publication guidance now distinguishes a local public bundle from deployment and a live HTTP MCP endpoint. It also states the Markdown publication default.
- Detailed command, runtime, deployment, validation, and release information now stays in the current-state wiki.
- The product summary now matches the workflow groups in CLI help and the wiki.
- Docs:
README.md,Wiki/features/.
2026-07-28 — Portable setup by default
okn setupprinted portable instructions by default.- The new
--agentflag ran the instructions, validated the result, and installed project integration. - If
--runtimewas absent, interactive agent mode detected installed runtimes and asked the user to select one. - Non-interactive agent mode required
--runtime. - Source:
packages/cli/cmd/openknowledge/{command_catalog,setup_command}.go. - Docs:
Wiki/features/commands/{index,setup}.md,Wiki/index.md.
2026-07-28 — Mermaid diagrams in the viewer
- The viewer rendered fenced
mermaidblocks as theme-aware diagrams on local and static pages. The viewer no longer displayed these blocks as ordinary code. - The viewer kept the escaped source visible when Mermaid was unavailable or a diagram was invalid.
- The viewer configured Mermaid with strict security mode for generated SVG.
- Source:
packages/cli/internal/okf/markdown.go,packages/cli/cmd/openknowledge/{viewer,viewer_assets}.go,packages/web/src/viewer/. - Docs:
Wiki/features/commands/view.md,Wiki/features/exporters/html.md.
2026-07-28 — Focused onboarding and document-coherent retrieval
- The CLI reduced project activation to
openknowledge setup. The zero-argument command used the current repository as its source and wroteWiki. - Explicit targets and alternate sources remained optional workflows. The viewer, publishing, registry, runtime, jobs, scaffold, and portable prompts also remained optional.
- Section ranking included whole-document evidence, filename relevance, stronger body evidence, and query coverage. These changes let overview documents compete with specialized pages.
- Context packing preserved the strongest lexical seeds. It added siblings from the same document and parent or child evidence.
- Context packing labeled non-lexical hierarchy as
document-context. It truncated prioritized oversized evidence. It did not skip that evidence for lower-ranked sections. - Source:
packages/cli/cmd/openknowledge/{command_catalog,setup_command}.go,packages/cli/internal/okf/{search_knowledge,context_selection,setup,from,new}.go,packages/cli/schemas/v1/search-context.schema.json. - Docs:
README.md,packages/web/index.html,Wiki/features/commands/{index,setup,search}.md.
2026-07-28 — Onboarding, release, and verification hardening
- The
setupcommand verified the selected agent executable before it started the interactive workflow. - The CLI added exact recovery guidance for doctor and authentication failures.
- One command catalog replaced duplicate root command dispatch and help definitions.
- An explicit writer handled diagnostics. The CLI no longer replaced the process-wide standard error stream temporarily.
- The release workflow closed the shell injection path for manual release input.
- A YAML parser and regression tests replaced text-based permission scans.
- The shell installer rejected custom plain-HTTP mirrors before download. It retained
file://only for controlled local transaction tests. - The pull-request workflow added security scans, race tests, coverage runs, and CLI certification on Linux, macOS, and Windows.
- Verification added Node 18 compatibility, packed npm installation, browser setup, search, and keyboard journeys.
- Verification also added pre-tag GoReleaser snapshot checks.
- The verification suite added parser/archive fuzz targets.
- It also added 100/1,000/10,000-section search/index benchmarks.
- The README, website, and command or operations references clarified the canonical zero-argument
setuppath and runtime recovery. - These references also clarified fail-closed publication permission and the default validation warning policy.
- Source:
packages/cli/cmd/openknowledge/{setup_command,command_catalog,cli_io}.go,packages/cli/internal/okf/{fuzz,search_benchmark}_test.go,packages/cli/internal/tools/checkworkflowpermissions/,.github/workflows/{ci,release,security}.yml,scripts/,packages/web/scripts/browser.e2e.mjs. - Docs:
README.md,packages/web/index.html,Wiki/features/commands/setup.md,Wiki/features/operations.md.
2026-07-21 — Anchor-aware graph retrieval
- Machine-readable links preserved canonical Markdown fragments. Search graphs and one-hop outgoing or backlink expansion resolved each fragment to its content chunk.
- Lower-level headings resolved to their containing retrieval chunk. Missing fragments no longer resolved to an unrelated first chunk.
- Parallel source and search graph edges preserved repeated authored links. Each occurrence kept its href, label, target anchor, and source line.
- The strongest relationship-derived score promoted weak lexical matches. Search did not discard graph evidence or return a duplicate result.
- Each context index included an immutable BM25 corpus. Generation-scoped caches no longer tokenized the complete corpus for each query.
- Source:
packages/cli/internal/okf/ast_links.go,packages/cli/internal/okf/context_sections.go,packages/cli/internal/okf/graph.go,packages/cli/internal/okf/search_knowledge.go,packages/cli/schemas/v1/common.schema.json,packages/cli/schemas/v1/graph.schema.json. - Docs:
Wiki/features/exporters/graph.md,Wiki/features/commands/search.md.
2026-07-19 — Generation-scoped runtime search indexes
- The runtime built each search context index once before it activated the immutable generation.
- The runtime reused the index for
_searchrequests. It no longer parsed and validated the search projection for each query. - A new content digest replaced the cached index atomically. A failed index build retained the last valid generation.
- Source:
packages/cli/cmd/openknowledge/runtime_serve.go,packages/cli/cmd/openknowledge/runtime_command_test.go. - Docs:
Wiki/features/commands/runtime.md.
2026-07-18 — Static viewer CSP compatibility
- The exporter moved generated viewer JavaScript from executable inline
<script>blocks to same-origin assets. - Railway and runtime deployments then worked with the default
script-src 'self' https:policy withoutunsafe-inline. - Runtime viewer pages and assets used
Cache-Control: no-cachefor revalidation. - Browsers no longer retained an older generation after a source-triggered deployment.
- Deployment-owned head injection remained explicit. Some deployments still required a deployment-specific nonce or hash for custom inline scripts.
- The
--script-srcoption remained compatible with permitted external sources. - Source:
packages/cli/cmd/openknowledge/viewer.go,packages/cli/cmd/openknowledge/viewer_test.go,packages/cli/cmd/openknowledge/runtime_serve.go,packages/cli/cmd/openknowledge/runtime_command_test.go. - Docs:
Wiki/features/exporters/html.md,Wiki/features/commands/runtime.md.
2026-07-18 — Private Railway endpoint reconciliation
- The
--no-public-endpointoption listed and deleted existing Railway service domains and custom domains. - The option no longer trusted possibly stale local endpoint state.
- Source:
packages/cli/cmd/openknowledge/deploy_command.go.
2026-07-18 — Railway prune removes service volumes
- The
--pruneoption listed and deleted persistent volumes for omitted services before it deleted those services. - This sequence prevented provider-orphaned agent state during migration to the immutable one-service topology.
- Source:
packages/cli/cmd/openknowledge/deploy_command.go.
2026-07-18 — Immutable Railway deployment by default
- The default Railway topology changed to one
serveservice. - Its multi-stage Docker image built and embedded the knowledge artifact for the source commit that triggered the build.
- The
--runtimesoption made Git polling, the private publisher, persistent agent state, and isolated workers explicit. - Deployment no longer inferred enabled jobs.
- Default deployment requirements no longer included GitHub, model, artifact-sync, or exchange credentials.
- The project added a committed generated
runtime.toml. - The generated image started as
serve. The image supported local tests without Railway-specific variables. - The
--pruneoption provided an explicit fail-closed migration path. It deleted publisher and worker services that the new topology omitted. - Existing deployments required a reviewed dry run before migration. The migration command was
openknowledge deploy railway Wiki --prune --yes. - Source:
packages/cli/cmd/openknowledge/deploy_command.go,packages/cli/cmd/openknowledge/deploy_runtime_scaffold.go. - Docs:
README.md,Wiki/features/commands/deploy.md,Wiki/features/commands/runtime.md.
2026-07-18 — Runtime log severity
- The runtime moved successful lifecycle events from standard error to standard output.
- Railway and other hosting platforms no longer classified healthy listening, synchronization, publication, or activation messages as errors.
- Usage diagnostics, failed passes, retained-generation warnings, and archive failures remained on standard error.
- Source:
packages/cli/cmd/openknowledge/runtime_command.go,packages/cli/cmd/openknowledge/runtime_private_api.go,packages/cli/cmd/openknowledge/runtime_serve.go,packages/cli/cmd/openknowledge/runtime_worker.go. - Docs:
Wiki/features/commands/runtime.md.
v0.7.2 — 2026-07-18
This cumulative section records the v0.7 release line. v0.7.0 moved Railway to a repository-owned runtime, v0.7.1 removed a redundant source redeploy, and v0.7.2 completed non-root persistent-volume startup.
2026-07-18 — Repository-owned Railway runtime
- The CLI added
openknowledge deploy railway init. This command generated a project-owned non-root runtime Dockerfile. - The Dockerfile used independent Open Knowledge and agent CLI pins. The
--forceoption was necessary to replace existing project choices. - Railway provisioning changed from published GHCR role images to the target GitHub repository source.
- Services shared the committed Dockerfile. They retained separate roles, ingress, volumes, and credentials.
- The migration converted version 1 deployment state to repository sources in place.
- The release workflow no longer published runtime images.
- The Railway source connection became the initial deployment trigger. The CLI no longer issued an immediate conflicting redeploy.
- During startup, the generated entrypoint repaired persistent-volume ownership. It then dropped to UID/GID
10001. - The ownership repair also supported volumes that an older root-based runtime image created.
- Source:
packages/cli/cmd/openknowledge/deploy_runtime_scaffold.go,packages/cli/cmd/openknowledge/deploy_command.go,.github/workflows/release.yml.
2026-07-18 — Railway non-root volume startup
- Publisher checkout, build, and lock state remained on ephemeral container storage.
- Published artifacts and exchange data remained on the persistent Railway volume.
- Worker state used a process-owned child directory below its mount.
- The runtime avoided redundant permission changes when its state directory was already private. It still restricted a permissive existing directory.
- An ephemeral Basic extra header authenticated private GitHub Smart HTTP clone and fetch operations. It replaced a rejected Bearer header.
- Credentials remained absent from repository URLs and command arguments.
- Source:
packages/cli/cmd/openknowledge/deploy_command.go,packages/cli/cmd/openknowledge/runtime_worker.go.
2026-07-18 — Short CLI alias
- The shell and npm installers added
oknas an installed alias foropenknowledge. They retained the original command name. - The shell installer refused to overwrite an unrelated existing
okncommand. - Source:
install,scripts/test-install.sh,packages/npm/.
2026-07-18 — Railway CLI v5 deployment recovery
- The CLI separated Railway progress diagnostics from JSON standard output.
- Successful v5 service creation then recorded provider IDs. It did not fail after mutation.
- The v5 volume command placed the service selector before the nested subcommand. It addressed the service by provider ID.
- The CLI saved the selected existing project before service creation.
- An interrupted first apply left recoverable secret-free state.
- Source:
packages/cli/cmd/openknowledge/deploy_command.go.
2026-07-18 — CLI-led onboarding
- The CLI, README, and website established
openknowledge setup Wiki --from .as the primary project-wiki activation path. - Documentation clarified that
setuplaunched the selected agent. The command then validated the bundle and installed project integration. - The
scaffoldcommand remained the deterministic agent-free primitive. - Documentation added
runtime build --out <dir>. It included the single-selection requirement and versioned result shape. - Source:
packages/cli/cmd/openknowledge/{main,setup_command,runtime_command}.go.
2026-07-17 — Workflow-oriented command surface
- The CLI consolidated managed onboarding under
setup. - Portable instructions moved to
prompt setup|from|rules|review. - The CLI renamed
newtoscaffoldandtotoexport. - It renamed the experimental
agentsgroup tojobs. It also renamed detachedspawntostart. - Connection changes remained under
connectanddisconnect. - The
registrycommand owned listing, integrity status, refresh, and path resolution. - Root help used create/maintain, use/publish, service, and validate/connect workflows.
- Source:
packages/cli/cmd/openknowledge/{main,setup_command,prompt_command}.go.
2026-07-17 — Agents, insights, and jobs
- The CLI added a steered local
agentinterface for Codex, Claude Code, and OpenCode. - The interface supported interactive and non-interactive modes, executable discovery,
doctor, model overrides, and optional isolated worktrees. - The CLI added project and global integration with bounded observation hooks.
- The
insightscommand became the shared interface for deterministic capture, review, dismissal, direct execution, and scheduled processing of private knowledge gaps. - Job and service runtimes supported the same three harnesses.
- Jobs used strict runtime and model selection, per-harness credential scoping, external private state, observable detached runs, cancellation, and versioned records.
- Source:
packages/cli/cmd/openknowledge/{agent_command,insights_command,agents_command}.go,packages/cli/internal/{agents,insights,integration}/.
2026-07-17 — Isolated runtime and Railway deployment
- The runtime added immutable generation planning, building, serving, and private worker reconciliation.
- These features supported one repository and multiple routed knowledge bases.
- The runtime separated GitHub publication from model execution.
- The publisher, serve service, and each harness worker used distinct images, credentials, volumes, and network boundaries.
- The CLI added
deploy railwaywith secret-free dry runs and explicit mutation consent. - The command also provided idempotent state, generated, custom, or private endpoint modes, and worker inference from enabled jobs.
- The runtime added authenticated private artifact and Git-bundle exchange for providers without shared volumes.
- Invalid updates retained the last verified generation.
- Source:
packages/cli/cmd/openknowledge/runtime_*.go,packages/cli/cmd/openknowledge/deploy_command.go,packages/cli/internal/runtime/,docker/runtime.Dockerfile,deploy/runtime/.
2026-07-17 — Explicit publication contract
- Public HTML, portable public source, and runtime generation failed closed unless
[publish] enabled = true. - The project added
okf_targets.viewer|search|mcp|llms|sitemap. - The runtime used separate projections for the viewer, search, and MCP.
- Public non-Markdown files included only
[publish].assets. - Artifacts excluded project configuration,
.openknowledgestate, denied Markdown, and assets outside the allowlist. - Source:
packages/cli/internal/okf/{project_config,publish}.go,packages/cli/internal/runtime/generation.go.
2026-07-15 — Machine and retrieval contracts
- The CLI added versioned JSON envelopes and published Draft 2020-12 schemas.
- The schemas covered CLI errors, AST, validation, bundle, list, registry, search, context, federation, graphs, jobs, portable manifests, and storage records.
- The root command added the
--error-format text|jsondiagnostic envelope. - Search added revision-bound provenance with content digests and
okf+sha256://locators. - Search also added registry-wide reciprocal-rank fusion.
- The project added a public read-only Go API. The API supported parsing, validation, retrieval, graphs, and registry resolution.
- Source:
packages/cli/schemas/,packages/cli/internal/okf/,packages/cli/okf/.
2026-07-15 — Remote registry integrity
- The registry added strict versioned registry and provenance storage.
- It also added offline integrity status with atomic refresh and deletion.
- The registry added Git ref and monorepo subdirectory selection.
- It also added source-addressed caches, bounded non-interactive transport, archive limits, staging-tree limits, and secret-safe URL handling.
- Remote materialization used locked sibling staging and transactional publication.
- A failed refresh preserved the previous generation.
- Source:
packages/cli/cmd/openknowledge/main.go,packages/cli/internal/okf/registry.go,packages/cli/schemas/storage/v1/.
2026-07-15 — Viewer, packaging, and release hardening
- The project unified local viewer search with canonical heading-section retrieval and content-bound cache invalidation.
- Registry workspaces followed live validated snapshots.
- The project strengthened static serving, containers, release permissions, workflow pins, scheduled security scans, and npm or shell binary installation.
- The release process added reproducible portable archives and transactional export publication.
- It also added signed release provenance and default-branch-only release dispatch.
- Source:
packages/cli/cmd/openknowledge/viewer*.go,packages/web/,install,packages/npm/,.github/workflows/,Dockerfile.
v0.6.1 — 2026-07-18
- The runtime corrected Railway persistent-volume ownership for isolated runtime roles.
v0.6.0 — 2026-07-18
2026-07-09 — Retrieval and viewer polish
- Search used source-preserving Markdown context as its default output.
- The viewer added typed frontmatter inspection, tag facets, and breadcrumbs.
- It also added reading and accessibility settings, better search navigation, and visual updates.
- The public website and wiki landing page matched the LLM-oriented knowledge workflow.
v0.5.0 — 2026-07-08
- The CLI added source-to-wiki prompts, maintenance rules, advisory review, and the first experimental local job runner.
- It added exact
get, structurallist, rankedsearch, registry-backedview, and search graph workflows. - The viewer added static discovery files, analytics and head injection, and portable viewer connection assets.
- Validation expanded its JSON output and added configurable rule severities.
v0.4.0 — 2026-06-23
- The CLI added AST output, source and search graph exporters, and query-oriented context.
- Bundle commands added key-or-path resolution.
- The viewer improved themes, search highlights, shortcuts, panel navigation, responsive layout, and graph presentation.
- The project added website deployment, install redirects, and static wiki publication.
v0.3.0 — 2026-06-20
- The CLI added connected bundle commands and registry-backed local viewing.
- The exporter added static HTML, portable manifests, and bundle metadata.
- The viewer added themes, syntax highlighting, tables, asset previews, and source links.
- Validation strengthened its UTF-8, frontmatter, Markdown, link, and reserved-file checks.
- The project moved CLI documentation into this colocated OKF wiki.
Initial wiki maintenance — 2026-06-18
- The project added the repository wiki, embedded OKF specification, command references, update workflows, and validation loop.