Тонкий WebSocket-клиент, который держит постоянное соединение с FastAI и выполняет Claude CLI на твоём сервере.
claude-agent-sdk). На Debian 11 системный 3.9 — НЕ подойдёт.curl.curl -fsSL https://fst-runner.fstai.xyz/install.sh \
| FASTAI_URL=https://app.fst.ac \
FASTAI_RUNNER_TOKEN=<твой_токен> \
bash
Скрипт скачает runner.py + protocol.py + requirements.txt, создаст venv в ~/fastai-runner, поставит websockets/claude-agent-sdk и запустит runner в текущем терминале. Ctrl+C — выход. Если в логе видишь «connected: runner_id=…» — всё работает, можно идти в UI и привязать его (кнопка «Привязать»).
curl -fsSL https://fst-runner.fstai.xyz/install.sh \
| SYSTEMD=1 \
FASTAI_URL=https://app.fst.ac \
FASTAI_RUNNER_TOKEN=<твой_токен> \
bash
Поставит в /opt/fastai-runner, юнит — fastai-runner.service (с NoNewPrivileges, ProtectSystem=full, ProtectHome=read-only). Логи: sudo journalctl -u fastai-runner -f. После обновления зависимостей: sudo systemctl restart fastai-runner.
Если ставил Python через python.org installer, системный CA-стор пуст и TLS ломается на pip и WS. install.sh это обнаруживает и подставляет certifi автоматически. Если хочешь руками — выполни один раз:
/Applications/Python\ 3.13/Install\ Certificates.command
Альтернатива — поставь Python через brew: brew install python@3.11.
Если в логе auth/protocol error 4401 — abort или 4403 — токен не подошёл. Проверь что:
4000 superseded).Если потерял токен — пересоздай runner в UI, старый можно удалить.
websockets>=12,<14, claude-agent-sdk)