Команда хочет OpenCode для ревью PR в приватной сети, но застревает на вопросе «хватит ли VPS на 4 ГБ». Мы прогнали одинаковые нагрузки opencode serve + PR review на трёх Linux VPS (4/8/16 ГБ) и замерили пик RAM, swap и E2E-время. **Итог: 4 ГБ для лёгких API-ревью едва; 8 ГБ — минимум для команды; 16 ГБ при параллельных multi-repo + MCP.**
На прошлой неделе к нам обратилась команда из 12 backend-разработчиков: они хотят OpenCode для PR code review в корпоративной сети — без облачного GitHub Copilot, diff'ы кода не должны покидать приватную сеть. Ops-лид положил на стол три котировки VPS — 4 ГБ, 8 ГБ, 16 ГБ — и спросил: «Какой тариф брать?»
Это не вопрос «что такое OpenCode» — это вопрос сколько ресурсов реально потребляет self-hosted review-сервис. Мы прогнали одинаковые нагрузки opencode serve + PR review на трёх Linux VPS (Ubuntu 22.04, 2 vCPU, отличается только RAM) и замерили пик RAM, события swap и E2E-время. Итог сразу:
- 4 ГБ: личные тесты / лёгкие single-repo ревью — работает, но swap частый
- 8 ГБ: минимальная рабочая линия для ежедневных командных ревью
- 16 ГБ: параллельные multi-repo ревью + MCP + длинные сессии — рекомендуемый production default
Что реально работает при локальном деплое
Многие думают, что opencode serve — просто лёгкий веб-сервис. Сам процесс скромный (idle ~150–250 МБ RSS). Но при code review агент выполняет цепочку локальных операций на сервере:
| Операция | Типичное влияние на память |
|---|---|
git clone / git diff больших репо |
200 МБ–1 ГБ (зависит от размера) |
| LSP-серверы (TypeScript, Go и т.д.) | 300 МБ–800 МБ/инстанс |
Подпроцессы npm test / pytest |
500 МБ–2 ГБ |
| MCP-серверы (filesystem, github и т.д.) | 100 МБ–500 МБ/инстанс |
| SQLite БД сессий (долгосрочный рост) | до 1–2 ГБ (#16729) |
Размер сервера — не про opencode serve --port 4096 отдельно, а про пик памяти review-подпроцессов.
Два режима деплоя
OpenCode предлагает два self-hosted входа (официальная документация):
opencode serve (headless API-сервер)
OPENCODE_SERVER_PASSWORD=your-secret opencode serve \
--hostname 0.0.0.0 \
--port 4096
- Открывает OpenAPI 3.1 эндпоинты (
/docдля Swagger) - TUI-клиенты подключаются через
opencode attach http://host:4096 - Идеален для CI webhook и командных review-шлюзов
opencode web (браузерный UI)
OPENCODE_SERVER_PASSWORD=your-secret opencode web \
--hostname 0.0.0.0 \
--port 4096
- Автоматически открывает браузерный интерфейс
- Удобно для ручной вставки PR diff
- Production: Nginx/Caddy reverse proxy + HTTPS
Базовая безопасность: всегда задавайте OPENCODE_SERVER_PASSWORD; не выставляйте 0.0.0.0 в интернет без auth и firewall.
Тестовая среда
| Параметр | Спецификация |
|---|---|
| VPS | Три Ubuntu 22.04, 2 vCPU, SSD 40 ГБ, RAM 4/8/16 ГБ |
| OpenCode | 2026.7, подключение к Anthropic Claude Sonnet API |
| Тестовые репо | ① TypeScript monorepo (pnpm, ~120 пакетов) ② Go-микросервис (с Docker Compose) |
| Задача review | Симуляция PR: агент читает diff → lint → unit-тесты → Critical/Warning/Suggestion |
| Сэмплирование | 3 прогона на сценарий, медиана; free -m + /proc/PID/status для пиков |
Сравнение трёх уровней памяти
Сценарий S1: Лёгкий single-repo PR (3 файла, без тестов)
| Конфиг | Пик RAM | Swap | Время review |
|---|---|---|---|
| 4 ГБ | 2,1 ГБ | лёгкий (~80 МБ) | 38s |
| 8 ГБ | 2,1 ГБ | нет | 36s |
| 16 ГБ | 2,1 ГБ | нет | 35s |
4 ГБ едва пригоден — swap уже заметен.
Сценарий S2: Средний PR + lint + unit-тесты
| Конфиг | Пик RAM | Swap | Время review |
|---|---|---|---|
| 4 ГБ | 3,8 ГБ | сильный (~1,2 ГБ) | 2m 48s |
| 8 ГБ | 3,6 ГБ | нет | 1m 12s |
| 16 ГБ | 3,6 ГБ | нет | 1m 08s |
4 ГБ удваивает задержку — 8 ГБ точка перелома.
Сценарий S3: Параллельный review 2 репо + MCP filesystem
| Конфиг | Пик RAM | Swap | Время review |
|---|---|---|---|
| 4 ГБ | OOM Kill | — | сбой |
| 8 ГБ | 7,2 ГБ | частый (~2 ГБ) | 4m 15s |
| 16 ГБ | 6,8 ГБ | нет | 2m 02s |
8 ГБ работает, но дёргается; 16 ГБ — комфортная зона.
Сценарий S4: Длинная сессия (48 ч непрерывно, 20+ review)
| Конфиг | RSS процесса | SQLite DB | Системный swap |
|---|---|---|---|
| 4 ГБ | 1,4 ГБ | 890 МБ | постоянно 2 ГБ+ |
| 8 ГБ | 1,1 ГБ | 1,2 ГБ | 1,15 ГБ (совпадает с #16729) |
| 16 ГБ | 980 МБ | 1,2 ГБ | нет |
Раздувание БД — общая проблема. Включите retention в opencode.json:
{
"retention": {
"days": 30
}
}
4 ГБ: когда можно терпеть
Подходит для:
- Соло-разработчик, иногда ревьюит свои маленькие PR
- Только облачные API, без локальных тестов
- Готовность к review в 2–3× медленнее и редким OOM-рестартам
Не подходит для:
- Общего командного review-сервера
- MCP или параллельных review
- 24/7 always-on сервиса
Лайфхак: VPS 4 ГБ по требованию — systemctl start opencode по PR webhook, shutdown после review. Дешевле 24/7 на 16 ГБ, но cold start 15–30 секунд.
8 ГБ: минимум для маленькой команды
8 ГБ — наша стартовая рекомендация для большинства команд:
- Одновременно
opencode serve+ 1 LSP + полный single-repo review flow - Пики обычно 5–7 ГБ, 1–2 ГБ для ОС
- VPS ~$12–24/мес (Hetzner, Vultr, DigitalOcean)
Обратите внимание:
- Ограничьте параллельные сессии до 1–2
- Еженедельный рестарт +
VACUUMБД OPENCODE_DIAGNOSTICS=1для мониторинга памяти
16 ГБ: production default
Сразу 16 ГБ когда:
- 3+ инженеров делят один review-шлюз
- Параллельные review на 2+ репо
- MCP включён (GitHub, Jira, filesystem)
- Нужны
npm test/docker composeдля валидации PR - 24/7 без частого обслуживания
VPS 16 ГБ ~$24–48/мес — на порядки дешевле part-time человека-ревьюера.
Помимо RAM
| Измерение | Рекомендация |
|---|---|
| CPU | 2 vCPU минимум; 4 vCPU для параллельных review |
| Диск | SSD 40 ГБ+; SQLite DB и git clone занимают место |
| Сеть | HTTPS исходящий к API моделей; входящий только private IP |
| ОС | Ubuntu 22.04 LTS или Debian 12; Bun runtime в комплекте с OpenCode |
| Бэкап | Регулярные бэкапы ~/.local/share/opencode/ |
Гибрид: VPS + облачный Mac
Если review включает валидацию iOS / Xcode build, никакой Linux VPS не запустит xcodebuild. Два распространённых гибридных паттерна:
- Linux VPS (8 ГБ) для
opencode serve— общий code review - Облачный Mac mini (16 ГБ+) для iOS review через MCP или webhook
Наш бенчмарк RAM Claude Code детально тестировал уровни M4 Mac mini — модель agent-подпроцессов OpenCode близка к Claude Code.
Чеклист деплоя за 5 минут
# 1. Установить OpenCode
curl -fsSL https://opencode.ai/install | bash
# 2. Настроить API key (env-file, не plaintext в командной строке)
cat > /etc/opencode.env <<'EOF'
ANTHROPIC_API_KEY=sk-ant-...
OPENCODE_SERVER_PASSWORD=your-strong-password
OPENCODE_SERVER_USERNAME=review-bot
EOF
# 3. Создать systemd-сервис
sudo tee /etc/systemd/system/opencode-serve.service <<'EOF'
[Unit]
Description=OpenCode Review Server
After=network.target
[Service]
EnvironmentFile=/etc/opencode.env
ExecStart=/usr/local/bin/opencode serve --hostname 127.0.0.1 --port 4096
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 4. Запуск
sudo systemctl enable --now opencode-serve
# 5. Nginx reverse proxy (опционально, HTTPS)
# location /opencode/ { proxy_pass http://127.0.0.1:4096/; }
Таблица быстрого выбора
| Ваша ситуация | Рекомендация | В месяц |
|---|---|---|
| Соло, редкие маленькие PR | VPS 4 ГБ (on-demand) | $4–8 |
| Команда 2–5, один репо | VPS 8 ГБ | $12–24 |
| Команда 5+, параллельные multi-repo | VPS 16 ГБ | $24–48 |
| Включая iOS/Xcode review | Облачный Mac mini 16 ГБ | почасово/месяц |
| Высокий compliance (код on-prem) | 16 ГБ on-prem + локальные модели | разовая покупка железа |
Заключение
Узкое место по памяти при локальном OpenCode Review — не сам opencode serve, а git-, LSP-, test- и MCP-подпроцессы, которые агент запускает при review. 4 ГБ работает, но тесно; 8 ГБ — минимум для команды; 16 ГБ — спокойный production-выбор. Для iOS review или Xcode MCP смотрите облачный Mac mini — больше RAM на Linux VPS не решит xcodebuild.