Skip to main content

Python toolkit for Jupyter runtimes, powered by runtimed Rust binaries

Project description

runtimed

Python toolkit for Jupyter runtimes, powered by runtimed Rust binaries. Execute code, manage kernels, and interact with notebooks programmatically.

Installation

pip install runtimed

Note: The 2.0 release is currently in pre-release. Use pip install --pre runtimed (or uv pip install --prerelease allow runtimed) to get the latest 2.x build matching the nteract desktop nightly.

Quick Start

All examples use await — run them inside asyncio.run(main()), a Jupyter notebook, or a Python REPL with top-level await (e.g. python -m asyncio).

import asyncio
import runtimed

async def main():
    client = runtimed.Client()
    notebook = await client.create_notebook()

    # Create and execute cells
    cell = await notebook.cells.create("print('hello')")
    result = await cell.run()
    print(result.stdout)  # "hello\n"

    # Read cell properties (sync — local CRDT replica)
    print(cell.source)      # "print('hello')"
    print(cell.cell_type)   # "code"

    # Edit cells
    await cell.set_source("x = 42")
    await cell.run()

    # Save the notebook
    path = await notebook.save_as("/tmp/my-notebook.ipynb")

asyncio.run(main())

Features

  • Document-first model with Automerge CRDT sync
  • Sync reads, async writes — reads from local replica, writes sync to peers
  • Multi-client support for shared notebooks
  • Rich output capture (stdout, stderr, display_data, errors)

API Overview

Client

client = runtimed.Client()

# Discover active notebooks
notebooks = await client.list_active_notebooks()
for info in notebooks:
    print(f"{info.name} [{info.status}] ({info.active_peers} peers)")

# Open, create, or join notebooks
notebook = await client.open_notebook("/path/to/notebook.ipynb")
notebook = await client.create_notebook(runtime="python")
notebook = await client.join_notebook(notebook_id)

Notebook

async with await client.create_notebook() as notebook:
    # Cells collection (sync reads, async writes)
    print(len(notebook.cells))
    for cell in notebook.cells:
        print(f"{cell.id[:8]}: {cell.source[:40]}")

    # Runtime state (sync read from local doc)
    print(notebook.runtime.kernel.status)

    # Runtime lifecycle
    await notebook.start(runtime="python")
    await notebook.restart()
    await notebook.interrupt()
    await notebook.save()
# Session closed automatically on exit

Cells

# Create cells
cell = await notebook.cells.create("import math")
cell = await notebook.cells.insert_at(0, "# Title", cell_type="markdown")

# Access cells
cell = notebook.cells.get_by_index(0)    # by position
cell = notebook.cells.get_by_id(cell_id) # by ID
matches = notebook.cells.find("import")  # search source

# Read properties (sync)
print(cell.source, cell.cell_type, cell.outputs)

# Mutate (async)
await cell.set_source("x = 2")
await cell.append("\ny = 3")
result = await cell.run()
await cell.delete()

Requirements

  • runtimed daemon running (see CLAUDE.md — use cargo xtask dev-daemon for development or cargo xtask install-daemon for the system service)
  • Python 3.10+

Documentation

See docs/python-bindings.md for full documentation.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

runtimed-2.0.3a202603230522-cp39-abi3-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.9+Windows x86-64

runtimed-2.0.3a202603230522-cp39-abi3-manylinux_2_39_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.39+ x86-64

runtimed-2.0.3a202603230522-cp39-abi3-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file runtimed-2.0.3a202603230522-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: runtimed-2.0.3a202603230522-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for runtimed-2.0.3a202603230522-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 29a29b860ffc966536ce3690bfa62820f9b6193aaa552e6e997130839758141c
MD5 8f39edce27af5e757574c7837b65cecf
BLAKE2b-256 c636cb7931971bb0b9d2914871be298dc9699bb7c5641589cf42c67061b1b074

See more details on using hashes here.

File details

Details for the file runtimed-2.0.3a202603230522-cp39-abi3-manylinux_2_39_x86_64.whl.

File metadata

  • Download URL: runtimed-2.0.3a202603230522-cp39-abi3-manylinux_2_39_x86_64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.39+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for runtimed-2.0.3a202603230522-cp39-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e005781789e7dc203020ed751a615baabe774cbdf410b5490401cb3bfe341da3
MD5 cbc912dc0d71f483e885fab8f94c3097
BLAKE2b-256 d9f98860cab1dd83cd51e2d1cee2fa773b75809ba30cf3fcafb875b8d4e06899

See more details on using hashes here.

File details

Details for the file runtimed-2.0.3a202603230522-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: runtimed-2.0.3a202603230522-cp39-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.9+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for runtimed-2.0.3a202603230522-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cfb87ea6450da970023bcc444f8960fa7e93e37c75298d4d82ff974e737c4fd9
MD5 51baaa10dfda50c25e382b770d634a93
BLAKE2b-256 e4c1cfb5bbd05fff3e1a0056cb623eeeb0aaff66bdcbef701822522b88f67232

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