Atlas / MCP servers / ar9av / termmirror

termmirrorSAFE

mcp/ar9av/termmirror

MCP server giving AI agents real interactive terminal sessions - PTY, TUIs, REPLs, SSH, even another agent's CLI - with a live web view a human can watch and type into

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
16 10r · 5w · 1d
Transport
stdio
License
MIT
Stars
2
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

An MCP server that gives AI agents real interactive terminal sessions — and a live web view where a human can watch those sessions and type into them.

Most agent tooling can only run commands that exit on their own. Anything that prompts, redraws, or waits for a keystroke is out of reach: installers, ssh with a password challenge, pdb, vim, a package manager's configuration screen — and another agent's CLI. termmirror keeps real PTY sessions open so an agent can work them the way a person does, one keystroke at a time, while a human can look over its shoulder and step in when needed.

One agent driving a Claude Code session through termmirror — it accepted the trust prompt, asked a question, and read the answer off the screen. The browser view is live, and typing in it goes straight to the same terminal.

A full-screen TUI under the same tools: the agent opened `vim`, moved to the end of the file, entered insert mode, and typed a line.

Features

  • Real PTY sessions. Backed by node-pty with a headless terminal emulator holding

screen state. No tmux or other external dependency.

  • Built for TUIs. Alternate-screen detection, key encoding for control and navigation

keys, and scrollback that unwraps soft-wrapped lines.

  • Reliable waiting. wait returns once a program has responded and settled, so the

screen you read reflects your input rather than the state before it.

  • Live web view. Any session can be watched in the browser as it runs. Typing in the

page goes straight to the PTY, so a human can take over and hand back.

  • Agent-to-agent. Designed so one agent can drive another agent's CLI through a

multi-turn conversation.

  • Browser sessions too. The same three properties for a real Chrome window: the agent

drives it by accessibili

Read from source at commit f8472c3753e7OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add termmirror -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "termmirror": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (16)

10 read · 5 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
browser_actread
browser_navigateread
browser_openread
browser_snapshotread
browser_tabsread
browser_waitread
create_sessionwrite
kill_sessiondestructive
list_sessionsread
read_screenread
resizeread
send_inputwrite
send_keyswrite
start_recordingwrite
stop_recordingwrite
waitread
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (2 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (4)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
kill_session
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/mcp.ts:14
const { version } = createRequire(import.meta.url)("../../package.json") as { version: string };
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
alias/termirror/package.json
termmirror
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, @xterm/headless, @xterm/xterm, node-pty, playwright-core, ws, zod, @types/node
Why it matters. 10 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha f8472c3753e7full audit observations/trust-audit/mcp-server/ar9av__termmirror.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11f8472c3753e7SAFEB89first audit
06

Questions

What is the termmirror MCP server?

MCP server giving AI agents real interactive terminal sessions - PTY, TUIs, REPLs, SSH, even another agent's CLI - with a live web view a human can watch and type into

What tools does termmirror expose?

16 in total: 10 read-only, 5 that write, and 1 that can delete or overwrite (kill_session). Every one is listed on this page with its risk.

Is termmirror safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does termmirror need?

No credential environment variables were found in its source, so it appears to need none.

How does termmirror run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as termmirror at 0.2.0.

How current is this page?

The grade is for one exact copy of the source (f8472c3753e7), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement