Telegram
Bot API token in, replies out. DMs and groups.
One product system
Start with one machine. Grow into a fleet.
The same bot loop speaks every channel. Pick where your team already talks — the SDK handles the rest.
Bot API token in, replies out. DMs and groups.
Slash commands and channel messages, gateway-native.
App mentions and DMs across your workspace.
You call client.bots.run(...) and the Go core takes over: it listens on the channel and, per message, calls the SDK’s own machines.ask. No new endpoint, no server to host.
Bots are not a separate library you install and wire up. They are a first-class op on the same client you already use for machines, fleets and tunnels — client.bots.run, and you are live.
The Telegram, Discord and Slack event loops live inside cmdop-core. There is no Python or Node process babysitting a websocket — the baked-in binary owns the channel, so it survives, retries and reconnects on its own.
Each chat message is forwarded to your machine’s AI agent through the relay’s streaming machines.ask, with the same pin/confirm guarantees. The bot is a pure consumer of the machine surface you already trust.
pip install cmdop or npm i @cmdop/sdk ships all five platform binaries baked in. No extra bot SDK, no per-channel dependency — switch from Telegram to Slack by changing one argument.
Everything a bot can do, the SDK can do — bots are just the chat-channel front door. Start with the SDK and add a bot in a few lines.
Install the SDK, call client.bots.run, and your fleet answers in Telegram, Discord or Slack.
import asynciofrom cmdop import Clientasync def main():async with Client() as client:# The Go core runs the Telegram loop. Per message it# drives the SDK’s own machines.ask and streams back.await client.bots.run(channel="telegram",token="<BOT_TOKEN>",machine="work-mbp",)asyncio.run(main())