Imperal SDK
Build extensions for Webbee 🐝 — the agent of Imperal Cloud, the world's first AI Cloud OS.
Write a small Python function. Webbee calls it when a user asks for it — in their own words. Ship it to the Marketplace and get paid.
What this is
Imperal Cloud is the world's first AI Cloud OS — a cloud you connect the contexts of your life into (mail, money, projects, servers, notes, anything) and then run entirely in your own native language. Webbee 🐝 is the AI agent that lives inside it and does the work for you, safely.
The Imperal SDK is how you give Webbee a new skill. You write a small, typed Python extension; Webbee picks it up and calls it whenever a user asks for what it does — in plain language. The platform handles the hard parts — authentication, billing, multi-tenancy, audit, recovery, LLM routing — so your code stays small.
pip install imperal-sdk
Python 3.11+ · AGPL-3.0-or-later
Why build here
- Webbee calls your function directly. Typed, structured calls — no LLM guessing your arguments, no silent write failures.
- The platform does the plumbing. Auth, per-user isolation, billing, audit, retries and recovery, multi-tenant safety — handled for you.
- You get paid. Publish to the Imperal Marketplace, price your extension, earn on every use.
- Bring any LLM. Users connect their own model keys — Anthropic, OpenAI, Google, Ollama, any OpenAI-compatible API.
A 60-second extension
from imperal_sdk import Extension, ChatExtension, ActionResult
from pydantic import BaseModel, Field
ext = Extension(
"hello-world",
version="1.0.0",
display_name="Hello World",
description="Greets people by name with a friendly message.",
icon="icon.svg",
actions_explicit=True,
)
chat = ChatExtension(ext, tool_name="hello_world", description="Friendly greetings.")
class GreetParams(BaseModel):
name: str = Field(..., description="Person to greet")
@chat.function("greet", description="Greet someone by name.", action_type="read")
async def greet(ctx, params: GreetParams) -> ActionResult:
return ActionResult.success(
data={"message": f"Hello, {params.name}! 🐝"},
summary=f"Greeted {params.name}",
)
That's a real, working extension. When a user types "say hi to Alex", Webbee calls greet(name="Alex").
→ Full walkthrough, from zero to published: docs.imperal.io
What you can build
- Chat tools — typed
@chat.functions Webbee calls straight from natural language. - Panels — UI surfaces rendered inside the Imperal Panel.
- Skeletons — live data feeds that keep Webbee aware of a user's state.
- Scheduled jobs & webhooks — act on a timer, or react to outside events.
- Typed entities (SDL) — return
sdl.Entityobjects and the platform reads their meaning (id, title, kind, …) directly instead of guessing field names. Live in production.
Every published extension passes the federal contract — the validators that let Webbee call your code safely. The SDK checks it locally before you ship.
Test without a server
from imperal_sdk.testing import MockContext
async def test_greet():
ctx = MockContext()
result = await greet(ctx, GreetParams(name="Alex"))
assert result.status == "success"
Documentation
The full API, the manifest schema, every validator, recipes, and the federal contract live at docs.imperal.io — that's the source of truth; this README is just the doorway.
| Documentation | docs.imperal.io |
| Quickstart | docs.imperal.io/en/getting-started/quick-start |
| PyPI | pypi.org/project/imperal-sdk |
| Changelog | CHANGELOG.md |
| License | AGPL-3.0-or-later |
Built by Imperal, Inc. — Webbee 🐝 is its agent.
Metadata
Release files for imperal-sdk 5.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| imperal_sdk-5.4.1.tar.gz | 613.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| imperal_sdk-5.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 854.9 kB
Release files / imperal_sdk-5.4.1.tar.gz
| Download URL | imperal_sdk-5.4.1.tar.gz |
|---|---|
| Size | 613.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
345308acd6afa36d37ac720b57d83d4f68e842ff7cb94c218b8fe3fe297cbd2c
|
|
BLAKE2b-256 checksum How to use checksums |
20733b80583c1603715ac0d0e37686ac9a53dcb8be26e3b2013dba0d4283d38c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 16, 2026.
Transparency logRelease files / imperal_sdk-5.4.1-py3-none-any.whl
| Download URL | imperal_sdk-5.4.1-py3-none-any.whl |
|---|---|
| Size | 241.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b09ac286da639c454cd0e06c6fa09153776d12993b9db77899ac8260e54338b9
|
|
BLAKE2b-256 checksum How to use checksums |
f40562dd9bd480a4c9dccbc2061dd223479e88ba71d36cbe0a840e9b2e96c11a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 16, 2026.
Transparency log