🛼 A thin launcher for agent bots on chat channels
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skatebot-0.1.0.tar.gz.
File metadata
- Download URL: skatebot-0.1.0.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0707d99f544f0493e6ccd8168f9dafedaf42741a8454e5406ed8c10f07de416a
|
|
| MD5 |
eb26e106f4d600487db9ff72870403a2
|
|
| BLAKE2b-256 |
cdcc18d7fbf9dfe9e9f458521638a1cbc7a44f21c4a0b69a7da8726b9c772afa
|
File details
Details for the file skatebot-0.1.0-py3-none-any.whl.
File metadata
- Download URL: skatebot-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22a1068459874df89eeae5a2da2d88efc90dcb18235bcf919c939c03f22eebdc
|
|
| MD5 |
afa68d2eece04f0a0d3a135bd979a7f3
|
|
| BLAKE2b-256 |
2030ca11bccfe7517d7fcbb43ca382b66d22cc59889809b704c73933c2e97468
|