A modern terminal,
reimagined.

Real PTY sessions. ANSI rendering by xterm.js. An encrypted vault for SSH credentials. AI assistance from Anthropic, OpenAI, or Ollama — all in one tab-grouped, themeable terminal.

$curl -L https://mterminal.dev/install.sh | bash
MIT licensed·Open source·Linux · Windows · macOS· Star on GitHub

Features

Everything a terminal should be — and a few things it never was.

workspace
ssh2
voyager-prod
git pull --rebase
1
logs
tail -f api.log
2
frontend2
vite dev
ready in 412ms
3
storybook
4
backend1

01 · Tabs

Multi-tab PTY with groups.

Each tab is an independent PTY session. Group them by project, color them by intent, drag them between groups. Live labels track your cwd and current command in real time.

vault unlocked
saved hosts4
voyager-prod
deploy@voyager.production
2m
ci-runner-eu
runner@ci-eu.internal
1h
staging
deploy@stg.voyager.dev
yesterday
bastion
arthur@bastion.corp
3d
XChaCha20-Poly1305 · Argon2id m=64 MiB

02 · Vault

Encrypted SSH credentials.

Saved hosts and secrets sealed with XChaCha20-Poly1305 and Argon2id (m = 64 MiB). Your credentials never touch disk in plaintext, on any platform.

ai command
Anthropic·claude-sonnet
⌃⇧P

03 · AI

Models that read your shell.

Anthropic, OpenAI, or local Ollama. Open the palette with ⌃⇧P, side chat with ⌃⇧A, or right-click to explain any selection. Your keys, your privacy.

mcp listening/run/user/1000/mterminal.sock
// → inspector → mTerminal
{
"jsonrpc": "2.0",
"method": "send_keys",
"params": {
"tab": 3,
"keys": "pnpm test --watch\n"
}
}
// 0 ms
{ "result": "ok" }
list_tabs · get_output · send_keys · 3 clients connected

04 · MCP

An embedded MCP server.

Other tools speak to your terminal over a Unix socket: list_tabs, get_output, send_keys. Build agents that drive shells like a human would.

Why

Built around three questions
most terminals never ask.

Productivity

Why does context-switching cost so much?

Tab groups, persistent workspaces, live labels, and a command palette that finds anything in milliseconds. Open seven projects, close the laptop, reopen tomorrow — every tab, every group, every color in place.

Security

Where do my credentials really live?

An on-disk vault sealed with modern AEAD cryptography. Master password derived through Argon2id, never weakened, never bypassed. Your SSH keys load into memory only the moment you connect.

Extensibility

Can my terminal speak to other tools?

An embedded MCP server exposes the entire session over JSON-RPC. Pair it with any AI client, route it through agents, drive it from scripts. The terminal stops being a dead-end and starts being an interface.

Marketplace

A registry that runs on the edge. A CLI that respects your time.

The mTerminal-marketplace monorepo bundles a Cloudflare Workers backend, the mtx author CLI, and the shared marketplace-types + manifest-validator packages that keep clients and the registry honest.

View source
~ publish a new extensionlive shell
// install the CLI
$ pnpm add -g mtx
// then walk the workflow
$ mtx login// authenticate against the marketplace worker
$ mtx keygen// generate the signing keypair (Ed25519)
$ mtx init my-extension// scaffold a new extension with manifest + types
$ mtx pack// build, sign, and produce the .mtx bundle
$ mtx publish// push the signed bundle to the registry
published · signature verified · live in the registry
ready for next release
── live feed
01

Author keys

Each author signs every release with an Ed25519 key. The marketplace verifies the signature on publish; mTerminal verifies it again on install.

02

Bundle as .mtx

`mtx pack` runs a build, validates the manifest, and emits a single signed archive. Reproducible. Inspectable. Versioned per package.

03

Publish anywhere

Push to the hosted registry, or stand up your own — the worker is open source, runs on Cloudflare D1 + R2 + KV, and ships with a smoke harness.

Backend stack

  • HonoHTTP router on Cloudflare Workers
  • D1SQLite — extension + author metadata
  • R2object store for signed .mtx bundles
  • KVsession tokens

Themes

17 built-in palettes. One keystroke away.

Switch live from the command palette. Every theme keeps the same ANSI mapping so muscle memory survives the jump.

01 / 17mTerminal
~/workspace/api · mTerminalzsh · 120×32
pnpm test --filter @app/payments
// On branch main · ahead 2 · clean
PASS src/lib/charge.test.ts
PASS src/lib/refund.test.ts
PASS src/lib/webhook.test.ts
Tests: 28 passed, 28 total
Time: 1.42s
git push origin main
8a3f2c1..d4e9b2a main → main
kubectl rollout status deploy/api
✔ deployment "api" successfully rolled out
mTerminal·Default · onyx & amberANSI · 256 colors

⌃⇧P · type theme · pick · arrow keys to scrub

Download

Install on your machine in under a minute.

Linux

Universal installer

Alternatives

.deb (Debian, Ubuntu)

AUR (Arch)

AppImage

Windows

PowerShell installer

Alternatives

NSIS (per-user, no admin)

Scoop (preview)

macOS

Homebrew cask

Alternatives

Universal DMG (arm64 + x64)

View all releases on GitHub

Need an older build? Releases ≥ v0.3.0 are signed.