makit

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)

makit: a session list grouped by time on the left, split terminals on the right
DownloadmacOS, Homebrew, Windows preview Quick startFrom install to your first resumed session FAQPrivacy, signing, supported agents

Native Rust + GPUI, not a web page in disguise: 7.7 MB installer, 55–75 MB of memory, 21 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 controlmakit
jobs: list the jobs and their stateThe session list: running / waiting for you / idle / stopped / archived
Stopped (tty input): stuck waiting for youWaiting for approval / an answer, with a notification
fg %n: bring one backOne-click resume, in its original directory
Close the terminal and the job is goneThe 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

  1. 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).
  2. 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.
  3. Press ⌘K. Type a few letters of a project or task, press Enter. The session opens in a new tab.
  4. 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.

Download for macOS

-universal works on every Mac; Apple Silicon and Intel builds are about half the size.

Homebrew

brew install --cask nicholas-hoult/tap/makit

Windows (preview)

A .zip with makit.exe, unsigned, and some features are still placeholders. Windows SmartScreen asks once: More info → Run anyway.

Download for Windows

First launch on macOS. From 0.2.7 the app is signed with an Apple Developer ID and notarized by Apple, so it opens with a double-click. Versions before 0.2.7 are unsigned: macOS stops them once. Open System Settings → Privacy & Security and click Open Anyway; if it says the app is damaged, run 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.

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:

MarkState
Disc with three dotsWaiting for you: approval or an answer needed
Ring with an arcBusy
Ring with a tickIdle
Dashed ringStopped

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.

A session goes from running to waiting for approval: the mark changes, the bell lights up, the notification centre keeps the entry.

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.

MetricMeasured
Installer (.dmg, single architecture)7.7 MB
Session list ready, 5,000 sessions0.6–0.9 s
Memory in use55–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.
  • 21 themes, iTerm2 colour schemes can be imported.

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

KeysDoes
⌘KCommand palette: search and open sessions
⌘1…9Switch tab
⌥⌘1…9Switch pane
⌘-clickOpen the link or path under the cursor
Jump between panes with ⌥⌘1…9 and tabs with ⌘1…9; open more sessions with ⌘K.

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

21 built-in themes follow the system light / dark setting, and iTerm2 .itermcolors files can be imported. The interface is English or 中文: English by default, switch or follow the system in Settings.

Three of them, as they look in the app:

Catppuccin Mocha
GitHub Light
Dayfox

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.json only 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.