---
title: SDKs
description: The TypeScript and Python SDKs.
---

Every `curl` call in these docs is an HTTP request you can make yourself. The SDKs are the same Core API with the tedious parts already written: a stream that resumes from the sequence number it last saw, a client that answers the tool calls the agent routes to your code, and types for every event.

<Panel title="Not the function SDKs">
  These SDKs call Subako from your product. To write tools that run inside
  Subako, see [Subako Functions](/functions) and its Rust, Go, and TypeScript
  SDKs.
</Panel>

**[TypeScript](https://typescript-sdk-docs.subako.ai/)**

`@subako-ai/sdk`, plus React bindings and ready-made tools for a page the
agent drives.

**[Python](https://pypi.org/project/subako/)**

`subako` — an async client for a backend, a job, or a worker.

## TypeScript

```bash
npm install @subako-ai/sdk
```

Node 22 or newer on the server, and the same package runs in the browser. It is ESM only and ships no runtime dependencies. The Subako console is built on it.

It splits the API along the credential: one client for your backend, which holds the API key and creates sessions, and one for the browser, which holds a [session token](/build/sessions-api#session-tokens) and does everything inside a session. The types say which routes each one reaches, so the key cannot end up in page code by accident.

A session connection reads the log, opens the stream, and keeps both. A dropped connection comes back on its own, resuming where it left off. What it hands your renderer is one immutable snapshot: the events, the transcript, and the approvals and forms waiting on someone.

| Package | What it is |
| --- | --- |
| `@subako-ai/sdk` | The client. Sessions, streaming, tools, errors, pagination. |
| `@subako-ai/react` | A provider and hooks over a session connection. |
| `@subako-ai/tools` | Ready-made tools that drive a page: fill a form, submit it, navigate. |
| `@subako-ai/assistant-ui` | A working chat over a session, or a runtime for your own thread. |
| `@subako-ai/react-hook-form` | react-hook-form as a form-tool spec. |
| `@subako-ai/react-router` | React Router as a navigate-tool spec. |
| `@subako-ai/tanstack-router` | TanStack Router as a navigate-tool spec. |

Every package is Apache-2.0 and versioned together. The [TypeScript SDK documentation](https://typescript-sdk-docs.subako.ai/) has its quickstart, its reference, and a worked example of a backend minting a token for a browser.

## Python

**uv**

```bash
uv add subako
```

**pip**

```bash
pip install subako
```

Python 3.12 or newer. The client is async only, so it belongs in a backend, a job, or a worker.

It covers the same ground: a namespace per resource, typed errors, cursor pagination, a session connection that reconnects on its own, and tool clients that serve functions from your process to a session. Idempotency keys cover the calls you do not want to run twice. [`subako` on PyPI](https://pypi.org/project/subako/) has the install and a backend-and-frontend example.
