Skip to main content
Glama
Ar9av

termmirror

by Ar9av

termmirror

MCP-сервер, который даёт AI-агентам настоящие интерактивные терминальные сессии — и живой веб-просмотр, где человек может наблюдать за этими сессиями и печатать в них.

Большинство инструментов для агентов умеют запускать только команды, которые завершаются сами. Всё, что запрашивает ввод, перерисовывает экран или ждёт нажатия клавиши, недоступно: установщики, ssh с запросом пароля, pdb, vim, экран настройки пакетного менеджера — и CLI другого агента. termmirror держит настоящие PTY-сессии открытыми, чтобы агент мог работать с ними так же, как человек, — по одному нажатию клавиши за раз, а человек может заглядывать через плечо и вмешиваться, когда нужно.

Один агент управляет CLI другого агента, за которым наблюдают в браузере в реальном времени

Один агент ведёт сессию Claude Code через termmirror — он принял запрос на доверие, задал вопрос и прочитал ответ с экрана. Вид в браузере живой, и ввод на странице идёт напрямую в тот же терминал.

Сессия vim, управляемая нажатие за нажатием

Полноэкранный TUI под теми же инструментами: агент открыл vim, перешёл в конец файла, вошёл в режим вставки и набрал строку.

Возможности

  • Настоящие PTY-сессии. Работают на node-pty с фоновым терминальным эмулятором, который хранит состояние экрана. Никакого tmux или других внешних зависимостей.

  • Создан для TUI. Определение альтернативного экрана, кодирование управляющих и навигационных клавиш, прокрутка истории, которая разворачивает перенесённые строки.

  • Надёжное ожидание. wait возвращается, когда программа ответила и успокоилась, поэтому экран, который вы читаете, отражает ваш ввод, а не состояние до него.

  • Живой веб-просмотр. За любой сессией можно наблюдать в браузере в процессе работы. Ввод на странице идёт напрямую в PTY, так что человек может перехватить управление и вернуть его обратно.

  • Агент-к-агенту. Спроектирован так, чтобы один агент мог управлять CLI другого агента через многоходовой диалог.

Related MCP server: ddx-term-mcp

Требования

  • Node.js 20 или новее

  • macOS или Linux

Установка

git clone https://github.com/Ar9av/termmirror.git
cd termmirror
npm install && npm run build

Зарегистрируйте сервер в Claude Code:

claude mcp add termmirror -- node /absolute/path/to/termmirror/dist/src/index.js

Подойдёт любой MCP-клиент; сервер общается по stdio.

Использование

Три инструмента, используемые в таком порядке:

send_input  →  wait  →  read_screen

read_screen возвращает экран в том виде, какой он сейчас, — снимок, а не журнал всего выведенного. wait — то, что делает чтение осмысленным: он блокируется, пока программа не ответит и не замолчит, поэтому вы видите состояние после вашего нажатия.

Инструменты

Tool

Description

create_session

Запускает сессию (по умолчанию $SHELL или любую команду) и возвращает её id и URL для просмотра.

send_input

Вводит текст в сессию, опционально отправляя его нажатием Enter.

send_keys

Отправляет ctrl+c, escape, tab, стрелки, f1f12, alt+X и подобное.

read_screen

Возвращает видимый экран как обычный текст; scrollback достаёт из истории.

wait

Ждёт, пока сессия ответит и успокоится (idle), или пока не появится текст (pattern).

list_sessions

Перечисляет все сессии — живые или завершённые — с URL для просмотра.

resize

Изменяет размеры терминала.

kill_session

Завершает сессию.

Ожидание

idle используется по умолчанию и в большинстве случаев является правильным выбором. Интерактивные программы непрерывно перерисовывают экран, пока работают, и замолкают, когда наступает ваш ход, поэтому тишина — надёжный сигнал завершения, в том числе для спиннеров и TUI, которые не показывают приглашение, с которым можно было бы сопоставлять. Увеличьте timeout для медленных операций.

Результат no_output означает, что после вашего ввода ничего не вернулось: программа либо занята и молчит, либо ввод не был зарегистрирован.

Используйте pattern, когда ожидаемый текст известен. Он сопоставляется со всем экраном, включая ваш собственный введённый текст, поэтому ждите чего-то, что печатает программа, а не маркера, который вы только что набрали.

Наблюдение за сессией

Первая сессия запускает локальный веб-сервер на порту 7878. Откройте URL, возвращённый create_session, чтобы видеть сессию вживую. Ввод на странице пишет напрямую в PTY, что позволяет человеку ввести пароль или ответить на запрос, который агенту обрабатывать не следует, а затем вернуть управление — никакого протокола передачи, просто тот же терминал с другой стороны.

Variable

Effect

TERMINAL_UI_PORT

Порт для веб-просмотра (по умолчанию 7878; 0 выбирает свободный порт).

TERMINAL_NO_UI

Установите 1, чтобы полностью отключить веб-просмотр.

Пример

node examples/drive-claude.mjs "what is 2+2? reply with just the number"

Один агент запускает claude, принимает его запрос на доверие, задаёт вопрос и читает ответ с экрана — те же инструменты, которые предоставляет MCP-интерфейс, расписанные вручную.

Разработка

npm run build    # compile TypeScript to dist/
npm test         # build, then run the test suite

Набор тестов покрывает семантику ожидания, на которую опирается остальная часть сервера, кодирование клавиш, прокрутку истории, живой поток веб-просмотра и ввод при перехвате управления, а также сквозной прогон по реальному MCP-протоколу.

О названии

Пакет называется termmirror, с двумя m. alias/termirror/ — это пакет-заглушка, который зависит от него, чтобы написание с одной m вело в правильное место.

Лицензия

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI agents with fully interactive terminal sessions, including TUI support, keyboard control, and screen capture across Windows, Linux, and Mac.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to execute commands in a shared tmux session that is simultaneously visible to a human via a web-based terminal UI.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with interactive CLI processes via a real PTY, allowing them to send keystrokes, read screen output, and handle interactive prompts.
    6
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to spawn and interact with real terminal sessions, capturing screenshots of rendered TUI output and sharing live sessions for debugging.
    3
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.

  • Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.

  • Turns any agent into a full agentic application — branded, interactive screens generated at runtime.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ar9av/termmirror'

If you have feedback or need assistance with the MCP directory API, please join our Discord server