Open-source project
tw93/Kaku avatar
tw93/Kaku

Kaku is a WezTerm based Mac terminal that stages AI commands for review

🎃 A fast, out-of-the-box macOS terminal built for AI coding.

6,205 stars330 forksRustMIT

At a glance

What is it?
Kaku wraps WezTerm in a macOS terminal with fonts, themes, shell integration and AI panels already configured, and leaves the tuning to one Lua file. Its boundaries are just as concrete: macOS only, no AI service of its own, and a `kaku` command that can disappear from the shell PATH.
Who is it for?
Kaku suits a Mac developer who wants tab and pane handling, copy on select and an AI panel without assembling a terminal by hand, and it does not suit anyone on Linux or Windows. Check three things before switching: whether you are willing to bring your own AI service and its credentials, whether the default keybindings collide with what you already use, and whether you are happy editing ~/.config/kaku/kaku.lua for anything Kaku has no shortcut for.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • tw93/Kaku6,205 ★ · +171
Star history
Repository2026-09-282026-11-13
tw93/Kaku6k6.2k

171 Stars in the last 46 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Two ways in: the DMG drag or the Homebrew cask

Kaku is a macOS terminal based on WezTerm, with fonts, themes, shell integration and Mac shortcuts already configured, and the name is the Japanese word for writing. Two install routes are offered. You can download the Kaku DMG from the latest release, open it and drag Kaku into Applications, or hand the job to Homebrew:

bash
brew install --cask kaku

The cask route is one line. The DMG route is the one that leaves a bundle sitting at `/Applications/Kaku.app`, which matters later when the `kaku` command goes missing from your shell.

First launch is not just a window. Opening Kaku is what sets up shell integration, optional tools that did not come along can be installed afterwards through `kaku init`, and `kaku --version` tells you which build you are on.

kaku init, kaku doctor and the shell setup that breaks

The command line surface is small, and its most documented failure is a missing binary. When `kaku` is not found, the repair is a single line that calls the binary inside the app bundle:

code
/Applications/Kaku.app/Contents/MacOS/kaku init --update-only && exec zsh -l

`kaku doctor` comes next. The `exec zsh -l` at the end restarts the current shell as a login shell.

Beyond that, the docs point at a wider CLI: `kaku ai` to configure an AI service, `kaku config` for settings, `kaku chat` to reach the same conversation store from another shell, and `kaku doctor` for checking the install.

Cmd + Click opens links, and wrapped URLs keep their address

Kaku's argument is that a terminal should not need a cheat sheet. Clickable links are on by default: `Cmd + Click` opens URLs and file paths, and URLs that the terminal wrapped automatically keep their full address, so the click lands on the real target instead of a fragment of a line.

The rest is muscle memory. New tab is `Cmd + T`, new window `Cmd + N`, close is `Cmd + W`, tabs move with `Cmd + Shift + [` and `]` or `Cmd + 1-9`, panes move with `Cmd + Opt + Arrows`, panes split with `Cmd + D` or `Cmd + Shift + D`, and the settings panel opens with `Cmd + ,`. Clear screen is `Cmd + K`.

Two conveniences sit on top: Tab Navigator finds a pane by keyboard, and reopening Kaku restores windows, panes and working directories. A right-click menu covers paste, search, opening the AI chat, and splitting or closing the clicked pane.

The AI panel stages commands, it does not run them

Kaku does not provide or relay the AI service. You point it at your own with `kaku ai`, and the assistant panel then works in a review-first way. When a command fails, the configured assistant can suggest a fix, and `Cmd + Shift + E` pastes that suggestion at the prompt for you to look at. Typing `# <description>` and pressing Enter puts a generated command at the prompt for review and running, not straight into the shell. `Cmd + L` opens a chat about terminal output or project files, and `kaku chat` reaches the same conversation store from another shell.

The AI Tools Config screen holds settings for Claude Code, Codex, Gemini CLI, Copilot CLI, Kimi Code and more. Authentication, models, API Mode and tool settings are covered in the AI assistant docs, which is where the cost and privacy of the feature actually lives.

macOS only, and the comparison lives on the product site

The FAQ answer is short: there is no Windows or Linux version, Kaku is macOS-only for now. That single fact rules the project out for a lot of engineering setups.

For the Mac comparison, the README does not carry a feature table. It links kaku.fun/compare, which covers how Kaku differs from iTerm2, Warp, Ghostty and WezTerm. The background section gives the author's own route instead: Alacritty for years, then Kitty, Ghostty, Warp and iTerm2, before settling on WezTerm's engine and ecosystem as the base. The stated reason for building Kaku was that tab and pane ergonomics mattered more once the workflow moved toward AI assisted coding.

The licensing is MIT, with attribution for WezTerm and the bundled fonts kept in NOTICE.md.

Everything tunable lives in ~/.config/kaku/kaku.lua

Defaults arrive ready: JetBrains Mono, automatic dark and light themes, copy on select, built-in zsh completion, syntax highlighting and directory jumping. Lazygit and Yazi are optional, with shortcuts offered for them (`Cmd + Shift + G` for Lazygit, `Cmd + Shift + Y` or `y` for Yazi).

The tuning surface is WezTerm's Lua configuration system, where fonts, themes, shortcuts and terminal behavior are set. One example is given in full: transparency is `config.window_background_opacity` in `~/.config/kaku/kaku.lua`. The configuration docs cover themes, fonts, custom keybindings and the Lua API, so the escape hatch is a real API rather than a config file format of its own.

The practical limit is that Kaku's own defaults are the product. Anything it does not ship a shortcut for means reading Lua.

The Cargo workspace is WezTerm's crates with a Kaku layer

The tree explains the size of the project. Alongside `kaku` and `kaku-gui`, the workspace lists `crates/kaku-remote`, `crates/wezterm-blob-leases`, `crates/wezterm-cell`, `crates/wezterm-escape-parser`, `crates/wezterm-dynamic`, `crates/wezterm-open-url`, `crates/wezterm-ssh`, `crates/wezterm-surface`, `crates/wezterm-uds`, `crates/kaku-unicode-names`, `crates/bidi` and `deps/cairo`, with resolver 2. Codegen and relay crates are excluded from the workspace.

The release profile is tuned hard: opt-level 3, `lto = "fat"`, one codegen unit, symbols stripped and `panic = "abort"`. A second profile trades speed for a smaller binary, with `opt-level = "z"` and the comment `cargo build --profile release-opt`.

Vendored crates under `deps/` deliberately do not opt into the workspace lints, so their upstream manifests stay clean.

make test skips one JetBrains ligature case and checks no_std

The Makefile is where a contributor finds out how the project is tested:

code
cargo nextest run --locked -E 'not test(shapecache::test::ligatures_jetbrains)'
cargo nextest run --locked -p wezterm-escape-parser # no_std by default

The JetBrains ligature test is filtered out of the default run. The check target runs `cargo check` per crate and then `./scripts/check_prompts.sh`, while build compiles `kaku`, `kaku-gui` and `wezterm-mux-server-impl`, and the dev target drives `cargo watch` across the workspace.

Ship cadence matches a nightly-tagged project: V0.27.1 Guard on 2026-10-27, a nightly build published 2026-11-01, and V0.28.0 Steady on 2026-11-03. The last push to main was 2026-11-02.

Editorial conclusion

Kaku suits a Mac developer who wants tab and pane handling, copy on select and an AI panel without assembling a terminal by hand, and it does not suit anyone on Linux or Windows. Check three things before switching: whether you are willing to bring your own AI service and its credentials, whether the default keybindings collide with what you already use, and whether you are happy editing ~/.config/kaku/kaku.lua for anything Kaku has no shortcut for. The code is MIT licensed and credits WezTerm and the bundled fonts in NOTICE.md.

Frequently asked questions

Does Kaku have a Windows or Linux version?

Not currently. Kaku is macOS-only for now, and the project keeps its comparison with iTerm2, Warp, Ghostty and WezTerm on kaku.fun/compare.

Where does the Kaku AI assistant send my prompts?

Kaku does not provide or relay the AI service. You configure your own with `kaku ai`, and the AI assistant docs cover authentication, models, API Mode and tool settings.

How do I make the Kaku window transparent?

Set `config.window_background_opacity` in `~/.config/kaku/kaku.lua`. Fonts, themes, shortcuts and terminal behavior are customized through the same WezTerm Lua configuration.

What do I run when the kaku command is missing?

Run `/Applications/Kaku.app/Contents/MacOS/kaku init --update-only && exec zsh -l`, then `kaku doctor`. Opening Kaku itself is what sets up shell integration.

Is the Kaku terminal based on WezTerm?

Yes, Kaku is a macOS terminal based on WezTerm with fonts, themes, shell integration and Mac shortcuts already configured. It is MIT licensed, and attribution for WezTerm and the bundled fonts is in NOTICE.md.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. tw93/Kaku on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/tw93-kaku.svg)](https://hysenlabs.com/projects/tw93-kaku)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/tw93-kaku.svg)](https://hysenlabs.com/projects/tw93-kaku)

Was this useful?