Opencode - плагины для подключения по ssh
Opencode - плагины для подключения по ssh
SSH-плагины для opencode
Существует несколько вариантов для подключения к удалённым машинам по SSH:
1. opencode-ssh-session
Наиболее простой плагин для persistent SSH-сессий.
Установка:
bun install -g opencode-ssh-session
или в opencode.json:
{"plugin": ["opencode-ssh-session"]}
Инструменты:
ssh_connect— подключение к хосту (например,user@server)ssh— выполнение команды на удалённой машинеssh_disconnect— закрытие сессииssh_upload— загрузка файла на серверssh_download— скачивание файла с сервера
Сохраняет shell state (pwd, env) между командами.
Ссылка: https://github.com/PedroKlein/opencode-ssh-session
2. bifrost
Мульти-серверный плагин на базе ssh2 (чистый JavaScript, без внешних SSH-процессов).
Установка:
bun install -g @well0nez/bifrost
Конфигурация: файл ~/.config/opencode/bifrost.json
{
"servers": {
"production": {
"host": "192.168.1.100",
"user": "root",
"keyPath": "~/.ssh/prod_key"
},
"staging": {
"host": "10.0.0.5",
"user": "deploy"
}
},
"default": "production"
}
Инструменты:
bifrost_connect— подключение к серверуbifrost_exec— выполнение командыbifrost_status— статус подключенийbifrost_disconnect— отключениеbifrost_upload/bifrost_download— передача файлов
Автоматически определяет, к какому серверу обращаться, по ключевым словам (server, production, deploy, remote).
Ссылка: https://github.com/well0nez/bifrost
3. opencode-rexd-target
Перенаправляет вызовы инструментов на удалённую машину через REXD (Remote Execution Daemon).
Требования: на удалённом сервере должен быть установлен и запущен rexd.
Конфигурация: файл ~/.config/rexd/targets.json
{
"version": 1,
"targets": {
"prod": {
"transport": "ssh",
"host": "example.com",
"user": "deploy",
"workspaceRoots": ["/srv/app"],
"defaultCwd": "/srv/app"
}
}
}
Команды: /target list, /target use <name>, /target status, /target clear
Ссылка: https://github.com/samiralibabic/opencode-rexd-target
4. Самодельный SSH-tool
Можно добавить простой SSH-инструмент через Bun shell без установки плагинов.
Файл ~/.config/opencode/tools/remote.ts:
import { tool } from "@opencode-ai/plugin";
export default tool({
name: "remote",
description: "Execute a command on a remote server via SSH.",
args: {
target: tool.schema.string().describe("Hostname alias (e.g. 'prod-db')"),
command: tool.schema.string().describe("Command to run"),
},
async execute({ target, command }, context) {
const result = await $`ssh -o BatchMode=yes ${target} ${command}`;
return result.stdout;
},
});
| Плагин | Тип подключения | Мульти-сервер | Передача файлов | Сохранение state | Ссылка |
|---|---|---|---|---|---|
| opencode-ssh-session | SSH-процесс (один) | Нет | Да (upload/download) | Да | https://github.com/PedroKlein/opencode-ssh-session |
| bifrost | ssh2 (JS-библиотека) | Да | Да (upload/download) | Да | https://github.com/well0nez/bifrost |
| opencode-rexd-target | REXD-демон через SSH | Да | Через REXD | Да | https://github.com/samiralibabic/opencode-rexd-target |
| Самодельный tool | SSH-процесс | Зависит от реализации | Нет | Нет | — |
