Announcement

Amplifier SDK

Building on Amplifier just got a whole lot easier.
TypeScript & Python.

January 2026
The Problem

Raw APIs Are Nobody's Friend

We've all been there. You want to build an app, but you end up wrestling with plumbing.

🤯
Type Chaos
No IntelliSense, no autocomplete. Just string soup and crossed fingers.
🌊
Streaming Headaches
SSE parsing, connection management, and error recovery—all on you.
🧩
Protocol Complexity
Session lifecycle, event types, approval flows. Learn it all from scratch.
The Solution

Meet the Amplifier SDK

Idiomatic, fully-typed client libraries that feel like home.

Type Safety
Full types. Your IDE knows what event.type can be. Bugs caught at compile time.
Streaming Built-In
Async iterators make streaming feel natural. No manual SSE parsing.
Ergonomic APIs
Python gets async with. TypeScript gets Promises. The SDK speaks your language.
Session Management
Create, prompt, clean up. The SDK handles the lifecycle for you.
TypeScript

It Just Works

import { AmplifierClient } from "amplifier-sdk";

const client = new AmplifierClient();

// Create a session
const session = await client.createSession({ bundle: "foundation" });

// Stream a response
for await (const event of client.prompt(session.id, "Write a haiku about coding")) {
  if (event.type === "content.delta") {
    process.stdout.write(event.data.delta as string);
  }
}

// Clean up
await client.deleteSession(session.id);
Python

Feels Like Home

import asyncio
from amplifier_sdk import AmplifierClient

async def main():
    async with AmplifierClient() as client:
        # Create a session
        session = await client.create_session(bundle="foundation")
        
        # Stream a response
        async for event in client.prompt(session.id, "Write a haiku"):
            if event.type == "content.delta":
                print(event.data.get("delta", ""), end="", flush=True)
        
        # Clean up handled automatically by context manager

asyncio.run(main())
Architecture

Clean Separation

The SDK sits between your app and the runtime, handling the protocol details.

Your Application
Chat apps, automation tools, custom integrations
↓
Amplifier SDK
Type-safe methods, Streaming abstraction, Lifecycle management
↓
amplifier-app-runtime
REST API + SSE, Protocol handling (localhost:4096)
Patterns

Real-World Usage

One-Shot Execution

async with AmplifierClient() as client:
    resp = await client.run("Weather in Paris?")
    print(resp.content)

Handling Tool Calls

if (event.type === "tool.call") {
  console.log(`Using: ${event.data.tool_name}`);
}

Approval Flows? Just check for approval.required events and call respond_approval().

Getting Started

Start Building in Seconds

1
Start Runtime
uv run python -m \
amplifier_app_runtime.cli \
--port 4096
2
Install SDK
npm install amplifier-sdk
# or
pip install amplifier-sdk
3
Build
import { AmplifierClient }...
const client = new...
What's Next

Build Something Cool

The SDK is ready. What will you create?

Coming soon: Go/Rust SDKs, Webhooks, and UI Components.
More Amplifier Stories