Building on Amplifier just got a whole lot easier.
TypeScript & Python.
We've all been there. You want to build an app, but you end up wrestling with plumbing.
Idiomatic, fully-typed client libraries that feel like home.
event.type can be. Bugs caught at compile time.async with. TypeScript gets Promises. The SDK speaks your language.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);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())The SDK sits between your app and the runtime, handling the protocol details.
async with AmplifierClient() as client:
resp = await client.run("Weather in Paris?")
print(resp.content)if (event.type === "tool.call") {
console.log(`Using: ${event.data.tool_name}`);
}Approval Flows? Just check for approval.required events and call respond_approval().
uv run python -m \
amplifier_app_runtime.cli \
--port 4096npm install amplifier-sdk
# or
pip install amplifier-sdkimport { AmplifierClient }...
const client = new...The SDK is ready. What will you create?