Claude Code · Codex · opencode
A high-performance
terminal for AI sessions.
makit is a terminal built for AI coding sessions. It is native and light, and Claude Code, Codex and opencode run in it side by side, in splits and tabs. It also remembers every session for you: wherever you started one, it is in the sidebar, one click from where you left off, and the ones waiting for you are marked.
Universal package (Intel + Apple Silicon), about 15 MB · latest v0.2 · signed and notarized by Apple (0.2.7 and later)
Native Rust + GPUI, not a web page in disguise: 7.7 MB installer, 55–75 MB of memory. Multiple beautiful built-in themes, with support for importing iTerm2 themes. Local, nothing uploaded.
A session, not a window
An AI coding session is a conversation that lives in a terminal window. Close the window, rename the folder, restart the Mac, and the conversation is still on disk, but nothing points at it any more. makit changes the unit: the session is the object, not the window. It reads the session files Claude Code and Codex already write, so every session is listed whichever terminal it was started in.
| Unix job control | makit |
|---|---|
jobs: list the jobs and their state | The session list: running / waiting for you / idle / stopped / archived |
Stopped (tty input): stuck waiting for you | Waiting for approval / an answer, with a notification |
fg %n: bring one back | One-click resume, in its original directory |
| Close the terminal and the job is gone | The record is on disk: it survives the window, a restart, a renamed folder |
Not the same as a persistent-session terminal
A terminal with a background server keeps the process alive after you close the window, for as long as that server runs. makit keeps the conversation: the record is on disk, so it is still there after a restart, after the server would have stopped, after a renamed folder. The trade-off is plain: closing a tab ends its process, and resuming continues the conversation, not the running program.
Quick start
- Install and open makit. Download the
.dmg, drag makit into Applications and open it. Versions before 0.2.7 are unsigned and need one extra step on the first launch (see Download and install). - Look at the sidebar. Your Claude Code and Codex sessions are already there, grouped by time. Click one to pick it back up in its original directory.
- Press ⌘K. Type a few letters of a project or task, press Enter. The session opens in a new tab.
- Turn on notifications (Claude Code): Settings → install the hook. From then on a desktop notification tells you when a session needs approval or an answer.
Download and install
macOS is the main build. Windows is a preview, Linux is planned for 0.3.
macOS
Download the .dmg, open it and drag makit into Applications.
-universal works on every Mac; Apple Silicon and Intel builds are about half the size.
Homebrew
brew install --cask nicholas-hoult/tap/makitWindows (preview)
A .zip with makit.exe, unsigned, and some features are still placeholders. Windows SmartScreen asks once: More info → Run anyway.
xattr -dr com.apple.quarantine /Applications/makit.app.Find every session
makit scans ~/.claude and ~/.codex (and opencode’s database) and lists every session it finds, whichever terminal started it. The sidebar groups them by time, project or state; the list updates as sessions come and go.
- Click a session to resume it. If it is already open, makit switches to that tab instead of opening a second one.
- Resume happens in the original directory. If that directory was deleted or moved, makit rebuilds the link so a Claude Code session is not lost.
- Claude Code, Codex and opencode sessions are listed and resumed the same way. The running state shows for all three; busy for Claude Code and opencode (Codex shows idle). “Waiting for you” and its notification are Claude Code only for now.
Search and resume
Press ⌘K for the command palette. Search across all projects and tasks, narrow by project, time or status, press Enter to open.
Who is waiting
Every session has a state mark in the sidebar and on its tab. The shape carries the meaning, so it also reads without colour:
| Mark | State |
|---|---|
| Disc with three dots | Waiting for you: approval or an answer needed |
| Ring with an arc | Busy |
| Ring with a tick | Idle |
| Dashed ring | Stopped |
When a session starts waiting, makit also sends a desktop notification and keeps the entry in the notification centre (the bell). This needs the notification hook: open Settings and click Install hook. It is the only time makit touches ~/.claude/settings.json.
Archive in bulk
Archiving hides finished sessions without deleting them; the files stay where Claude Code and Codex wrote them.
- ⌘-click a session to add it to, or remove it from, a selection; ⇧-click selects a range.
- Right-click a selected row: Archive selected (N), or Unarchive selected (N) when all of them are archived.
A terminal that keeps up
The terminal is half of the product. It is a native Rust + GPUI app, not a web page in disguise, so it stays small and quick even with thousands of sessions on disk.
Synthetic sessions, Intel Core i7-1068NG7, release build, single architecture. Full data, method and limits are in the README.
| Metric | Measured |
|---|---|
| Installer (.dmg, single architecture) | 7.7 MB |
| Session list ready, 5,000 sessions | 0.6–0.9 s |
| Memory in use | 55–75 MB |
| Each new record in a long conversation (5–200 MB) | ≈ 0.04 ms |
- Tree splits and draggable tabs; tabs can be pinned or stopped without closing them.
- Double-click word selection, font zoom, and links and paths you can ⌘-click.
- Multiple beautiful built-in themes, with support for importing iTerm2 themes.
Splits and tabs
Terminals are tree-style splits: split a pane, drag the divider to resize, drag a tab to another pane. One screen can keep an eye on several sessions.
- Right-click a tab → Stop session ends the process and frees its memory but keeps the tab in place (also across restarts). Stop other tabs does that for the rest.
- A tab whose process ended can run again in place: press Enter in it, or right-click → Resume session.
- Right-click → Pin tab keeps it at the front of its pane. Close others and Close to the right leave pinned tabs open.
Keyboard shortcuts
| Keys | Does |
|---|---|
| ⌘K | Command palette: search and open sessions |
| ⌘1…9 | Switch tab |
| ⌥⌘1…9 | Switch pane |
| ⌘-click | Open the link or path under the cursor |
Links and paths
Hold ⌘ and the URLs and file paths in the terminal output turn into links: ⌘-click opens them. This also works for paths whose names contain full-width brackets, and for a long path or URL that a program wrapped over several lines, such as in Claude Code’s replies.
Read it back, reflowed
Experimental, off by default. When on, the history of a session is laid out again from the session file as you resize the window; the live part at the bottom stays a real terminal. Turn it on in Settings.
Themes and language
Multiple beautiful built-in themes, with support for importing iTerm2 themes. They follow the system light / dark setting. The interface is English or 中文: English by default, switch or follow the system in Settings.
Three of them, as they look in the app:



Updates
makit checks for a new release after launch and then every hour, and shows an Update x.y.z pill in the titlebar. Its menu offers Update and restart, Release notes and Skip this version. The installer is verified against its published SHA-256 before the app is replaced, with a rollback if the swap fails. Installed with Homebrew? Use brew upgrade --cask makit. Only version information is requested.
Privacy and data
makit reads the session files on your machine. No account, no telemetry, nothing about your sessions, paths or projects is uploaded.
- Reads:
~/.claude/projects,~/.claude/sessions,~/.codex/sessions, and opencode’s SQLite database (read-only). - Writes its own data to
~/.claude/makit(settings, archive marks, logs). - Touches
~/.claude/settings.jsononly when you click Install hook. - Deleting makit does not delete your sessions; they belong to Claude Code and Codex.
When something is off
Open Settings → Diagnostics. Check environment looks at the tools and their versions, PATH, proxy variables, the notification hook, and the data and session folders, and tells you what to fix. Copy diagnostic information and Open log folder help when you file an issue; logs are kept for the last 7 days.
FAQ
How is this different from a terminal or a multiplexer?
makit does include split terminals, but it is organised around sessions, not windows: it lists sessions started anywhere, keeps their history, and tells you which one is waiting. Use it alongside the terminal you like.
Which agents are supported?
Claude Code, Codex and opencode. Sessions of all three are listed and can be resumed. The “waiting for you” state and notifications are Claude Code only for now.
Does it upload my sessions?
No. It reads local files. The update check only requests version information; nothing about your sessions, paths or projects is sent.
If I delete makit, do I lose my sessions?
No. The sessions belong to Claude Code and Codex and stay where they are. Deleting ~/.claude/makit only removes makit’s own settings and archive marks.
Is it signed?
Yes, from 0.2.7: signed with an Apple Developer ID and notarized by Apple. It is an individual developer account, so the certificate carries the author’s legal name. Versions before 0.2.7 are unsigned; the steps to open them are in “Download and install”.
Windows and Linux?
Windows has a preview build (it runs, but some features are placeholders). Linux is planned for 0.3.
Is it free?
Yes. It is open source, dual-licensed MIT or Apache-2.0.