Локальный веб-интерфейс для pi coding agent. Pi Web читает локальные файлы сессий pi и предоставляет рабочее пространство в браузере для просмотра сессий, общения с агентом в реальном времени, настройки моделей, управления навыками и предварительного просмотра файлов проекта.
Одна и та же сессия pi в CLI и Pi Web: структурированные вызовы инструментов, удобочитаемый Markdown, просмотр сессий и наглядные результаты.
Для работы Pi Web требуется Node.js 22.19.0 или новее. Проверьте версию командой node --version.
Запуск без установки:
npx @agegr/pi-web@latestИли глобальная установка:
npm install -g @agegr/pi-web
pi-webЗатем откройте http://127.0.0.1:30141. После запуска сервера CLI попытается автоматически открыть браузер. По умолчанию Pi Web прослушивает только 127.0.0.1.
Параметры:
pi-web --port 8080 # другой порт
pi-web --hostname 0.0.0.0 # доступ в доверенной сети
pi-web -p 8080 -H 0.0.0.0 # сочетание параметров
pi-web --no-open # не открывать браузер автоматически
PORT=8080 pi-web # порт также можно задать переменной окружения
PI_WEB_HOSTNAME=0.0.0.0 pi-web # явное разрешение сетевого доступа
PI_WEB_ALLOWED_HOSTS=pi-web.internal pi-web # точное имя прокси или другого хоста
PI_WEB_PASSWORD='длинный-случайный-пароль' pi-web # Basic Auth (имя пользователя: pi)
PI_WEB_NO_OPEN=1 pi-web # удобно для фоновой службыЗадайте PI_WEB_PASSWORD, чтобы защитить веб-интерфейс и все конечные точки API с помощью HTTP Basic Auth. Имя пользователя всегда pi. Если переменная не задана или пуста, аутентификация отключена.
Pi Web может вызывать агента с широкими полномочиями. Basic Auth не шифрует пароль при передаче, поэтому не публикуйте обычный HTTP-сервер в интернете. Для удалённого доступа используйте HTTPS через доверенный обратный прокси или надёжное VPN-подключение.
API-запросы принимаются для loopback-имён, IP-адресов, выбранного имени хоста и точных имён из PI_WEB_ALLOWED_HOSTS, разделённых запятыми. Задайте эту переменную, если доверенный обратный прокси использует другое внешнее имя хоста.
Для серверных запросов к моделям и API Pi Web использует стандартные переменные окружения HTTP_PROXY, HTTPS_PROXY и NO_PROXY.
В macOS и Linux:
HTTP_PROXY=http://127.0.0.1:7890 \
HTTPS_PROXY=http://127.0.0.1:7890 \
NO_PROXY=localhost,127.0.0.1 \
npx @agegr/pi-web@latestВ Windows PowerShell:
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:NO_PROXY = "localhost,127.0.0.1"
npx @agegr/pi-web@latest- Продолжайте работу с прежнего места: просматривайте предыдущие разговоры с pi по проектам, не разыскивая их в истории терминала или путях к сессиям.
- Безопасно пробуйте разные подходы: продолжайте диалог с более раннего сообщения или создавайте отдельный форк сессии.
- Работайте с разными ветками: переключайте Git worktree в боковой панели, чтобы новые сессии и Explorer следовали за выбранным рабочим деревом.
- Общайтесь с агентом рядом с проектом: просматривайте файлы слева, а исходный код, документы, изображения, аудио и PDF — справа, пока агент работает.
- Следите за состоянием сессии: в верхней панели видны использование контекста, стоимость, состояние сжатия и сведения о системном промпте.
- Реже обращайтесь к терминалу: управляйте моделями, учётными данными для входа и API, тестированием моделей и переключателями навыков в веб-интерфейсе.
- Используйте удобный язык интерфейса: переключайтесь между поддерживаемыми языками в верхней панели.
- Каталог данных: по умолчанию Pi Web читает
~/.pi/agent/sessions. Чтобы указать другой каталог агента pi, задайтеPI_CODING_AGENT_DIR. - Файлы сессий: файлы хранятся по пути
~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl. - Среда выполнения: запускайте Pi Web в той же ОС или контейнере, что и pi, чтобы рабочие каталоги из сессий были доступны.
- Настройка моделей: панель Models читает и записывает
models.jsonв каталоге агента pi. Список моделей и модель по умолчанию берутся из конфигурации pi. - Доступ к файлам: просмотр файлов ограничен выбранным каталогом проекта и рабочими каталогами, которые встречаются в сессиях.
- Git worktree: условия отображения переключателя, создание новых рабочих деревьев и их удаление описаны в документе Worktrees in Pi Web.
- Форк и ветка внутри сессии: Fork создаёт новый файл
.jsonl, а «Edit from here» — другую ветку внутри того же файла сессии. - Интернационализация: использование переводов и добавление языков или текстов интерфейса описаны в документе Internationalization.
npm install
npm run devЛокальный сервер разработки доступен по адресу http://127.0.0.1:30141.
Основные проверки:
node_modules/.bin/tsc --noEmit
npm run lintНе запускайте next build / npm run build во время локальной разработки. Эта команда записывает данные в .next/ и может помешать работе сервера разработки; выполняйте сборку только при подготовке релиза.
app/
api/
agent/ # создание и управление AgentSession, события SSE
auth/ # управление OAuth и ключами API
cwd/browse/ # просмотр каталогов на сервере
cwd/validate/ # проверка пользовательского рабочего каталога
default-cwd/ # рабочий каталог pi по умолчанию
files/ # список, чтение, просмотр и отслеживание файлов
home/ # домашний каталог текущего пользователя
models/ # доступные модели, модель по умолчанию, уровни рассуждения
models-config/ # чтение и запись models.json, проверка моделей
sessions/ # чтение, переименование, удаление, контекст и экспорт сессий в HTML
skills/ # список, поиск, установка, включение и отключение навыков
components/
AppShell.tsx # основной макет, состояние URL, верхние панели, вкладки файлов
SessionSidebar.tsx # выбор проекта, дерево сессий, Explorer
DirectoryPicker.tsx # просмотр и изменение рабочего каталога
ChatWindow.tsx # сообщения, SSE, перетаскивание изображений, мини-карта
ChatInput.tsx # модели, инструменты, рассуждение, сжатие и слеш-команды
MessageView.tsx # сообщения, рассуждения, вызовы инструментов и результаты
ModelsConfig.tsx # настройка моделей и аутентификации
SkillsConfig.tsx # управление навыками
FileExplorer.tsx # дерево файлов
FileViewer.tsx # просмотр кода, diff, изображений, аудио, PDF и DOCX
lib/
directory-browser.ts # нормализация каталогов и безопасный просмотр
http-dispatcher.ts # настройка HTTP(S)-прокси для серверных запросов
rpc-manager.ts # жизненный цикл AgentSessionWrapper и глобальный реестр
session-reader.ts # разбор файлов сессий .jsonl и контекста веток
normalize.ts # нормализация имён полей toolCall
file-access.ts # границы безопасного чтения файлов
file-paths.ts # кодирование путей и работа с относительными путями
markdown.ts # настройка плагинов Markdown, Mermaid и KaTeX
pi-types.ts # типы, связанные с pi
hooks/
useAgentSession.ts # загрузка сессии, команды и автомат состояний SSE
useAudio.ts # звук завершения
useDragDrop.ts # перетаскивание изображений
useTheme.ts # переключение темы
bin/
pi-web.js # точка входа npm CLI
instrumentation.ts # инициализация HTTP-диспетчера сервера
