Skip to main content

🛼 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)

  1. Create a bot with @BotFather/newbot → copy the token.
  2. Get your numeric user ID from @userinfobot.
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skatebot-0.1.0.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skatebot-0.1.0-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

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

Hashes for skatebot-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0707d99f544f0493e6ccd8168f9dafedaf42741a8454e5406ed8c10f07de416a
MD5 eb26e106f4d600487db9ff72870403a2
BLAKE2b-256 cdcc18d7fbf9dfe9e9f458521638a1cbc7a44f21c4a0b69a7da8726b9c772afa

See more details on using hashes here.

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

Hashes for skatebot-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 22a1068459874df89eeae5a2da2d88efc90dcb18235bcf919c939c03f22eebdc
MD5 afa68d2eece04f0a0d3a135bd979a7f3
BLAKE2b-256 2030ca11bccfe7517d7fcbb43ca382b66d22cc59889809b704c73933c2e97468

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page