SDKs
Hiloop provides official SDKs for TypeScript, Python, and Kotlin, plus an MCP server for AI tools. All SDKs handle E2E encryption transparently — content is encrypted before it leaves your process and decrypted only on the recipient's device.
TypeScript
npm install @hiloop/sdk Full E2E encryption, WebSocket support, webhook handling. Works in Node.js, Deno, and edge runtimes.
Python
pip install hiloop Synchronous client with transparent encryption. Ideal for scripts, Cloud Functions, and agent frameworks.
Kotlin
com.hiloop:sdk:1.0.0 JVM client with Lazysodium encryption. Works on Android, backend services, and Kotlin/Native.
MCP Server
npx hiloop-mcp Use Hiloop from Claude, Cursor, Windsurf, and any MCP-compatible AI tool. No code required.
Quick example
The same approval flow in each SDK — click through to each SDK page for more examples with live component previews.
from hiloop import HiloopClient
client = HiloopClient(api_key="hlp_xxx", agent_name="my-bot")
session = client.create_session(title="Deploy v2.4.1?")
client.send_message(session.id, components=[
{"type": "button_group", "data": {"buttons": [
{"label": "Approve", "action": "approve", "variant": "primary"},
{"label": "Reject", "action": "reject", "variant": "danger"},
]}},
])
result = client.await_response(session.id) import { HiloopClient } from "@hiloop/sdk";
const client = new HiloopClient({ apiKey: "hlp_xxx", agentName: "my-bot" });
const session = await client.createSession({ title: "Deploy v2.4.1?" });
await client.sendMessage(session.id, { components: [
{ type: "button_group", data: { buttons: [
{ label: "Approve", action: "approve", variant: "primary" },
{ label: "Reject", action: "reject", variant: "danger" },
] } },
] });
const result = await client.awaitResponse(session.id); val client = HiloopClient(HiloopClientOptions(apiKey = "hlp_xxx", agentName = "my-bot"))
val session = client.createSession(title = "Deploy v2.4.1?")
client.sendMessage(session.id, components = listOf(
ComponentNode("button_group", mapOf("buttons" to listOf(
mapOf("label" to "Approve", "action" to "approve", "variant" to "primary"),
mapOf("label" to "Reject", "action" to "reject", "variant" to "danger"),
))),
))
val result = client.awaitResponse(session.id) Encryption
All content fields (messages, components, titles) are end-to-end encrypted. The SDKs handle this transparently:
| SDK | Encryption |
|---|---|
| TypeScript | ECDH + HKDF + AES-GCM — keys derived automatically from your API key. |
| Python | AES-256-GCM — encryption keys derived automatically. |
| Kotlin | Lazysodium (ECDH + HKDF + AES-GCM) — keys derived automatically from your API key. |
See also
- MCP Server — Use Hiloop from Claude, Cursor, Windsurf
- Embed SDK — Drop session cards into your own UI
- API Reference — Full REST API documentation