skate 🛼
Launch an AI-agent bot on a chat channel by answering three questions:
| choices | |
|---|---|
| agent | Claude Code (MVP) · Codex · Gemini · GitHub Copilot |
| channel | Telegram (MVP) · Slack · Discord (later) |
| compute | Existing VPS / Hetzner (MVP) · provisioned AWS/GCP/Fly (later) |
skate is a thin launcher, not a framework. It deploys a small long-poll
gateway that bridges the channel to the agent's headless CLI, runs it under
systemd, and gets out of the way. Architecture reverse-engineered from openClaw &
Hermes — see PLAN.md.
How it works
operator machine target VPS (systemd service)
skate up ──SSH/rsync──▶ agent CLI (claude) + OAuth creds
gateway daemon ── long-poll ──▶ api.telegram.org
├─ allowlist gate (numeric user IDs)
├─ per-chat session (sqlite + claude --resume)
└─ each turn: claude -p --output-format json
Long-polling means no public URL, no inbound ports, no TLS — the bot dials out, so it runs on any box with outbound HTTPS.
Quick start (MVP: Claude Code + Telegram + existing VPS)
- Create a bot with @BotFather →
/newbot→ copy the token. - Get your numeric user ID from @userinfobot.
- Deploy:
pip install -e .
skate up \
--name yann-bot \
--agent claude --auth oauth \
--host <vps-ip> --ssh-key ~/.ssh/id_ed25519 \
--allow 8581449495 \
--save specs/yann-bot.json
# (prompts for the BotFather token; or pass --token / $TELEGRAM_BOT_TOKEN)
Then message your bot. Manage it:
skate status --spec specs/yann-bot.json
skate logs --spec specs/yann-bot.json
skate down --spec specs/yann-bot.json
Test the gateway locally (no VPS)
skate run-local --spec specs/yann-bot.json --token <bot-token>
Auth (OAuth, MVP)
For Claude Code the launcher copies your local ~/.claude/.credentials.json to the
target (so the box you run skate up from must be logged in: claude setup-token).
API-key auth (--auth api-key) is planned.
Bot commands
/start · /help · /new (reset conversation) · /status. Anything else is sent
to the agent.
Status
MVP scaffold. Working: spec model, Telegram long-poll gateway, Claude Code adapter, existing-VPS deploy (rsync + systemd), local run. Planned: codex/gemini/copilot adapters, Hetzner/AWS/GCP/Fly provisioning, Slack/Discord channels, voice/image.
Metadata
Release files for skatebot 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| skatebot-0.1.0.tar.gz | 13.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| skatebot-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.1 kB
Release files / skatebot-0.1.0.tar.gz
| Download URL | skatebot-0.1.0.tar.gz |
|---|---|
| Size | 13.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0707d99f544f0493e6ccd8168f9dafedaf42741a8454e5406ed8c10f07de416a
|
|
BLAKE2b-256 checksum How to use checksums |
cdcc18d7fbf9dfe9e9f458521638a1cbc7a44f21c4a0b69a7da8726b9c772afa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / skatebot-0.1.0-py3-none-any.whl
| Download URL | skatebot-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
22a1068459874df89eeae5a2da2d88efc90dcb18235bcf919c939c03f22eebdc
|
|
BLAKE2b-256 checksum How to use checksums |
2030ca11bccfe7517d7fcbb43ca382b66d22cc59889809b704c73933c2e97468
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|