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.

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.7.1a202608140922-cp39-abi3-win_amd64.whl (4.4 MB view details)

Uploaded CPython 3.9+Windows x86-64

runtimed-2.7.1a202608140922-cp39-abi3-manylinux_2_39_x86_64.whl (7.2 MB view details)

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

runtimed-2.7.1a202608140922-cp39-abi3-macosx_11_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

runtimed-2.7.1a202608140922-cp39-abi3-macosx_10_12_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file runtimed-2.7.1a202608140922-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: runtimed-2.7.1a202608140922-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.4 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","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.7.1a202608140922-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 45590fe15baa95baf8555c0a03e2df4e0030924bcab919f2dd4e743487d54a62
MD5 87f7b9c35479a5e899728c953040dd47
BLAKE2b-256 f27c447c6fab4ef4358570789ad3bc91fe66af3838843243dc3f0fcb71ec7322

See more details on using hashes here.

File details

Details for the file runtimed-2.7.1a202608140922-cp39-abi3-manylinux_2_39_x86_64.whl.

File metadata

  • Download URL: runtimed-2.7.1a202608140922-cp39-abi3-manylinux_2_39_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.39+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","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.7.1a202608140922-cp39-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 6f46bf31d44e044b41df8bafaa0136e32b4e079ec3ea46cbbd8a735e88c802bb
MD5 b05cc19c8eeb20ffc06c57b2d2881bb7
BLAKE2b-256 e8ad363abcb90d7c68f7c4dd624b274c9707c41004114f6d2e19cf9b72ad9e0b

See more details on using hashes here.

File details

Details for the file runtimed-2.7.1a202608140922-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: runtimed-2.7.1a202608140922-cp39-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 4.9 MB
  • Tags: CPython 3.9+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","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.7.1a202608140922-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f82db7bcbf627c2fef924ddfd390be0d74d3186f2dc10b29c0fe7a709da7a520
MD5 24e3e77948153b5c3e3889689f9c3be4
BLAKE2b-256 41bca81fdda878ac2eba62ebb0f5ec53f3a9b28131a54b943ce7006fb72963b4

See more details on using hashes here.

File details

Details for the file runtimed-2.7.1a202608140922-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: runtimed-2.7.1a202608140922-cp39-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 4.7 MB
  • Tags: CPython 3.9+, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","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.7.1a202608140922-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 44096f6812b430ae8cae515ba8175305e7635ddd1dad6d28ca8bd3512d010c1e
MD5 a2d1819fbea35a3ac34101730a88d424
BLAKE2b-256 34fddcf5b17db3d75e9cbe20a8d70b05b9b537cd3adf3da317119ea935f4560f

See more details on using hashes here.

Release history Release notifications | RSS feed

2.7.6

4 files

2.7.5

4 files

2.7.4

4 files

2.7.3

4 files

2.7.1

4 files

This release

2.7.1a202608140922 This release

4 files

2.7.0

4 files

2.6.2

4 files

2.6.1

4 files

2.6.0

4 files

2.5.1

4 files

2.5.0

4 files

2.4.8

4 files

2.4.7

4 files

2.3.1

4 files

2.3.0

4 files

2.2.0

3 files

2.1.3

3 files

2.1.2

3 files

2.1.1

3 files

2.1.0

3 files

2.0.8

3 files

2.0.7

3 files

2.0.6

3 files

2.0.5

3 files

2.0.4

3 files

2.0.3

3 files

2.0.2

3 files

2.0.0

2 files

1.9.0

3 files

0.1.4

2 files

0.1.3

2 files

0.1.2

1 file

0.1.1

2 files

0.1.0

2 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