Kaji for macOS is being built in public →
0.1.9May 29, 2026
Chrome DevTools browser control, faster search, and process monitors

Browser automation now runs through Chrome DevTools by default

Kaji's in-app browser control now defaults to Chrome DevTools MCP over the embedded Chromium remote-debugging endpoint.

Agents still operate the browser inside Kaji, but the automation layer is closer to the browser protocol, with an allowlist around the tools that are verified against Kaji's CEF surface. Playwright is still available as a fallback through KAJI_BROWSER_PROVIDER=playwright.

  • Added a Chrome DevTools browser automation provider for Kaji browser MCP
  • Made Chrome DevTools the default browser provider
  • Added session-scoped broker readiness and CDP endpoint waiting
  • Hid unverified Chrome-only tools unless explicitly enabled
  • Added open and close browser panel notifications so automation can bring the browser surface into view

Search moved to FFF

File search and project text search now run through an FFF-backed index instead of Kaji's older in-process file scan and ripgrep path.

Translation: the search path got a real engine. Less rummaging through the repo closet, more getting the result you asked for.

  • Added FFFKit and a dynamic FFF search library loader
  • Added shared FFF search indexes for file search and text search
  • Replaced the old quick-open file index path with FFF-backed search
  • Replaced project text search's ripgrep/fallback path with FFF-backed text search
  • Limited cached FFF indexes and serialized index access to keep search memory and concurrency under control

Top bar monitors for ports and coding agents

Two new top bar popovers make it easier to see what is actually running on your machine while agents are working.

Kaji can now show listening ports and coding-agent processes without making you leave the app to run lsof, ps, and a tiny prayer.

  • Added a Running Ports monitor with filtering, refresh, PID details, and confirmed SIGTERM kill actions
  • Added an Agent Processes monitor grouped by provider
  • Detects Codex, Claude Code, OpenCode, and Pi processes through agent definitions, executable names, and command markers
  • Labels agent processes as active, detached, or orphaned based on process group and parent process state
  • Added individual and grouped kill actions for visible agent processes

Editor loading and model policies got quieter

A big internal editor pass landed in this release, focused on making heavier workspaces less dramatic.

The editor now has more explicit policies for inactive resources, viewport math, cursor visibility, decorations, folds, language pairing, markdown scroll sync, and tab history. Not glamorous, but this is the type of plumbing that makes the app feel calmer.

  • Added deferred editor loading and inactive editor resource budgets
  • Added visual-line mapping, line-start indexes, viewport frame metrics, and scroll clamp behavior
  • Added dedicated policies for decorations, cursor visibility, folded lines, undo behavior, language pairs, and markdown preview scroll sync
  • Added indexed tab-area snapshots and richer tab history handling
  • Added a large batch of model and service tests around editor, browser, search, tabs, ports, and agent processes

CEF and release polish

The CEF runtime installer is a little less wasteful now too. It can reuse a valid cached runtime/archive unless a refresh is explicitly requested. Small release-workflow thing, nice quality-of-life win.

  • Reused cached CEF runtime archives when the embedded framework is already present and valid
  • Kept REFRESH_CEF_RUNTIME as the explicit escape hatch for forcing a fresh runtime fetch
  • Bumped Kaji to 0.1.9