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, uvicorn, and OpenTelemetry exporters (see pyproject.toml).


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
  • OpenTelemetryrunkite.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)

Related artifacts

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

Links

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

runkite_runner-0.1.1.tar.gz (104.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

runkite_runner-0.1.1-py3-none-any.whl (71.6 kB view details)

Uploaded Python 3

File details

Details for the file runkite_runner-0.1.1.tar.gz.

File metadata

  • Download URL: runkite_runner-0.1.1.tar.gz
  • Upload date:
  • Size: 104.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for runkite_runner-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ef7320fd5bfd95cfbec003e623d88fbe65d8ece494ed53f7d9f0c0b74601d7f0
MD5 ab90a3e3d790794a4661fd1fe0fc79a3
BLAKE2b-256 93669a9e6d3dd162822d7bb41969db41cd13aabd795cead182872017888e67b6

See more details on using hashes here.

File details

Details for the file runkite_runner-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: runkite_runner-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 71.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for runkite_runner-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 18fda37bf479de67b97660be3761dd0b089f21b830aa72c36d6bec6a08307604
MD5 c85e6032123559a544fe0a66ed1e8deb
BLAKE2b-256 e6fe55ccacbb0efa9388fd4c17338d1920e0da1c66fa72dda40752b4aaa95cc5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page