open-terminal-guide

Полная русскоязычная справка по Open Terminal — self-hosted REST API терминала для AI-агентов. Используй этот скилл при любых вопросах об Open Terminal: API-эндпоинты, развёртывание (Docker, bare-metal), конфигурация, интеграция с Open WebUI, архитектура, отладка, написание клиентского кода для взаимодействия с Open Terminal. Также используй при работе с кодовой базой open-terminal: структура проекта, runner.py, main.py, MCP-сервер, Jupyter-ноутбуки. Триггерится на: open-terminal, open terminal, remote terminal API, /execute, /files, sandbox API, terminal sessions, Open WebUI terminal.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "open-terminal-guide" with this command: npx skills add nordz0r/skills/nordz0r-skills-open-terminal-guide

Open Terminal — Полная справка

Open Terminal — это легковесный self-hosted REST API, который предоставляет AI-агентам и инструментам автоматизации выделенную среду для выполнения команд, управления файлами и запуска кода. Является частью экосистемы Open WebUI.

Два режима работы

РежимОписаниеБезопасность
DockerИзолированный контейнер с предустановленными Python, Node.js, git, ffmpeg, LaTeX, data science библиотеками и др.Песочница, безопасно для AI-агентов
Bare metalpip install open-terminal и запуск напрямую на машинеКоманды выполняются с правами пользователя — без изоляции

Быстрый старт

# Docker (рекомендуется)
docker run -d --name open-terminal --restart unless-stopped \
  -p 8000:8000 -v open-terminal:/home/user \
  -e OPEN_TERMINAL_API_KEY=your-secret-key \
  ghcr.io/open-webui/open-terminal

# Bare metal через uvx (без установки)
uvx open-terminal run --host 0.0.0.0 --port 8000 --api-key your-secret-key

# Bare metal через pip
pip install open-terminal
open-terminal run --host 0.0.0.0 --port 8000 --api-key your-secret-key

Если API-ключ не задан, он генерируется автоматически и выводится в логи.

Аутентификация

Все эндпоинты кроме /health требуют Bearer-токен:

Authorization: Bearer <OPEN_TERMINAL_API_KEY>

WebSocket-терминалы используют first-message auth — первое сообщение после подключения должно быть JSON:

{"type": "auth", "token": "<api_key>"}

Основные группы API

ГруппаНазначение
POST /executeЗапуск команд как фоновых процессов
GET /execute/{id}/statusПоллинг вывода и статуса
POST /execute/{id}/inputОтправка stdin в процесс
DELETE /execute/{id}Завершение (kill) процесса
GET /files/listЛистинг директории
GET /files/readЧтение файла (текст/PDF/бинарные)
POST /files/writeЗапись файла
POST /files/replaceFind-and-replace в файле
GET /files/grepПоиск по содержимому файлов
GET /files/globПоиск файлов по имени (glob-паттерны)
GET /files/displayОткрытие файла в UI пользователя
POST /files/uploadЗагрузка файла (multipart или URL)
POST /api/terminalsСоздание интерактивной PTY-сессии
WS /api/terminals/{id}WebSocket для терминала
GET /portsДетекция слушающих TCP-портов
/proxy/{port}/{path}Reverse-proxy к localhost:{port}
GET /healthHealth check (без аутентификации)

Подробная информация по каждому эндпоинту — в references/api.md.

Модель выполнения команд

Команды запускаются через POST /execute как фоновые процессы:

  1. Команда спавнится в PTY (Unix) / WinPTY (Windows) / пайпы (fallback)
  2. Получает UUID-идентификатор, вывод пишется в JSONL-лог в LOG_DIR
  3. Статус: runningdone (или killed)
  4. Вывод читается через поллинг GET /execute/{id}/status с offset и tail
  5. Готовые процессы автоматически удаляются через 5 минут после завершения

Параметр wait (0–300 сек.) позволяет дождаться завершения команды inline — удобно для коротких команд.

Интерактивные терминалы

PTY-сессии управляются через REST + WebSocket:

  1. POST /api/terminals — создать сессию (лимит: MAX_TERMINAL_SESSIONS, по умолчанию 16)
  2. WS /api/terminals/{id} — подключиться (first-message auth → бинарные фреймы ввода/вывода)
  3. Resize: текстовый JSON-фрейм {"type": "resize", "cols": 120, "rows": 40}
  4. Мёртвые сессии автоматически очищаются при листинге

Конфигурация

Приоритет (от высшего к низшему):

  1. CLI-флаги (--host, --port, --api-key)
  2. Переменные окружения (OPEN_TERMINAL_*)
  3. User config: ~/.config/open-terminal/config.toml
  4. System config: /etc/open-terminal/config.toml
  5. Встроенные значения по умолчанию

Подробная таблица всех переменных окружения и параметров — в references/configuration.md.

Docker-специфичные переменные

ПеременнаяОписание
OPEN_TERMINAL_PACKAGESПробелоразделённый список apt-пакетов для установки при старте
OPEN_TERMINAL_PIP_PACKAGESПробелоразделённый список pip-пакетов для установки при старте

Обрабатываются в entrypoint.sh при каждом запуске контейнера.

Docker secrets

Поддерживается конвенция _FILE (как у PostgreSQL):

  • OPEN_TERMINAL_API_KEY_FILE=/run/secrets/api_key — значение читается из файла
  • Нельзя задавать одновременно VAR и VAR_FILE

Docker socket

Для доступа к Docker CLI из контейнера (сборка образов, запуск контейнеров):

docker run -d -p 8000:8000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v open-terminal:/home/user \
  ghcr.io/open-webui/open-terminal

entrypoint.sh автоматически добавляет пользователя в группу сокета.

Интеграция с Open WebUI

Open Terminal интегрируется с Open WebUI двумя способами:

Direct Connection (из браузера)

Пользователь подключает свой инстанс через User Settings → Integrations → Open Terminal. Запросы идут напрямую из браузера.

System-Level (через бэкенд)

Админ настраивает через Admin Settings → Integrations → Open Terminal. Запросы проксируются через бэкенд Open WebUI. Можно настроить несколько терминалов с контролем доступа по пользователям/группам.

В обоих случаях подключение добавляется в секции Open Terminal (не как tool server) — это даёт файловый сайдбар для навигации, загрузки и редактирования файлов.

Архитектура кодовой базы

Для работы с исходным кодом open-terminal — см. references/architecture.md.

MCP-сервер

Open Terminal может работать как MCP (Model Context Protocol) сервер:

# Требует установки: pip install open-terminal[mcp]
open-terminal mcp --transport stdio
open-terminal mcp --transport streamable-http --host 0.0.0.0 --port 8000

Все FastAPI-эндпоинты автоматически экспонируются как MCP-инструменты через FastMCP.from_fastapi().

Jupyter Notebooks

Скрытые эндпоинты (не в OpenAPI-схеме) для per-cell выполнения ноутбуков:

  1. POST /notebooks — создать сессию (привязка к .ipynb файлу, запуск ядра)
  2. POST /notebooks/{session_id}/execute — выполнить ячейку (по индексу, с возможностью override source)
  3. GET /notebooks/{session_id} — статус сессии
  4. DELETE /notebooks/{session_id} — остановить ядро

Сессии автоматически удаляются после 30 минут простоя. Ноутбук сохраняется на диск после каждого выполнения.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

open-webui-guide

No summary provided by upstream source.

Repository SourceNeeds Review
General

zapret-openwrt-guide

No summary provided by upstream source.

Repository SourceNeeds Review
General

ollama-search

No summary provided by upstream source.

Repository SourceNeeds Review
General

nextcloud-admin

No summary provided by upstream source.

Repository SourceNeeds Review