Skip to main content
Glama
termmirror

termmirror

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: spectatty

Требования

  • 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, стрелки, f1–f12, 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

Related MCP Connectors

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
    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.
    2 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to securely execute terminal commands with persistent sessions, async jobs, and mission control, while providing a live dashboard for human oversight.
    4
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Give AI agents a persistent, interactive terminal with support for SSH, REPLs, database CLIs, TUI apps, and long-running processes.
    9
    41 PyPI
    12
    MIT