Skip to content

maiTerm

A terminal for devs juggling multiple projects and AI agents at once. No built-in LLM, no chat sidebar — just a proper terminal that keeps you organized and picks up exactly where you left off.
macOS
Windows
Linux

Spotlight — Mesh Workspace

A team of specialist agents, not one giant context

Flip a workspace into a mesh and every agent in it can message any other by role. Purpose-trained specialists — each expert in its own repository — ask each other precise questions and get answers back as real turns: the frontend agent asks the backend agent for an endpoint’s exact shape, the backend loops in the infra agent, and nobody waits for you to play messenger. That’s cross-repository collaboration, live, in panes you can watch.

It’s not just a coordination win — it’s a token win. One monolithic agent has to drag every codebase into a single enormous context and re-read it turn after turn. A mesh keeps each agent’s context small and sharply scoped, and agents trade short, addressed messages instead of duplicating each other’s worlds — multi-repo work at a fraction of the token spend.

The maiTerm mesh cockpit — a node graph of six specialist agents, a list of topics they're collaborating on with turn counts, and a status board

Addressed, never broadcast

Every message routes to a specific role over a stable handle — a rename never misroutes, and an unknown recipient is a hard error, never a silent drop.

Topics keep threads honest

Conversation groups into owned, deduped topics — with opt-in loop caps (soft, hard, time-to-live) for when you want backstops on a runaway exchange.

You stay in the cockpit

Cmd+Shift+M opens a live conversation graph, a topic board with resume/complete controls, and a focused stage + filmstrip view of every agent.

Explore Mesh Workspace →

New — maiLink Companion

Your agents, in your pocket. No cloud in the middle.

maiLink is a phone companion that connects directly to maiTerm running on your own computer. Watch your agents work, answer their questions, approve permissions, and interrupt a runaway turn — from the couch, the garden, anywhere in the house.

It shows you what the agent is doing, not just what it said: its task board streams to the phone and ticks off as work lands (remote SSH sessions included), its background shells appear as a roster with a Stop button each — liveness confirmed against the process list, never guessed from the transcript — and agent-to-agent mesh and bridge traffic reads as its own kind of turn. Tap New conversation to start a fresh session beside the one you’re reading: same host, same directory, clean history.

Now it manages your desk, too. Rename a tab, archive one for later (and restore it from the archived list — it respawns and resumes its agent), or close one for good. Tap Resume workspace to wake a suspended workspace back to life, bringing back exactly the tabs that were running. Mesh workspaces are badged in the inbox with a one-tap Initialize all that readies every agent in them, and any single tab that’s stopped answering has an Initialize of its own.

It travels over your LAN only, on an encrypted, authenticated channel — TLS with a pinned certificate and a per-device paired token. No cloud service sits between your phone and your agents. The single exception is a content-free push “doorbell” hosted on Cloudflare: when an agent needs you while the app is backgrounded, it wakes the app carrying only the tab name and event kind — never a transcript or message. Away from home? Set up a WireGuard VPN back to your LAN rather than exposing anything to the internet.

maiLink on iPhone — an inbox of AI agents, with the ones needing attention pinned to the topAnswering an agent's question from your phone — pick an option or type a free-text reply

Live transcripts

Each agent streams per turn as a distilled chat — with its model, reasoning effort, a live context-window gauge, and compaction shown as a divider in the thread. Its task board and background shells stream alongside it. Fast even on hundred-tab windows and sessions hundreds of megabytes long.

Answer from anywhere

AskUserQuestion prompts arrive as interactive cards — single-select, multi-select, and “Other” free-text — plus reply to or interrupt a running agent, and send images to a Claude Code session, local or over SSH.

Run the desk from the couch

Rename, archive, restore, or close a tab; wake a suspended workspace; ready a whole mesh in one tap; start a fresh conversation beside an existing one. Pair by scanning a QR code — every phone gets its own revocable token, and you choose which tabs are reachable.

Explore maiLink →

New — Chat Threads: channel monitoring

Watch your channels — the bot picks up threads on demand

A bug report lands in a Mattermost thread. Now maiTerm can be watching for it: right-click a tab → Enable chat monitoring…, pick the channels your bot belongs to, and that tab becomes a dispatcher. Whenever someone @mentions the bot in a thread, maiTerm binds the thread to the tab and hands the agent the whole conversation — it reproduces and fixes the issue in that tab’s repository, then posts the resolution back, a plain-language summary for support and technical detail for the devs, without you ever leaving maiTerm. Still prefer to hand-pick? Paste a permalink with /maiterm resolve — both paths land in the same flow. Configure the bot once in Preferences → Integrations.

It can start the conversation, too. An agent that found a regression, or needs a human to settle a question, can open its own thread in a channel it monitors and stay bound to it — and because it asked, every reply comes back without anyone having to @mention a bot they didn’t summon. Whichever way a thread arrives, the agent acknowledges it first, with its read of the ask in one line, so nobody is left wondering whether it was picked up.

You stay in control of what it can act on. Only people you list can summon it, on a thread someone else started only messages that @mention the bot reach the agent, and each is scoped by its sender. The line is read versus change: investigating, explaining, reproducing and answering happen freely on anyone’s ask, while editing code, deploying, or touching data needs an authorized operator’s go-ahead — which the agent requests by @mentioning one of them. A monitoring tab works up to three threads at once — its @ indicator is dim while idle, green with a count once threads are bound — and a fix stays open until a human confirms it works.

Screenshots work both ways. An image attached to a report is staged where the agent can actually open it — including for agents running on a remote host over SSH — and the agent can attach images to its own replies, so a before/after or visual proof of a fix goes back to the thread.

Summoned, not pasted

Monitor the channels the bot belongs to; an @mention in a thread binds it to your dispatcher tab automatically. The agent can open a thread of its own in those channels too. One tab handles up to three threads at once, and overflow queues.

A tiered summon list

Authorized operators carry your full authority; pickup users can summon the bot and get investigation and answers for free, but any change waits on an operator’s go-ahead; everyone else is never picked up. Set both lists in Preferences.

Route it across a mesh

In a mesh workspace, the dispatcher tab can hand an investigation to the peer whose repo matches — staying on the thread itself while the right agent does the work, then posting the answer back.

Explore Chat Threads →

Why maiTerm?

Other terminals give you tabs and splits. maiTerm gives you a system for managing the chaos of real AI-assisted development — where you’re juggling multiple agent sessions (Claude Code, Codex) across projects, SSHing into servers, and trying to remember what you were doing three hours ago.

Know what's in every tab

Interpolated tab names like CustomName %title combine your label with live terminal state. Name a tab “billing API” and always know what’s running in it — no more guessing across 15 identical “bash” tabs.

Restart without losing anything

Reboot your machine, restart maiTerm — every tab comes back exactly as it was, out of the box. Scrollback, layout, SSH sessions, Claude Code sessions. Back up your state on a schedule or export it manually — and import it on a new machine.

Workspace Organization

Group terminals by project. Each workspace has its own pane layout, tabs, and context. Suspend inactive workspaces to free resources — they resume instantly with full state when you need them.

AI Agent Integration

Deep integration with Claude Code and OpenAI Codex through one runtime-neutral pipeline — pick which agents maiTerm wires up in Preferences. 40+ MCP tools let your agent navigate workspaces, manage notes, control preferences, review diffs, and discover what’s running in your tabs. Real-time hooks track what each agent is doing — active tool, permission requests, compaction state. Per-tab, per-workspace, and a global footer dot roll up every agent’s state — working, waiting for permission, or done — so you can see at a glance which ones need you. Works over SSH too via reverse tunnel.

Bridge two agents

Connect two running agent sessions — one local, one over SSH, two related projects, even a Claude Code and a Codex — so they collaborate directly. One agent asks the other questions, requests research, or shares context, and replies come back as new turns. maiTerm spawns a split pane so you see both sides, stamps every message with the sender’s real identity, and keeps the agents deferring to you for the decisions.

Mesh a whole workspace

Bridge connects two agents — a mesh connects them all. Flip a workspace into a mesh and every named agent can message any other by role, addressed and routed so a rename never misroutes. Conversation groups into topics, with opt-in soft, hard, and time-to-live loop caps when you want backstops. Open the cockpit (Cmd+Shift+M) for a live conversation graph, a topic board, and a focused stage + filmstrip view of every agent.

Resolve support threads in-terminal

Watch your Mattermost channels and the bot picks up threads on demand: @mention it and maiTerm binds the thread to a dispatcher tab, which works the bug to resolution — reading the whole thread, fixing it in that tab’s repo, and posting back a support summary plus technical detail. One tab handles up to three threads at once, and the agent can open a thread of its own when it finds something the channel needs to know; you can still hand-pick a thread with /maiterm resolve <permalink>. Authorized operators carry your authority, everyone else gets investigation and answers for free but no changes without an operator’s go-ahead, and a fix stays open until a human confirms. Configure the bot once in Preferences → Integrations.

Reach agents from your phone

maiLink, the companion app, connects directly to maiTerm over your LAN — encrypted, authenticated, no cloud in the data path. Watch live transcripts, follow the agent’s task board and background shells (with a Stop button each), answer agent questions, approve permissions, and interrupt runaway turns from anywhere in the house. Manage the tabs themselves too — rename, archive, restore, close, start a fresh conversation, wake a suspended workspace, or ready a whole mesh in one tap. QR pairing with revocable per-device tokens.

Compose prompts like a human

A multi-line composer dock under every terminal: Enter makes newlines, Cmd+Enter sends, and drafts survive tab switches and restarts. Paste screenshots or drop files and they become attachment chips — over SSH they’re uploaded automatically. No more crafting a five-paragraph prompt on a single shell line.

Built-in Editor

Click any file path in terminal output to open it in an editor tab. Works over SSH too — remote files load transparently via SCP. 50+ languages, auto-reload on external changes, and inline merge view when files change while you have unsaved edits.

Quick Open anything

Double-press Opt (or Cmd+P) for a fuzzy file finder with glob patterns, directory navigation, and recently-opened ordering. It even lists files on the remote host when you’re SSH’d in.

Smart Triggers

Regex triggers watch terminal output for patterns and fire actions — notifications, commands, variable capture. Scope triggers to specific tabs or fire them globally. Build your own automation for builds, deploys, SSH sessions, and more.

Archive and restore tabs

Set up auto-resume on a tab, then archive it. The tab disappears from your tab bar but preserves everything — scrollback, notes, triggers, resume command. When you need that task again, restore and pick up instantly. Pin auto-resume settings so they survive across restarts and replays.

Notes on everything

Every tab has its own markdown notes panel — track TODOs, paste connection strings, jot down what you’re debugging. Workspace-level notes too. Your agent — Claude Code or Codex — can read, write, organize, merge, and clean up your notes via MCP tools, sharing the same scratchpad.

Rust-Powered Terminal

alacritty_terminal does VTE parsing, buffering, and scrollback in the Rust backend, so the frontend only ever paints one screen — no GPU rendering needed. Scrollback is stored in SQLite for crash-safe persistence, and full terminal state survives restarts: tab layout, workspace state, and scrollback history all come back.

Auto-Updates

maiTerm checks for updates automatically via GitHub Releases and installs them with a single click — no manual downloads, no reinstalling. Toggle auto-check on startup in Preferences, or check manually from the menu.

Backup & Selective Import

Export your entire state — workspaces, tabs, scrollback, notes, triggers, preferences. Schedule automatic backups with gzip compression and auto-trim. Import on a new machine and preview what’s inside — pick which workspaces to bring in, choose merge or overwrite, toggle preferences.

Split Pane Cloning

Duplicate a tab and get everything: scrollback, CWD, SSH session, the agent’s resume command, notes, trigger variables. SSH sessions clone to the same remote CWD.

Screenshots

Workspaces and Tabs

Workspaces and tabs

Per-Tab Notes

Notes panel

Code Editor

Editor tab

Tech Stack

Built with Tauri 2 for native performance with a small footprint.

LayerTechnology
FrontendSvelte 5, SvelteKit, TypeScript
BackendRust, Tauri 2
Terminalalacritty_terminal (Rust) + xterm.js (DOM renderer)
EditorCodeMirror 6
StorageSQLite (WAL mode)
PTYportable-pty