MIT Local-first No tracking

Sparks everywhere, clear at a glance.

A modern terminal manager built for vibe coding. Local-first, CJK-native. Let the agents run — who's burning, who's burned out, who's pinging you — all in plain sight. No intrusion, no login, no cloud.

macOS · Windows · always free and open source

vibeterm

What's different

It doesn't run your agents for you. It just keeps an eye on them.

00

Never touches your config

It works out state by sniffing: reading output and read-only file watching. It never writes to ~/.claude or ~/.codex, installs no hooks, runs no background services. Not a byte of your agent config gets touched.

01

Keeps a bunch of agents in check

Agents get messy once you've got a few. It floats the stuck ones and the ones waiting on you to the top, so you're not clicking through each one to see who needs you.

02

A terminal stays a terminal

It does the terminal basics well. No feature bloat, no ambition to become an agent workbench.

03

CJK that just works

Wide characters, IME input, copying text with emoji in it — the things English terminals keep getting wrong. Handled here.

04

Everything stays on your machine

No login, no data collection, offline by default. It only goes online when you check for updates — and even then, it only reads.

05

MIT, open source

All the code is public. Read it, change it, do whatever you want with it.

What it does

Everything a terminal should do — plus the agent layer.

All the usual terminal features, plus state-awareness and orchestration built for a screen full of AI agents.

Agents

Sees what an agent's doing

Working, waiting, stalled, or done — figured out without touching your config.

Stall detection + urgency sort

Screen full of agents? The stuck ones and the ones waiting on you go to the top.

Live usage

Context left, 5h/7d quota, burn rate, cache, cost — all on one bar.

Usage stats

Token and cost numbers for Claude / Codex. Computed offline, exportable.

Terminal

Splits + worktrees

Mount a git worktree, one terminal tree per task.

Canvas board

Lay tasks out as cards, drag-select, send one command to several terminals.

Floating windows

Pop any task into its own window and keep watching.

GPU rendering

WebGL-accelerated — and CJK still won't drop glyphs or stutter.

Workflow

Command palette

Custom keybindings and actions — drive the whole thing from the keyboard.

Prompt presets

Handy presets for claude / codex / shell, a keystroke away.

Configurable status bar

Drag the widgets around; each agent type gets its own layout.

Desktop notifications

24 built-in sounds + quiet hours, only when an agent's state changes.

Hot-swap themes

10 built-in themes, switch anytime, macOS and Windows.

How it works

How does it know what an agent's doing without touching your config?

Three layers of sniffing, plus read-only file watching. No hooks, no login, nothing written.

01

OSC 133 / 633 sequences

Command boundary markers from shell integration. The most reliable layer: it knows exactly when a command starts, ends, or sits waiting for input.

02

Reading agent output

Matches the approval prompts of 11 common agents to tell when one's waiting on you.

03

That spinner in the title bar

If the braille spinner in the window title is moving, the agent's working.

The one rule: hands off your stuff

Never writes ~/.claude or ~/.codex, installs no hooks, runs no background services. Every state is watched, never injected.

Five states, clear at a glance.

Running Steady blue dot with a glow. The agent's working.
Waiting Amber dot, breathing — it's waiting on you. Worth a look.
Stalled Red-orange ring. Quiet for over 5 minutes, probably stuck.
Idle Still grey dot. Nothing going on.
Done Outlined ring, struck through. This one's actually finished.

Straight talk

Not one of the major English AI terminals takes CJK seriously.

Almost every major AI-terminal repo has CJK bugs sitting open, buried under English users' urgent ones. Nobody's really done this part. VibeTerm treats it as actual work.

On VibeTerm's side

  • IME composition held the whole way (isComposing / keyCode 229). No misfires, no lag.
  • Wide and ambiguous widths measured right, so tables stay lined up.
  • Chinese line-wrap doesn't truncate; streaming never splits a glyph.
  • Copy is guarded by Intl.Segmenter, so it won't tear surrogate pairs or break ZWJ emoji.
  • CJK doesn't drop or shift under GPU rendering.
  • Native notifications when a background agent does something.

Data is current as of publication. Spot something off? PRs welcome.

Themes

Switch the theme, the whole site follows.

The product's 10 built-in terminal themes are right here on this site. Click one and everything follows, from the nav to the terminal window.

Click to try

Credits

Standing on these shoulders.

VibeTerm uses and borrows from these open-source projects.

Frontend

Borrowed from

Fonts & assets

Special thanks to ryoppippi's ccusage (MIT). The usage stats, model pricing, and 5-hour blocks all drew from it; pricing data comes from LiteLLM and Anthropic's official numbers.

Give it a go?

Free, open source, everything local. Download and run, no signup.

macOS 11+ and Windows — same download page.

Or build it from source →