Open source

The simplest way to deploy an agent

Send one API request. Komputer gives your agent a machine, keeps its state in your own Postgres, and streams every step back to your app.

Get started See the console
from komputer import ClaudeSDKAgent

analyst = ClaudeSDKAgent(
    "analyst",
    system_prompt="You analyse contracts.",
    tools=[lookup_vendor],          # these run in your app
)

# a message arrives from your product
s = analyst.session("acme-contracts")
await s.send("Analyze these 40 contracts")

# that's it
import { ClaudeSDKAgent } from "komputer";

const analyst = new ClaudeSDKAgent("analyst", {
  systemPrompt: "You analyse contracts.",
  tools: [lookupVendor],          // these run in your app
});

// a message arrives from your product
const s = analyst.session("acme-contracts");
await s.send("Analyze these 40 contracts");

// that's it
# komputer mounts a router inside your app.
# the base URL is yours. there is no service of ours to call.

curl -X POST https://your-app.com/komputer/sessions/acme-contracts \
  -H "content-type: application/json" \
  -d '{"text":"Analyze these 40 contracts"}'

# that's it
2 lines are yours to write. The rest is setup you do once.

How it works

You send the message, we do the rest

Your app hands us a message and moves on. No long-lived request to keep alive, no queue to babysit, no machine to provision.

One request, start to finish
01 / 05

Durable agent state

The same two lines wake it back up

A session is just a name. The box shuts down after ten idle minutes and costs nothing while it's off. Send to that name again, an hour later or a week later, and it's back in about two seconds with its files, its history and its scratch space exactly where they were.

what you wrote
s = analyst.session("acme-contracts")await s.send("Analyze these 40 contracts") async for event in s.stream():    ui.push(event)  # 15 minutes pass. the box slept after 10.  s = analyst.session("acme-contracts")   # same nameawait s.send("Now flag anything auto-renewing")

No warm pool, no keep-alive, no cache to prime. The name is the state, and it lives in your Postgres.

Event log · acme-contractspostgres

Postgres native

Durable agents on your own Postgres

No new datastore to run, no vendor holding your agent's memory. Point Komputer at a connection string and it mounts onto the database you already have.

.env
# your Supabase project, or anything that speaks Postgres
KOMPUTER_DATABASE_URL=postgresql://...supabase.co:5432/postgres

It's just tables. You can query them

Komputer creates its own schema and stays out of yours. Your agent's memory is rows you already know how to read, back up and join against the rest of your data.

komputer.sessionsone row per conversation
komputer.eventsthe append-only log
komputer.turnswhat ran, and what it cost
komputer.filesarchived filesystems

Delete the schema and Komputer is gone. Nothing else in your database moves.

We try to be good guests its own schema your tables untouched no extensions drop it and it's gone

Compatibility

Inside your app, on your existing infra

Komputer is a library you import, not a service you deploy. It ships inside the process you already run, and everything underneath it is infrastructure you already own.

Your appyour process, your routes, your auth, your deploy
komputer a library you import. no service, no sidecar, no network hop
Your existing infra komputer talks to all of it, owns none of it
State layer rows in a database you already own
Box layer any OCI container runtime
Framework layer whatever your agent already is
File layer a real filesystem, archived each turn

The console

Watch it work

One command, pointed at your own app. Every session, every turn, the tools it called, which box it ran on and what it cost.

komputer your-app.com/komputer npx komputer-ui
acme-contracts asleep ◉ analyst ▢ contracts-env
sesn_0186yTf3sMXLfezbzjes9CgM
box 6m 42s turns 3 tokens 37.8k / 660 spend $0.03 last message 3 days ago
user hello there0:00:01
agent I'm the contracts analyst. Send me a folder and I'll read it. 7.3k · 0:00:03
user Analyze these 40 contracts0:03:11
agent Box back in 1.9s, workspace restored. Reading 40 files. 7.4k · 0:03:13
tool lookup_vendor ran in your app 7.5k · 7.1s
tool lookup_vendor ×2 7.7k · 11.6s
agent 3 auto-renew inside 60 days. 8.0k · 0:06:42
file summary.xlsx24 KB

Run it yourself

Open source, all of it

Install the library, point it at a Postgres, pick a container backend. There is no control plane of ours in the path, so there is nothing to sign up for before it works.

View on GitHub
get going~2 min
# 1. install
pip install komputer

# 2. point it at a Postgres you already have
export KOMPUTER_DATABASE_URL=postgres://...

# 3. pick where boxes run
export KOMPUTER_BACKEND=docker

# 4. mount the router in your app, then watch
npx komputer-ui --at http://localhost:8000/komputer

Send it one message

Point Komputer at an agent you already have and a Postgres you already run. First box up in under a minute.

Get started $pip install komputer