Skip to main content

runkite-runner

Python runner for Runkite — a self-hosted Agent Protocol control plane.

This package is the process that does the work: it connects to a Runkite control plane over gRPC, claims jobs, loads your agent from langgraph.json, executes it (LangGraph by default), and streams events, heartbeats, and terminal status back so clients see live SSE / WebSocket progress in the Admin UI.

  Client / SDK ──HTTP/SSE──► Runkite control plane (Go)
                                    │ gRPC Runner Protocol
                                    ▼
                           runkite-runner (this package)
                                    │
                              your LangGraph agent
PyPI pip install runkite-runner
CLI runkite-runner · python -m runkite_runner
Companion (TS) runkite-runner on npm
Control plane GitHub Releases · ghcr.io/getrunkite/runkite
Docs Runners · Quick start · Site
License BUSL-1.1

Why a separate runner?

Runkite keeps the control plane framework-agnostic (auth, threads, runs, queues, Admin UI). Framework-specific execution lives in a runner so you can scale workers independently, mix Python and TypeScript agents on one plane, and upgrade LangGraph without redeploying the Go binary.


Install

pip install runkite-runner

Requires Python 3.11+. Pulls in LangGraph, gRPC, checkpoint Postgres support, httpx, and uvicorn (see pyproject.toml). Tracing is optional:

pip install 'runkite-runner[otel]'

Without the extra, the runner still starts; OTEL_* env vars log once and stay no-op until the packages are installed.


Quick start

1. Control plane (pick one):

# Docker
docker pull ghcr.io/getrunkite/runkite:latest
docker run --rm -p 2026:2026 -p 50051:50051 \
  -e RUNKITE_ALLOW_INSECURE_SERVE=1 \
  ghcr.io/getrunkite/runkite:latest \
  dev --config /app/examples/echo_agent/langgraph.json

# or binary from https://github.com/getrunkite/runkite/releases

2. Runner (this package):

runkite-runner \
  --config path/to/langgraph.json \
  --grpc-address 127.0.0.1:50051 \
  --http-address http://127.0.0.1:2026

3. Admin UI: http://127.0.0.1:2026/admin/

Minimal langgraph.json:

{
  "graphs": {
    "echo_agent": "./graph.py:graph"
  },
  "dependencies": ["."]
}

Examples live in the Runkite repo (echo_agent, react_agent, approval_agent, …).


Features

  • LangGraph graphs with streaming chunks, cancel, and HITL interrupt/resume
  • Durable checkpoints via AsyncPostgresSaver when POSTGRES_DSN is set; otherwise in-process MemorySaver (fine for local demos)
  • Store / vector dual-mode against the control plane’s APIs
  • Concurrency — --concurrency N / RUNKITE_CONCURRENCY for overlapping I/O-bound jobs
  • OpenTelemetry — runkite.run span under the control plane traceparent, plus thin runkite.llm / runkite.tool children when OTLP env is set
  • Production auth — runner kind tokens (RUNNER_TOKEN / RUNNER_TOKEN_*) matching control-plane config

Framework adapters (same repo, not separate PyPI packages yet)

CrewAI, LlamaIndex, AutoGen, and plain LangChain runners live under python/adapters/ in the Runkite source tree and share runkite_runner.generic_worker. Install those from a clone with an isolated venv when you need them — see docs/runners.md.


Configuration

Flag / env Purpose
--config Path to langgraph.json
--grpc-address Control plane gRPC (default from env / localhost)
--http-address Control plane HTTP for store/proxy helpers
--concurrency / RUNKITE_CONCURRENCY Max in-flight jobs (default 1)
POSTGRES_DSN Direct-mode checkpoints + store pool
RUNNER_TOKEN Shared secret presented on gRPC / /internal/*
OTEL_EXPORTER_OTLP_* Enable tracing export (same contract as the control plane)
LOG_LEVEL / LOG_FORMAT Logging (info, debug, … · text / json)

Artifact Install
Control plane binary GitHub Releases
Control plane image docker pull ghcr.io/getrunkite/runkite:latest
Python runner image docker pull ghcr.io/getrunkite/runkite-runner:latest
TypeScript runner npm install -g runkite-runner
Helm deploy/helm/runkite

Release files for runkite-runner 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for runkite-runner 0.5.0
File Size Uploaded
runkite_runner-0.5.0.tar.gz 138.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for runkite-runner 0.5.0
File Interpreter ABI Platform
runkite_runner-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 229.6 kB

Release files / runkite_runner-0.5.0.tar.gz

Download URL runkite_runner-0.5.0.tar.gz
Size 138.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1e69e31cc12de35d6dda8717e47d56111ed752f75ea21e2203bb6119a781dd21
BLAKE2b-256 checksum
How to use checksums
1082af8c2cfaea3ea3d221758f197c9f843da9d855fcf522b663cb6ff90b13ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / runkite_runner-0.5.0-py3-none-any.whl

Download URL runkite_runner-0.5.0-py3-none-any.whl
Size 91.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e74da27e7d3b4edba805fdfba4f51b663c3dff8a0336e7ca8bd52a36687b038f
BLAKE2b-256 checksum
How to use checksums
b80c18997a35e9e914ad87417248e5c51917bbbc837e77f7345b2f0e2f9f9614
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page