Developers
Automate Etoki with bots
A headless daemon and typed SDKs let you build assistants, integrations, and services on the same private, onion-routed network.
Headless daemon
etokid runs your identities without a UI: token-gated sessions, profile-scoped operations, and the full invitation and messaging lifecycle.
Versioned API
A stable WS/JSON API (with gRPC on the roadmap) plus a push event stream for conn.open, msg.text, file.offer, and conn.closed events.
Rust & TypeScript SDKs
A typed async Rust client and a matching @etoki/bot TypeScript client with types generated from the API schema — for Node, browser, or dashboards.
Bot relay
An optional HTTP/HTTPS bot relay with rate limiting and priority handling for managed, webhook-driven bots.
Echo bot in ~10 lines
import { EtokiClient } from "@etoki/bot";
const bot = new EtokiClient({
url: "ws://127.0.0.1:7001",
token: process.env.ETOKID_TOKEN!,
});
bot.on("msg.text", async (evt) => {
await bot.sendText(evt.connId, `echo: ${evt.text}`);
});
await bot.connect();The daemon multiplexes requests and streams events, so a bot just subscribes and replies. Keep the daemon token on a private network.
Run your own relays
Bots talk to a daemon that connects through your routers. Spin up the whole stack in minutes.
