This is an attempt to port kernel-sidecar to Rust.
Roadmap:
- Establish ZMQ connections with a kernel from information in a connection file
- Model the high-level Jupyter message spec and wire protocol, including hmac signing
- Implement the Action and message delegation concepts from Python version
- Model all Jupyter messages
- Model in-memory Notebook and create utility handlers for updating it based on outputs
- Test multiple Kernel backends
- Python (ipykernel)
- Rust (evcxr_jupyter)
- Typescript (deno)
- R (irkernel)
- Implement CLI similar to Python kernel-sidecar
- Create example app of controlling Notebooks from external calls, e.g. AI function calling
- Create example of integration with Carabiner GPT
- Connect to Jupyter server to stay synced with other users via y-crdt deltas
Use cargo run
. The main.rs
script at this time starts a Jupyter Kernel as a child process, the available utility functions can start ipykernel
(Python), evcxr_jupyter
(Rust), or irkernel
(R) kernels. After that, the script creates an Action
for a kernel_info_request
and awaits its completion, meaning it should run until kernel goes to idle and we see kernel_info_reply
. A Handler
is attached to the action to dbg!
all messages related to the original request.