smtermsmterm
FeaturesAgentsThemesInstallFAQ
StarInstall
a terminal for agentic coding

You run the agents.
You still read the code.

A fast, cross-platform terminal with tabs, split panes and real shells, for people who run coding agents all day. It stays out of your way like any terminal, then adds a few panels that show what the agents are actually doing.

An open-source alternative if you have been looking for Warp without the lock-in, or tmux that understands agents.

$curl -fsSL https://raw.githubusercontent.com/vcmf/smterm/main/install.sh | sh
macOSLinuxWindows and WSL|PowerShell one-liner
smterm
hero shot
smterm running four agent sessions in split panes, with the Agents board on the right.
The problem

You find the finished agent an hour late.

Launch a few agents from a plain terminal and two things go wrong. You lose track of which pane is waiting on you, and you never really see what changed. So you either babysit one pane, or you come back later and read a diff with no idea who wrote it.

Silent panes
A background pane asked a question twenty minutes ago and nothing told you.
Invisible edits
Files moved under you. Reading them means leaving the terminal and running git yourself.
Three different machines
macOS at home, Linux at work, WSL sometimes. Every terminal behaves a bit differently.
Features

A normal terminal, plus the panels you keep wishing for.

Nothing here gets in the way of the shell. The panels sit next to it and answer one question: what happened, not just that something did.

Notifications when a session needs you

Working, waiting for input, or done. It shows as a dot on the tab and in the sidebar, and a background pane that wants you sends a native OS notification.

feat notifications
Changes panel

A git diff for the focused pane's working directory, with per-file counts and the full unified diff. Branch and ahead/behind sit in the status bar.

feat changes
Files browser

A per-folder listing rooted at the pane's directory, loaded as you open folders. Changed files carry git badges, folders get tinted. Click one to read it inline or open it in your editor.

feat files
A real multiplexer

Tabs and resizable splits. Split a pane and it keeps your shell and your directory. Quit, reopen, and your layout comes back.

feat sessions
Command palette

One shortcut for new sessions, splits, theme switching and settings. Copy, paste and find in scrollback work the way you expect.

split
⌘K
Split pane right
Split pane down
Switch theme
Agents board

Run claude in a pane and the board lights up.

A live view of the Claude Code agents you launched inside smterm. The root session, its sub-agents, what each one is doing, its working directory, and the files it touched. Click one to jump to its pane.

It reads Claude Code's own hook events, so there is no setup and no global config to edit. smterm only wires the panes it launches, which also means agents you started somewhere else stay out of the board.

Zero setup, no global hooks to install
Sub-agents shown under the session that spawned them
Recent files per agent, so you know where to look
Agents3 active
claudeworking
editing session handling, running the auth suite
~/api-refactor
writing tests
reading the prisma schema
session.tstokens.tsauth.test.ts
claudewaiting for input
asking before it runs the migration
~/api-refactor/db
claudedone
docs rewritten, 4 files changed
~/api-refactor/docs
Why I built this

I like reading the code an agent writes.

I love the terminal, and the easiest way to put an agent like Claude Code to work is to launch it from a CLI. My work moves between macOS and Linux a lot, and sometimes WSL on Windows, so a terminal that behaves the same on all three matters to me.

The other half is that I like reading what an agent wrote and making the edits myself. A plain terminal makes that hard. You lose track of which session needs you, and you never really see what changed.

So I built the terminal I wanted. It keeps the shell I already like and adds just enough to stay in the loop. The Changes, Files and Agents panels show what happened, not just that something did.

vcmf·also building dim0
Themes and fonts

Pick the one that makes you want to open it.

Minimal Dark, Tokyo Night, Catppuccin and Gruvbox, with bundled fonts and ligatures. Font family, size, line height and cursor blink all live in the settings file.

~/smterm $ claude
● reading session.ts
+6 −2 1 waiting
Minimal Darkdefault
~/smterm $ claude
● reading session.ts
+6 −2 1 waiting
Tokyo Night
~/smterm $ claude
● reading session.ts
+6 −2 1 waiting
Catppuccin
~/smterm $ claude
● reading session.ts
+6 −2 1 waiting
Gruvbox
One settings file, no hidden state

Settings live in a single JSON file that is the source of truth. Edit it by hand or through the in-app panel. A watcher re-applies your changes as you save.

macOS and Linux · ~/.config/smterm/settings.json
Windows · %APPDATA%\smterm\settings.json
{"font": { "family": "JetBrains Mono","size": 13,"ligatures": true },"theme": "minimal-dark","cursorBlink": true,"scrollback": 5000}
Install

One line, then you are in a shell.

macOS and Linux
$curl -fsSL https://raw.githubusercontent.com/vcmf/smterm/main/install.sh | sh
Windows, in PowerShell
>irm https://raw.githubusercontent.com/vcmf/smterm/main/install.ps1 | iex
Or build it from source

Electron, React, TypeScript, xterm.js on the WebGL renderer, and node-pty for the shells. Zustand for state, react-resizable-panels for the layout, Vitest for tests.

Logic sits in small pure modules with real tests. Design notes and decisions live in docs/, starting with ARCHITECTURE.md and ROADMAP.md.

$ git clone https://github.com/vcmf/smterm
$ cd smterm
$ make install # deps, native rebuild, hooks
$ make run # dev mode
$ make dist # package for your OS
FAQ

Questions I get asked.

How is this different from tmux or a normal terminal?

smterm is a normal terminal first. Tabs, resizable splits, your own shell, your own directory. What it adds is a small set of panels that answer what happened while an agent was working: Changes, Files, and the Agents board. Nothing replaces the shell you already use.

Does it actually work on Windows?

Yes, on Windows and inside WSL, alongside macOS and Linux. That was the reason I started it, since my work moves between the three. Windows and WSL are the newest of the three targets, so they have seen less real-world use so far.

Which agents does it support?

The Agents board reads Claude Code hook events, so Claude Code is what it understands today. The code underneath makes no assumption about which agent is running, so other agents can plug in later. Any agent CLI still runs fine in a pane, it just will not show up on the board.

Do I have to configure hooks or edit a global config?

No. smterm wires the panes it launches itself, so there is nothing to install and no global config to edit. It also means an agent you started in some other terminal will not appear on the board.

Where do settings live?

In one JSON file that is the source of truth: ~/.config/smterm/settings.json on macOS and Linux, %APPDATA%\smterm\settings.json on Windows. Edit it by hand or through the in-app panel. A watcher re-applies changes as you save.

Is it free, and can I fork it?

It is MIT licensed and open source. Clone it, read it, fork it, ship your own version. If it turns out useful to you, a star helps other people find it.

Something else on your mind? Open an issue.What you did, what happened, and what you expected is enough.
$ smterm

Stay in the loop with your agents.

Free, MIT, and yours to fork. If smterm turns out useful to you, a star helps other people find it.

Install smtermStar on GitHub
MIT licensed·macOS, Linux, Windows and WSL·open source on GitHub
smtermsmterm
A minimal terminal for agentic coding. Yes, we love reading the code.
GitHubREADMEDocsIssuesdim0
© 2026 smterm · MIT · built in the open by dim0 team