SDK for building Imperal Cloud extensions
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file imperal_sdk-5.2.1.tar.gz.
File metadata
- Download URL: imperal_sdk-5.2.1.tar.gz
- Upload date:
- Size: 603.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd164b7fba6affcb4cb35970bdee109fcc0eb87f0b74792be66a117ccce2d5d3
|
|
| MD5 |
1e86f1fb0b58fff4db9811d81772d317
|
|
| BLAKE2b-256 |
b041d086e70eacdacaf2d40f97e6c565bd6615c37bf188343b513758f444140e
|
Provenance
The following attestation bundles were made for imperal_sdk-5.2.1.tar.gz:
Publisher:
publish.yml on imperalcloud/imperal-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
imperal_sdk-5.2.1.tar.gz -
Subject digest:
fd164b7fba6affcb4cb35970bdee109fcc0eb87f0b74792be66a117ccce2d5d3 - Sigstore transparency entry: 1688298540
- Sigstore integration time:
-
Permalink:
imperalcloud/imperal-sdk@e0b27743c5d5d2b4fbff140c40dd1238a4380f13 -
Branch / Tag:
refs/tags/v5.2.1 - Owner: https://github.com/imperalcloud
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e0b27743c5d5d2b4fbff140c40dd1238a4380f13 -
Trigger Event:
push
-
Statement type:
File details
Details for the file imperal_sdk-5.2.1-py3-none-any.whl.
File metadata
- Download URL: imperal_sdk-5.2.1-py3-none-any.whl
- Upload date:
- Size: 238.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0199b86215ec77c60c01d87386e99a09bb2662780085cd41bf52625f13f26468
|
|
| MD5 |
dc88c514102d10671731d921ecccc023
|
|
| BLAKE2b-256 |
b5b5952a5a790cbd44ec616696ced689e62fb8704d300af5a0044e4eeebf6ba5
|
Provenance
The following attestation bundles were made for imperal_sdk-5.2.1-py3-none-any.whl:
Publisher:
publish.yml on imperalcloud/imperal-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
imperal_sdk-5.2.1-py3-none-any.whl -
Subject digest:
0199b86215ec77c60c01d87386e99a09bb2662780085cd41bf52625f13f26468 - Sigstore transparency entry: 1688298691
- Sigstore integration time:
-
Permalink:
imperalcloud/imperal-sdk@e0b27743c5d5d2b4fbff140c40dd1238a4380f13 -
Branch / Tag:
refs/tags/v5.2.1 - Owner: https://github.com/imperalcloud
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e0b27743c5d5d2b4fbff140c40dd1238a4380f13 -
Trigger Event:
push
-
Statement type: