tw93/Kaku: a macOS terminal that ships with its defaults already chosen
🎃 A fast, out-of-the-box macOS terminal built for AI coding.
At a glance
- What is it?
- Kaku is a WezTerm-based terminal for macOS with fonts, themes, shell integration and AI hooks preconfigured. It is a good fit if you want a working setup without editing Lua, and the wrong one if you need Linux or Windows.
- Who is it for?
- Adopt Kaku if you work on macOS, want a terminal that is usable before you touch a config file, and are comfortable with the AI assistant being something you point at your own service. Do not adopt it if you need Linux or Windows, or if you want an assistant that works without you configuring a provider.
- 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 2 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 September 28, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem Kaku picks for you: terminal defaults
Most terminals hand you an empty configuration and a font that is not installed. You then spend an evening choosing a monospace family, wiring shell integration, and deciding whether tabs or panes deserve a shortcut. Kaku's premise is that this decision has already been made. The README states that the app is based on WezTerm and arrives with fonts, themes, shell integration and Mac shortcuts already configured, while the Lua settings remain available underneath. So the target reader is someone on macOS who wants the WezTerm engine without the WezTerm setup pass.
The second half of the pitch is AI coding. The topics list includes ai-coding and vibe-coding, and the README describes an optional assistant for command suggestions and chat. That pairing is the actual positioning: a terminal whose defaults assume you are running coding agents in it, not just a shell. The name is Japanese for "to write", and the author places it in a trilogy alongside Waza and Kami.
What sits under the hood: a WezTerm fork with kaku-gui on top
The workspace manifest lists members including kaku, kaku-gui, crates/kaku-remote, crates/kaku-unicode-names, and a set of vendored wezterm crates: wezterm-cell, wezterm-escape-parser, wezterm-surface, wezterm-ssh, wezterm-uds, wezterm-dynamic, wezterm-blob-leases and wezterm-open-url. Alongside those sit the classic WezTerm directories at the repository root: mux, term, termwiz, window, config, lua-api-crates and deps. The picture is a fork that keeps the upstream engine and terminal emulation layers, then adds its own application crate and a remote-access crate.
The build targets confirm which pieces are the product. The Makefile's build target compiles `-p kaku -p kaku-gui -p wezterm-mux-server-impl`, so the GUI binary and the multiplexer server are both first-class artifacts. Release builds use `lto = "fat"`, `codegen-units = 1` and `panic = "abort"`, and there is a separate `release-opt` profile with `opt-level = "z"` for binary size. That is an explicit trade: longer link times in exchange for a smaller, faster binary, which matters for an app you launch dozens of times a day.
One detail worth noting for anyone planning to modify the code: the workspace lints are opt-in. The manifest comment says only crates that set `[lints] workspace = true` are affected, and the vendored crates under deps/ deliberately do not opt in so their upstream manifests stay clean. That keeps rebases against upstream WezTerm cheaper, at the cost of inconsistent lint coverage across the tree.
Installing Kaku and getting to a first working prompt
The README gives two install paths. Either download the DMG from the releases page, open it and drag Kaku into Applications, or use the Homebrew cask:
brew install --cask kakuAfter that, open Kaku so it can set up shell integration. The README says missing optional tools can be installed through `kaku init`, and that you can check the installed version with `kaku --version`. Run both before you start customizing anything:
kaku init
kaku --versionIf the `kaku` command is not found, the FAQ gives a specific recovery sequence rather than a generic reinstall. It points at the binary inside the app bundle and then asks the doctor command to report what is wrong:
/Applications/Kaku.app/Contents/MacOS/kaku init --update-only && exec zsh -l
kaku doctorWith the shell wired up, the first real use is the AI assistant, which is the feature that separates Kaku from a plain WezTerm install. You configure your own provider with the `kaku ai` command; the README is explicit that Kaku does not provide or relay the AI service. Once configured, typing a hash and a description at the prompt and pressing Enter places a generated command at the prompt for you to review, and a failed command can produce a suggested fix that you paste with `Cmd + Shift + E`.
kaku aiFor the chat side, `Cmd + L` opens the conversation in the GUI, and the README notes that `kaku chat` from another shell reaches the same conversation store. The AI Tools Config section lists Claude Code, Codex, Gemini CLI, Copilot CLI and Kimi Code among the tools whose settings it manages.
Where Kaku stops: macOS only, bring your own model
The first limitation is stated in the FAQ in plain terms: there is no Windows or Linux version, and Kaku is macOS-only for now. If your team standardizes on Linux workstations or you live in WSL, this is not a tool you can adopt, and no amount of Lua configuration changes that.
The second is the AI boundary. Kaku does not provide or relay the AI service. Every suggestion, every natural-language-to-command conversion and every chat message depends on a provider you configure yourself, including authentication and model selection. If you expected a terminal with an assistant that works out of the box, you will find an assistant that works once you have done the same setup you would do for any other client. The documentation for authentication, models, API Mode and tool settings lives in a separate features document rather than the README, which means the front page understates how much configuration the AI features actually require.
The third is inherited. Because Kaku is a WezTerm fork, its configuration surface is WezTerm's Lua system, and the README points at a configuration document covering themes, fonts, custom keybindings and the Lua API. That is a strength for people who want control and a cost for people who chose Kaku precisely to avoid it. The moment you need something the defaults do not cover, you are reading WezTerm documentation, not Kaku documentation.
Kaku against iTerm2, Warp, Ghostty and plain WezTerm
The README's own comparison page covers iTerm2, Warp, Ghostty, WezTerm and Terminal.app, so the honest framing is that Kaku competes on defaults rather than on emulation capability. Against plain WezTerm, the difference is packaging: WezTerm gives you the engine and a Lua configuration file; Kaku gives you the same engine with fonts, themes, shell integration and Mac shortcuts already set, plus an application crate and a GUI layer of its own. If you already have a WezTerm configuration you like, Kaku's main selling point is the part you have already done.
Against iTerm2 and Terminal.app, the difference is the engine and the configuration model. Kaku inherits a Rust terminal core and a Lua API rather than a macOS-native preference-pane approach, which is why the README can point at `config.window_background_opacity` in `~/.config/kaku/kaku.lua` as the answer to a transparency question. Against Warp, the split is where the intelligence lives: Warp's model is a terminal with its own hosted assistant, while Kaku's is a terminal that talks to whichever provider you configure. That matters if your organization has opinions about which model endpoint your shell traffic reaches.
The AI Tools Config list is the other differentiator worth naming. Managing settings for Claude Code, Codex, Gemini CLI, Copilot CLI and Kimi Code in one place is a workflow convenience aimed at people running several coding agents, and it is a narrower bet than a general-purpose terminal feature.
Maintenance, licence and what upgrading costs you
The repository is not archived, and the last push was on 2026-09-20. Releases have been frequent: V0.20.0 on 2026-09-12, a nightly build the same day, and V0.19.0 on 2026-08-24. Nightly builds are published alongside tagged releases, so there is a channel for people who want changes before they are tagged, and it is worth being clear that a nightly is not the same artifact as V0.20.0.
The upgrade cost is mostly the fork's. Because the workspace vendors WezTerm crates under deps/ and keeps upstream manifests clean, tracking upstream is a rebase exercise rather than a merge of unrelated code. The Makefile's fmt and fmt-check targets pin formatting to a nightly toolchain and a specific crate list, and the check target runs `cargo check --locked` across several crates plus a shell script, `./scripts/check_prompts.sh`. Building from source therefore means installing the Rust toolchain first; the install-tools target refuses to run without cargo and rustup and points at CONTRIBUTING.md for bootstrap steps.
The licence is MIT, per the README badge and the LICENSE.md file. MIT is permissive and places few obligations on redistribution, but this is a description of the licence identifier, not legal advice, and a fork that bundles vendored upstream crates has its own NOTICE.md worth reading before you redistribute a build.
Editorial conclusion
Adopt Kaku if you work on macOS, want a terminal that is usable before you touch a config file, and are comfortable with the AI assistant being something you point at your own service. Do not adopt it if you need Linux or Windows, or if you want an assistant that works without you configuring a provider. Verify first that `kaku --version` reports the release you expect after install and that `kaku doctor` comes back clean, since the README treats a missing `kaku` command as a shell integration problem rather than a packaging one.
Frequently asked questions
How do I install Kaku on macOS?
Download the Kaku DMG from the releases page, open it and drag Kaku into Applications, or run `brew install --cask kaku`. After opening Kaku, the shell integration is set up for you, and `kaku --version` confirms the installed version.
Does Kaku work on Windows or Linux?
No. The FAQ states that Kaku is macOS-only for now and that there is no Windows or Linux version.
Does Kaku include its own AI service?
It does not. The README says Kaku does not provide or relay the AI service, and you configure your own provider with the `kaku ai` command. Authentication, models and API Mode are covered in the separate AI assistant docs.
The kaku command is missing after I installed Kaku. What should I do?
The FAQ gives a recovery sequence: run `/Applications/Kaku.app/Contents/MacOS/kaku init --update-only && exec zsh -l`, then run `kaku doctor` to see what is wrong.
Can I make the Kaku window transparent?
Yes. The FAQ says to set `config.window_background_opacity` in `~/.config/kaku/kaku.lua`.
Official sources
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.
[](https://hysenlabs.com/projects/tw93-kaku)