Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

runtimed

Python bindings for the nteract runtime daemon. Execute code, manage kernels, and interact with notebooks programmatically.

Download the nteract desktop app — it ships the runtimed daemon and gives you a visual interface for your notebooks.

Using runtimed with agents? The nteract MCP server is built on runtimed and provides a ready-made agentic interface for AI assistants. It's also a great example of how to use runtimed in practice.

Installation

pip install --pre runtimed
# or: uv pip install --prerelease allow runtimed

Only pre-release wheels are being published while the library surface settles. The stable channel is frozen at the last-shipped release; the --pre channel tracks the nightly desktop app and discovers the nightly daemon socket automatically. See #2217 for context.

Client() and the high-level Python API use default_socket_path() by default. That helper respects RUNTIMED_SOCKET_PATH, so exported test or MCP sockets take precedence over the package's default channel.

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')")
    execution = await cell.execute()
    result = await execution.result()
    print(execution.execution_id)  # durable execution UUID
    print(result.stdout)  # "hello\n"
    recovered = await client.get_execution_result(execution.execution_id)
    print(recovered.stdout)

    # 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")
    execution = await cell.execute()
    await execution.result()

    # 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)

If you need to target a specific release channel instead of the current process default:

import os
import runtimed

os.environ["RUNTIMED_SOCKET_PATH"] = runtimed.socket_path_for_channel("nightly")
client = runtimed.Client()

Use default_socket_path() for normal current-process behavior. Use socket_path_for_channel("stable"|"nightly") only for explicit channel targeting or cross-channel discovery because it intentionally ignores RUNTIMED_SOCKET_PATH.

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)
    if notebook.runtime.kernel.status == runtimed.KERNEL_STATUS.IDLE:
        print("kernel is idle")

    # 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

Documentation

See crates/runtimed/AGENTS.md for architecture and Python binding usage.

Metadata

Release files for runtimed 2.7.7a202609292239

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

Built distributions (wheels)

Table of built distributions (wheels) for runtimed 2.7.7a202609292239
File
runtimed-2.7.7a202609292239-cp39-abi3-win_arm64.whl CPython 3.9 abi3 Windows ARM64 Details
runtimed-2.7.7a202609292239-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
runtimed-2.7.7a202609292239-cp39-abi3-manylinux_2_39_x86_64.whl CPython 3.9 abi3 Linux glibc 2.39+ x86-64 Details
runtimed-2.7.7a202609292239-cp39-abi3-manylinux_2_39_aarch64.whl CPython 3.9 abi3 Linux glibc 2.39+ ARM64 Details
runtimed-2.7.7a202609292239-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
runtimed-2.7.7a202609292239-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 124.9 MB

Release files / runtimed-2.7.7a202609292239-cp39-abi3-win_arm64.whl

Download URL runtimed-2.7.7a202609292239-cp39-abi3-win_arm64.whl
Size 18.7 MB
Tags CPython 3.9 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
f1ba68b46ba02692ae54b0825e64fb85ca88240589bb6ca2e5d0ca0361ace918
BLAKE2b-256 checksum
How to use checksums
371a41008f5820d2c2e85211a181c8bb2023449a77076ef2a213c90be0ef58ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}

Release files / runtimed-2.7.7a202609292239-cp39-abi3-win_amd64.whl

Download URL runtimed-2.7.7a202609292239-cp39-abi3-win_amd64.whl
Size 19.1 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a0867e1f33838890190ee20e09815379bd9aafb14044a62f272fb84a834c1f23
BLAKE2b-256 checksum
How to use checksums
de916558e67b16afe91d09ddfaaa29f2ac2bfccc999837179074792dd19d4aab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}

Release files / runtimed-2.7.7a202609292239-cp39-abi3-manylinux_2_39_x86_64.whl

Download URL runtimed-2.7.7a202609292239-cp39-abi3-manylinux_2_39_x86_64.whl
Size 23.0 MB
Tags CPython 3.9 Linux glibc 2.39+ x86-64 abi3
SHA-256 checksum
How to use checksums
ceb144502ab0d55488031bbdc012d21a935bc093e5d941d17e4e12044f7b6267
BLAKE2b-256 checksum
How to use checksums
2ec31c489e372c48ab5fcf15a569389e67d36ddcf3254a94ff2bb196c704b567
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}

Release files / runtimed-2.7.7a202609292239-cp39-abi3-manylinux_2_39_aarch64.whl

Download URL runtimed-2.7.7a202609292239-cp39-abi3-manylinux_2_39_aarch64.whl
Size 24.3 MB
Tags CPython 3.9 Linux glibc 2.39+ ARM64 abi3
SHA-256 checksum
How to use checksums
6c84d610c0c2722cac0600099a83411d4d1d9e09298755b0c8d151f23bf2c6aa
BLAKE2b-256 checksum
How to use checksums
9692beeef2c3f27f2b7c3863e883677bf7c09f3bbdb6b8e09a37270e0bcef831
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}

Release files / runtimed-2.7.7a202609292239-cp39-abi3-macosx_11_0_arm64.whl

Download URL runtimed-2.7.7a202609292239-cp39-abi3-macosx_11_0_arm64.whl
Size 20.0 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c388a8923c3da02587de8de395831c3a1738a205d1ec37e59080b818dfa0325a
BLAKE2b-256 checksum
How to use checksums
f94c4169f3ba8d2cae4b887bbfc9530d5c7a0099b5fb5e02e922c5edebf973e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}

Release files / runtimed-2.7.7a202609292239-cp39-abi3-macosx_10_12_x86_64.whl

Download URL runtimed-2.7.7a202609292239-cp39-abi3-macosx_10_12_x86_64.whl
Size 19.8 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
0efb2b54564ee3c28f2e5d74a3e58eeba4bc1ab6e5c2ef0eba83241077ed2acb
BLAKE2b-256 checksum
How to use checksums
3ff82a1f06b7bcecbcad6a4f99bb7602e9b3504ccdc8ab02221016f79e3b4658
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}

Release history Release notifications | RSS feed

2.8.2

6 release files

2.8.1

6 release files

2.8.0

6 release files

This release

2.7.6

4 release files

2.7.5

4 release files

2.7.4

4 release files

2.7.3

4 release files

2.7.1

4 release files

2.7.0

4 release files

2.6.2

4 release files

2.6.1

4 release files

2.6.0

4 release files

2.5.1

4 release files

2.5.0

4 release files

2.4.8

4 release files

2.4.7

4 release files

2.3.1

4 release files

2.3.0

4 release files

2.2.0

3 release files

2.1.3

3 release files

2.1.2

3 release files

2.1.1

3 release files

2.1.0

3 release files

2.0.8

3 release files

2.0.7

3 release files

2.0.6

3 release files

2.0.5

3 release files

2.0.4

3 release files

2.0.3

3 release files

2.0.2

3 release files

2.0.0

2 release files

1.9.0

3 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

1 release file

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