v1.6.0-rc.2
Released: July 29, 2026
The second release candidate on the 1.6 track. The theme this time is removing the terminal from the setup path: Kunobi can now register itself into seven AI clients from a settings panel — or during first-run onboarding — pin the exact version it installs, and tell you when an update is waiting. Alongside it, a GitHub Actions surface lands in the GitHub extension, Canvas boards become editable and self-refreshing, and Redfish and SNMP graduate to true multi-server fleets. Install from the kunobi-unstable channel to try it; the stable track is unchanged.
Heads Up — the last virtual GitOps kind is gone
The kunobi.ninja/HelmResources kind and the legacy embedded-topology pipeline behind it have been removed, completing the migration announced in the previous release candidate. Every Flow-capable drilldown now reads from the knowledge graph instead. The views look and behave the same, but if you scripted against the virtual kunobi.ninja kind names, they no longer exist. The Helm and HelmHistory list tables remain as they were.
What's New
AI & MCP
- Connect Kunobi to your AI client without touching a terminal — Settings → AI & MCP gains an AI Client Integration panel that installs, repairs and removes the Kunobi MCP server for Claude Code, Claude Desktop, Cursor, Windsurf, Gemini CLI, Codex CLI and GitHub Copilot CLI. Each client shows whether it's detected and whether Kunobi is registered — Configured, Missing, Needs Repair or Unreadable — with a one-click action per row, and a warning when Kunobi is registered nowhere. This replaces the old copy-paste
npx @kunobi/mcp installflow entirely. - Your AI client stops running a stale Kunobi — registrations now pin an exact
@kunobi/mcp@<version>instead of a bare package name, whichnpxwould resolve once and then serve from cache forever. Every client gets an "Update available" pill with one-click update, plus a section-level "Update all", and existing unpinned entries are migrated automatically. Kunobi always installs the exact version it's showing you, so the status and the button can never disagree. - Set it up during onboarding — a new optional Connect AI Tools step in the first-run wizard offers the same client grid, so you can hook up your assistant immediately instead of discovering the feature in Settings later. It's fully skippable.
- Agent Gateway MCP proxies surface through the Kunobi hub — a keyless MCP proxy can now be published over your existing
@kunobi/mcpinstall with a "Publish over Kunobi MCP" checkbox, so its RBAC-filtered tools appear in your assistant with no per-proxy client config. Tools appear when the proxy is running and disappear when it stops. On by default for new keyless MCP proxies.
GitHub Actions
- A full read-only Actions surface in the GitHub extension — three new sections: Runners (status, busy state, version and architecture across your self-hosted fleet), CI (one row per repository with runs, passed, failed, success rate and latest run — drill through to that repo's runs, then its jobs, then the individual steps to pinpoint exactly what failed), and Secrets (an org- and repo-level inventory of names and metadata, with
visibility: allflagged red as the org-wide blast-radius signal). GitHub never returns secret values, and neither does Kunobi. - Every repository is accounted for — the CI table covers all 468 non-archived repositories rather than the subset that happened to return runs, and a repo with no CI, nothing in the scan window, or an access error now says which it is instead of quietly vanishing from the table.
Canvas
- Refine a board instead of re-authoring it — an agent can now read a canvas back and patch it card by card, so a small tweak costs a small change rather than republishing the whole board. A different session can pick up and refine a board created earlier.
- Boards are interactive — click a node in a Graph card and the linked Table row and detail cards follow the selection, in both directions.
- Nothing is lost — every content change is snapshotted, any earlier version restores in one click, and the restore itself is undoable.
- Living boards — cards backed by a tool refresh on their own, showing a "refreshed Xs ago" chip with one-click manual refresh.
- A gallery that behaves — boards can be pinned as favorites and sort above the recency list in both tile and table views; the list orders by when a board last changed, so merely opening one no longer reshuffles everything.
Sources
- Redfish and SNMP become real fleets — both move from a single global connection to a multi-activate fleet: every server or device is a row, you deep-monitor any number of them at once, and entity views (Fans, Temperatures, Drives, Interfaces…) aggregate across the whole activated set with a Server or Device column. "Show me every fan and which server it's on" finally works. Two clear axes throughout — Reachability (connected) and Monitoring (Active / Not active) — with matching Activate/Deactivate controls on the Sources page, the fleet list and the connection modal.
- Redfish servers no longer collide — identity moved off the hardware serial, which is blank on many whitebox and refurbished machines and gets reassigned after a motherboard swap, onto the
host:portyou actually configure. Verified against two physical iDRACs that previously merged into one entry. - Name your SNMP devices — an optional friendly name (e.g. "Core router") becomes the primary label everywhere, falling back to sysName and then host. "Last poll" now reads "5m ago" rather than a raw timestamp.
- Connecting is enough — connecting a per-tab source now auto-selects it and loads its data, with the same ⚡/✨ indicators clusters already use, across Ceph, Cloudflare, GitHub, GitLab, Bitbucket and NATS. No separate select step, and it keeps working across repeated connect/disconnect cycles.
- A friendly prompt instead of a blank table — extension data pages with nothing connected now show a proper empty state with a Manage connections button, matching Kubernetes. Covers every credentialed source.
Agent Gateway
- Pick tools from a list, not from memory — the Tool Access editor now discovers each target's real tools live, over both stdio and streamable-HTTP transports, so a typo can't silently no-op a rule. Rules naming tools that no longer exist are kept, flagged and removable inline rather than dropped. Saving an allow-list is blocked while discovery is incomplete, since that would silently hide everything not yet discovered.
Improvements
- The approval popup explains what it's asking you to approve — pending MCP write requests now carry their parameters as structured data rather than a truncated sentence, show the tool's own description, and mark dry runs before you decide. "View Details" now opens the pending request instead of an audit page that by design only holds resolved operations. Completed audit records render their redacted arguments too.
- The audit trail reaches the whole retained history — the page now loads up to 5,000 records instead of 50, and filters, search and export all reach them. When a view is partial, the page says so and reports how much it covered, rather than answering "no records match".
- Audit exports actually write a file — export now goes through a native Save dialog and writes the complete log in JSON or CSV, opening where you last saved. Previously the action produced no file, no dialog and no error.
- Audit records explain themselves at a glance — the Overview tab now shows the plain-language summary and, for anything that wasn't a success, the denial or failure reason.
- Temporary auto-approval is findable and configurable — "Approve for…" now reads as a real button instead of muted text, keeps its label on narrow windows, and honors the Default Temp Approval Duration setting that was previously dead config. Approval and audit settings enforce their stated minimums, closing a hazard where a maximum of
0silently wiped the entire audit log. - Contextual tips cover the write firewall — new tips explain that AI can read but never change anything by default and that risky actions wait for approval, with a second tip surfacing only while an approval is actually on screen to point at where a running auto-approval window can be reviewed or cancelled.
- Classic Helm releases join the knowledge graph — releases installed with
helm installnow declare their manifest resources in the graph, getting the same treatment Flux and Argo already had. Membership follows deployed-revision semantics, so an upgrade or rollback repoints the relationships. - Footer popovers read as one system — the MCP status popover was the last one on bespoke chrome; it now shares the same card as Extension Updates, Development Tools and Version Information, with a state-tinted status summary and tighter, more consistent rows throughout.
- Agent Gateway's Connect tab tells the truth about routing — it now mirrors the gateway's real model resolution order, so a pattern declared before a literal is shown as winning, a virtual model that intercepts a same-named provider model says so, and unreachable patterns are visible as dead config. Previously it could confidently name a provider that would never see the request.
- The desktop home stops upselling paying users — the embedded home page can now read your plan, so the "Upgrade to Pro" badge is hidden if you're already on Pro.
Bug Fixes
- Updating an extension no longer crashes the app — a hook-slot collision in the connection adapter unmounted the whole window on a routine extension update, leaving force-quit as the only recovery, and the crash dialog never appeared because the reporter was unmounted along with everything else. A failing status-bar widget now degrades to an inline chip instead of taking down every tab. Relatedly, "Update all" now updates extensions one at a time; updating three at once used to restart the app.
- Extension Data pages no longer open blank — Ceph, GitLab, Bitbucket, GitHub and Redfish now render their table on the default view instead of a white page, and extension workspaces finally show a loading spinner instead of "No resources" while a read is still in flight.
- GitHub columns render properly — timestamps and booleans were degrading to raw text (
2026-07-28T11:03:02Z,"true") across the whole extension, and 403 error banners printed a full API URL with its pagination query instead of just the request path. GitLab and Bitbucket share the fix. - The embedded page no longer freezes — after updating extensions or installing dev tools from the footer, the embedded webview stayed hidden once the last item finished and its badge disappeared; recovery required opening and closing another overlay.
- The legal-update notice is readable on the home screen — it rendered behind the native webview on
/home, leaving only a sliver visible, which made it effectively invisible for users without an account. - Sources keyboard shortcuts run the action they advertise — on credentialed sources the keys weren't inert, they fired the wrong action: Backspace connected a source,
oopened the remove dialog,yopened overview. Escape also clears the selection again, and shared-key dispatch is now deterministic rather than decided per launch. - The connection pill opens on the source you're looking at — it used to open on the Kubernetes tab in a GitHub, Ceph or NATS workspace. With many sources the tab strip was clipped at the dialog edge, making trailing sources unreachable; it now scrolls with visible affordances and keeps its content inside the dialog.
- Deep links with query strings work — routes carrying a query string were silently rejected by the navigation allowlist, so the desktop home's Browse extensions and Install your MCP shortcuts did nothing.
- Audit Status reads as an outcome — a successful dry run showed a beaker in Status and a badge in Mode, duplicating the same signal with no success or failure reading; Status now shows Success while Mode keeps the dry-run marker.
- Clear Audit Logs is honest about what it deletes — the confirmation showed the filtered row count while the operation wiped everything, so you could agree to delete 4 records and lose all 11. It now reports the true total and states outright that the filter doesn't apply.
- Agent Gateway edit-time validation — proxies referencing a provider, virtual key or rate limit that doesn't exist are now rejected when you save rather than silently accepted and broken at start time, and four optional numeric fields (Retry Attempts, Retry Backoff, Request Timeout, Session Idle TTL) can finally be cleared back to unset, which is what their own help text promised.
- A graph data-loss bug — the background sweep could overwrite a real entity with an unresolved placeholder, leaving it wrong until a later producer event or a full relist restored it.
- Settings copy — the MCP Server Port help text no longer names build variants your build doesn't have.
Installation
This is an unstable release. To try it on Homebrew or winget, use the unstable identifiers:
brew install --cask kunobi-unstable
winget install kunobi-ninja.kunobi.Unstable
Existing installs on the stable channel are unaffected. You can also log in and download the unstable build directly, or update from within an existing unstable install.
Feedback
We'd love to hear your thoughts!