Клиент командной строки
Для машин, где буфера обмена нет вовсе. Он читает стандартный ввод и пишет в стандартный вывод, поэтому собирается со всем остальным, чем вы уже пользуетесь, — и это не вторая реализация: он импортирует ровно те же файлы шифрования и транспорта, которые выполняет браузер.
Установите
npx realtimeclipboard D75LV
Ставить, собственно, нечего: npx скачивает, запускает и не
оставляет после себя ничего. Если хочется держать его в PATH:
npm install -g realtimeclipboard
Нужен Node 22 или новее — из-за встроенного
WebSocket. На более старом Node клиент выходит сразу и
говорит почему, а не отваливается на середине передачи.
Или через пакетный менеджер
brew install akshaynikhare/tap/realtimeclipboard-cli
Обратите внимание на имя: formula для CLI называется
realtimeclipboard-cli, а десктопное приложение — это cask
realtimeclipboard. Это разные вещи, и установка одного не
даёт другого: серверу нужен конвейер, а не значок в строке меню.
Проверьте, что всё встало
npx realtimeclipboard --version
При подключении он печатает одну строку статуса в стандартный поток ошибок и никогда — в стандартный вывод:
realtimeclipboard · room 3f2a91c4…
Это усечённый хеш комнаты, а не ключ. Поскольку строка идёт в stderr,
watch > file по-прежнему пишет только содержимое буфера.
Передайте -q, чтобы убрать её совсем.
Первая синхронизация
- Откройте приложение в браузере и запишите ключ.
- На сервере отправьте туда что-нибудь:
echo "deploy key" | npx realtimeclipboard send D75LV - Оно появится в браузере. Теперь в обратную сторону — скопируйте
что-нибудь в браузере и выполните на сервере:
npx realtimeclipboard watch D75LV --once > token.txt
Четыре команды
| Команда | Что делает |
|---|---|
realtimeclipboard <KEY> | В обе стороны: печатает пришедшее, отправляет набранное |
realtimeclipboard watch <KEY> | Печатает приходящее содержимое |
realtimeclipboard send <KEY> | Читает стандартный ввод до EOF и отправляет |
realtimeclipboard new [--long] | Печатает новый ключ |
Параметры: --relay <url>, --pin <pin>,
--once, --json, --timeout <s>,
-q, -h, -v. Ретранслятор и PIN
читаются также из REALTIMECLIPBOARD_RELAY и
REALTIMECLIPBOARD_PIN — именно так PIN и стоит передавать:
аргументом он осядет в истории вашего шелла.
# структурированный вывод, по одному объекту JSON на строку
npx realtimeclipboard watch D75LV --once --json | jq -r .text
# с машины, куда вы зашли по ssh
ssh build-01 'cat /var/log/deploy.log' | npx realtimeclipboard send D75LV
# на собственный ретранслятор
npx realtimeclipboard --relay wss://clip.example.com D75LV
Когда не работает
«this needs Node 22 or newer» (нужен Node 22 или новее)
Ровно то, что написано: клиент использует встроенный в Node
WebSocket, а не тянет зависимость, и появился этот
встроенный только в 22-й версии. Клиент выходит на старте, а не посреди
передачи.
Он висит и ничего не печатает
watch так и задуман — он ждёт; пока на той стороне ничего не
скопировали, ничего и не придёт. В скрипте добавьте
--timeout 30, чтобы он не ждал вечно, и --once,
чтобы он вышел после первого же содержимого.
Вручную работает, а в CI нет
Там нет TTY, поэтому передайте -q и читайте стандартный
вывод. Ключ кладите в переменную окружения, а не в командную строку —
оттуда он попадёт в логи сборки.
Из-за прокси ничего не подключается
Клиент говорит на том же протоколе, что и браузер, и его можно направить
на собственный ретранслятор через --relay.
Запустить его — это один контейнер.
Удаление
После npx удалять нечего. Если вы ставили его глобально —
npm uninstall -g realtimeclipboard, либо
brew uninstall realtimeclipboard-cli.
Ключ сам по себе даёт доступ. Пока сессия открыта, прочитать её сможет любой, у кого он есть, — поэтому не пускайте ключ в историю шелла, в логи CI и в закоммиченные файлы. Содержимое шифруется на этой машине до отправки; ретранслятор всегда видит только хеш комнаты и шифротекст.
Все остальные платформы: руководство по установке. Что-то здесь неверно или устарело? Заведите issue.