---
title: "Запуск OpenCode в sandbox"
description: "Запустите OpenCode в sandbox Lizard: подключите ChatGPT или API-ключ, отправляйте промпты через lizard sandbox prompt или откройте веб-интерфейс OpenCode по приватному URL предпросмотра."
url: https://lizard.build/ru/docs/sandboxes/guides/opencode/
updated: 2026-10-12
---

# Запуск OpenCode в sandbox

Чтобы запустить OpenCode в sandbox на Lizard (lizard.build), подключите учётные данные через `lizard agents` (подписку ChatGPT или ключ Anthropic, OpenAI, OpenRouter или LLM Gateway), создайте sandbox из шаблона `opencode` и отправляйте промпты командой `lizard sandbox prompt <id> --agent opencode "…"`. Если удобнее веб-интерфейс OpenCode, запустите в sandbox `opencode web --hostname 0.0.0.0 --port 4096` и откройте порт командой `lizard sandbox expose`.

**Статус тестов:** команды взяты из Lizard CLI 4.0.42 и раннера агентов платформы по состоянию на 2026-10-12. Шаги с веб-интерфейсом мы сверили с исходным кодом OpenCode 1.18.34, который отдаёт интерфейс и API с одного порта, и с исходным кодом маршрутизатора sandbox в Lizard, который хранит токен доступа в cookie и пропускает WebSocket. Для этой страницы мы ещё не прогоняли ни один из вариантов целиком в работающем sandbox.

## Перед началом

- Lizard CLI, в который вы вошли через `lizard login`, и проект: выполните `lizard init` в папке или передавайте `-p <project>` командам sandbox.
- Lizard Pro или 7-дневный пробный период Pro (нужна карта). Sandboxes оплачиваются посекундно по размеру, пока работают; см. [лимиты](https://lizard.build/ru/docs/platform/limits.md#sandbox-sizes) и [цены](https://lizard.build/pricing).

## Подключение учётных данных

| Учётные данные | Команда |
|---|---|
| Подписка ChatGPT | `lizard agents login chatgpt --open` |
| API-ключ Anthropic | `lizard agents add anthropic` |
| API-ключ OpenAI | `lizard agents add openai` |
| API-ключ OpenRouter | `lizard agents add openrouter` |
| API-ключ LLM Gateway | `lizard agents add llmgateway` |

OpenCode получает все подключённые учётные данные, которые умеет использовать, и каждый ключ или вход открывает модели своего провайдера. Токен подписки Claude он не принимает; для него используйте [Claude Code](https://lizard.build/ru/docs/sandboxes/guides/claude-code.md). Вход через ChatGPT попадает в запуск как короткоживущий токен доступа, а не refresh-токен. API-ключи попадают в запуск как переменные окружения, например `ANTHROPIC_API_KEY`.

OpenCode называет модели в формате `provider/model`. Задайте модель по умолчанию или передавайте `-m` в каждом промпте:

```bash
lizard agents use opencode -m openrouter/anthropic/claude-sonnet-4.5
lizard agents status
```

Если подключён только ключ OpenRouter и модель не выбрана, Lizard запускает `openrouter/openai/gpt-5.3-codex`.

## Создание sandbox

```bash
lizard sandbox create -t opencode --timeout 3600000
```

Сохраните выведенный ID в переменной: `SB=sb_abc123`. В CLI срок жизни по умолчанию составляет пять минут, после чего Lizard удаляет sandbox вместе с файлами; `--timeout 3600000` даёт ему один час. В шаблоне `opencode` есть Node.js 22, закреплённый релиз OpenCode, git, Python 3, ripgrep, curl, jq, unzip и Lizard CLI.

Перенесите код так же, как для Claude Code:

```bash
lizard sandbox exec $SB -- git clone https://github.com/your-org/your-app /workspace/app
```

Для приватного или локального репозитория см. [перенос кода в sandbox](https://lizard.build/ru/docs/sandboxes/guides/claude-code.md#put-your-code-in-the-sandbox).

## Отправка промпта

```bash
lizard sandbox prompt $SB --agent opencode --cwd /workspace/app "add input validation to the signup form"
```

Каждый запрос запускает `opencode run --auto`, который одобряет любой запрос прав, если он не запрещён явно: OpenCode правит файлы и выполняет команды без подтверждения. `--effort <level>` превращается в `--variant` для OpenCode. Продолжить беседу можно с `-c <conversation-id>`; в каждом следующем промпте снова передавайте `--agent opencode` и `--cwd`. Ctrl-C прекращает наблюдение, а `lizard sandbox interrupt $SB` останавливает агента.

Чтобы забрать изменения патчем, см. [как забрать изменения](https://lizard.build/ru/docs/sandboxes/guides/claude-code.md#get-the-changes-back).

## Веб-интерфейс OpenCode

`opencode web` отдаёт браузерный интерфейс OpenCode и его API с одного порта. Запустите его в sandbox и откройте этот порт через [URL предпросмотра](https://lizard.build/ru/docs/sandboxes/preview-urls.md).

Учётные данные из `lizard agents` получают только запуски `lizard sandbox prompt`, поэтому этому серверу нужен свой ключ. Скопируйте его файлом, чтобы он не попал в командную строку:

```bash
printf 'export ANTHROPIC_API_KEY=%s\n' "$ANTHROPIC_API_KEY" > opencode.env
lizard sandbox files put $SB opencode.env /root/opencode.env
rm opencode.env
```

Запустите сервер и откройте порт:

```bash
lizard sandbox exec $SB -- sh -c '. /root/opencode.env && cd /workspace/app && nohup opencode web --hostname 0.0.0.0 --port 4096 >/tmp/opencode.log 2>&1 </dev/null & echo $! > /tmp/opencode.pid'
lizard sandbox expose $SB 4096
```

Откройте URL, который выведет `expose`. В нём есть `?lizard_token=`; Lizard переносит токен в cookie для этого хоста и перенаправляет на ту же страницу уже без токена, поэтому собственные запросы интерфейса, поток событий и WebSocket терминала проходят.

- Флаг `--hostname 0.0.0.0` обязателен. По умолчанию OpenCode слушает `127.0.0.1`, и тогда URL предпросмотра отвечает `Sandbox is not listening on port 4096`.
- Задайте фиксированный `--port`. Без него OpenCode выбирает случайный свободный порт.
- Храните URL в секрете: любой, у кого он есть, может выполнять команды в sandbox через OpenCode. Чтобы дополнительно требовать пароль, добавьте `export OPENCODE_SERVER_PASSWORD=…` в `opencode.env`; используйте имя пользователя `opencode`.
- Лог сервера читайте командой `lizard sandbox exec $SB -- tail -n 50 /tmp/opencode.log`. Остановить сервер можно командой `lizard sandbox exec $SB -- sh -c 'kill $(cat /tmp/opencode.pid)'`.
- Интерфейс останавливается вместе с sandbox. Продлить срок можно командой `lizard sandbox timeout $SB 3600000`.

## Частые проблемы

| Сообщение или симптом | Решение |
|---|---|
| `OpenCode has no credential. Connect one of: …` | Подключите одни из учётных данных выше через `lizard agents`. |
| `Your ChatGPT login expired` | Снова выполните `lizard agents login chatgpt`. |
| В выводе упоминается Codex | Промпт ушёл без `--agent opencode`. |
| URL предпросмотра отвечает 401 | Откройте полный URL, который вывел `expose`, вместе с `lizard_token`. См. [URL предпросмотра](https://lizard.build/ru/docs/sandboxes/preview-urls.md). |
| URL предпросмотра отвечает 502 | Сервер не запущен или слушает `127.0.0.1`. Проверьте `/tmp/opencode.log`. |
| Веб-интерфейс загружается, но все модели выдают ошибку | У сервера нет ключа провайдера. Исправьте `/root/opencode.env`, остановите сервер и запустите его снова. |

## См. также

- [Запуск Claude Code в sandbox](https://lizard.build/ru/docs/sandboxes/guides/claude-code.md)
- [URL предпросмотра](https://lizard.build/ru/docs/sandboxes/preview-urls.md)
- [`lizard agents`](https://lizard.build/ru/docs/cli/agents.md)
- [`lizard sandbox`](https://lizard.build/ru/docs/cli/sandbox.md#coding-agents)
- [Sandboxes](https://lizard.build/ru/docs/sandboxes.md)
