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.8.7a202610160905

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.8.7a202610160905
File
runtimed-2.8.7a202610160905-cp39-abi3-win_arm64.whl CPython 3.9 abi3 Windows ARM64 Details
runtimed-2.8.7a202610160905-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
runtimed-2.8.7a202610160905-cp39-abi3-manylinux_2_39_x86_64.whl CPython 3.9 abi3 Linux glibc 2.39+ x86-64 Details
runtimed-2.8.7a202610160905-cp39-abi3-manylinux_2_39_aarch64.whl CPython 3.9 abi3 Linux glibc 2.39+ ARM64 Details
runtimed-2.8.7a202610160905-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
runtimed-2.8.7a202610160905-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 126.8 MB

Release files / runtimed-2.8.7a202610160905-cp39-abi3-win_arm64.whl

Download URL runtimed-2.8.7a202610160905-cp39-abi3-win_arm64.whl
Size 19.1 MB
Tags CPython 3.9 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
34ae9220500d8561a0210cdcb5f0e34f0e0aeb9d8b33ae36edff727f0dd3df38
BLAKE2b-256 checksum
How to use checksums
0b0660219a0371cd189bd453ddee00f229eec4d8e969d23f14bb7afee769af50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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.8.7a202610160905-cp39-abi3-win_amd64.whl

Download URL runtimed-2.8.7a202610160905-cp39-abi3-win_amd64.whl
Size 19.6 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
7e780711be4c6a7e2963b3f68f40b95358601fb6289fa7d764c011a8d82255ec
BLAKE2b-256 checksum
How to use checksums
b44e666d8b25894b438cf14e34dcd5a6e75fc7636f24c533b925209da33a6626
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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.8.7a202610160905-cp39-abi3-manylinux_2_39_x86_64.whl

Download URL runtimed-2.8.7a202610160905-cp39-abi3-manylinux_2_39_x86_64.whl
Size 23.2 MB
Tags CPython 3.9 Linux glibc 2.39+ x86-64 abi3
SHA-256 checksum
How to use checksums
fa25bbbbf2f68f5ac868fe110cc7a2f6111a6bd5e07d31d044eaecb554cb5fc1
BLAKE2b-256 checksum
How to use checksums
b19c7ebf45cb479b9045add85790127857f8f5411bb8a21337b9d6579a28acbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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.8.7a202610160905-cp39-abi3-manylinux_2_39_aarch64.whl

Download URL runtimed-2.8.7a202610160905-cp39-abi3-manylinux_2_39_aarch64.whl
Size 24.6 MB
Tags CPython 3.9 Linux glibc 2.39+ ARM64 abi3
SHA-256 checksum
How to use checksums
a5606866a7d372956a7b657ec99c025074e0804d0c0a11de00628cb17dda1258
BLAKE2b-256 checksum
How to use checksums
8f3392a08b412e5565d8ff23606a966bd7fbd34782fef2db2db06271930f345d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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.8.7a202610160905-cp39-abi3-macosx_11_0_arm64.whl

Download URL runtimed-2.8.7a202610160905-cp39-abi3-macosx_11_0_arm64.whl
Size 20.3 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0ea89baa1757b1fdad8124d5f39a822dbb93cff5e814934e309e43f4e29e7c6c
BLAKE2b-256 checksum
How to use checksums
fff7aa6acd05fa17117edac47a22ab3862ee440059c70fceb2a236d94c535828
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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.8.7a202610160905-cp39-abi3-macosx_10_12_x86_64.whl

Download URL runtimed-2.8.7a202610160905-cp39-abi3-macosx_10_12_x86_64.whl
Size 20.0 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
37ce312c13024315a3b55aa22d3b7d4b432f89ae35aad0580603bc2b840cb047
BLAKE2b-256 checksum
How to use checksums
80e1d10419960fa1427779130a135f01d6546b091face893bef4b0ad4befa365
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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}

Security for runtimed 2.8.7a202610160905

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
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