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(oruv 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 insideasyncio.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-daemonfor development orcargo xtask install-daemonfor 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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file runtimed-2.0.3a202603220259-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: runtimed-2.0.3a202603220259-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e50a88b649ab46780461cb1edd1e0e9ebc0aee77ed0c2bc9720a179428c3171
|
|
| MD5 |
b4428a43d48db47676c0b583be085a82
|
|
| BLAKE2b-256 |
5cade48c3cd8df6461815361c43f1656cfb274099b8fcf4fdfa91fa1167bf42d
|
File details
Details for the file runtimed-2.0.3a202603220259-cp39-abi3-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: runtimed-2.0.3a202603220259-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9595335e4e17550ceecfde9b94603de20652042dec4f0b8d0d3a0d09c6ff72a3
|
|
| MD5 |
e03c0120d83b2bc00f34697cbc04140f
|
|
| BLAKE2b-256 |
60c80aaa9379b15b5cb779c5fe3b254fabb2f149e0536decd075777a9b1aa0d3
|
File details
Details for the file runtimed-2.0.3a202603220259-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: runtimed-2.0.3a202603220259-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d5b5245c7f8247bb21e570f5cffaa5bb9c5467ced0883909d8e94762fc4a348
|
|
| MD5 |
fe606701dc028beb38f9357c99cec242
|
|
| BLAKE2b-256 |
c0f164a509fa83c0f436e44510c41b8276836f60b3e0f0c0d98e0da74d564979
|