How sheng-tse/jupynvim works
jupynvim is a Neovim notebook editor backed by a Rust service. The main workflow opens and edits an .ipynb, starts a selected or inferred Jupyter kernel, executes cells, routes results back into notebook state, and renders them in the editor. Lua modules also provide notebook-aware LSP, kernel completion/inspection, and Kitty graphics; remote mode extends the backend with SSH-connected files, terminals, and search. The tree and excerpts support the runtime entry points and several backend paths; unsampled Lua/backend wiring is shown only where README capabilities establish it.
Main entry points: mod.rs RPC server · init.lua Notebook editing · exec.rs Execution RPCs · render.lua Cell rendering
Components 25
Neovim editor
- Plugin setup
lua/jupynvim/init.lua - Notebook editing
lua/jupynvim/notebook/init.lua - Cell rendering
lua/jupynvim/notebook/render.lua - Markdown cells
lua/jupynvim/notebook/markdown.lua - Image display
lua/jupynvim/notebook/image.lua - Notebook LSP
lua/jupynvim/lsp/init.lua - Kernel LSP proxy
lua/jupynvim/lsp/kernel.lua - Kitty graphics
core/src/kitty.rs
Notebook runtime
- Backend connection
lua/jupynvim/backend/connect.lua - Lua RPC client
lua/jupynvim/rpc.lua - RPC server
core/src/rpc/mod.rs - Notebook format
core/src/notebook.rs - Notebook session
core/src/session.rs
Kernel services
- Execution RPCs
core/src/rpc/exec.rs - Kernel discovery
core/src/kernelspec.rs - Jupyter protocol
core/src/kernel.rs
Remote workspace
- Remote workspace UI
lua/jupynvim/remote/dashboard.lua - Remote files
core/src/rpc/fs.rs - Remote terminals
core/src/rpc/proc.rs - Remote search
core/src/rpc/search.rs
Other components
- Notebook user
- Jupyter kernel
- SSH host
- Language server
- Graphics terminal
Connections 31
- Notebook user → Plugin setup: opens notebook
- Plugin setup → Notebook editing: sets up
- Notebook editing → Backend connection: connects backend
- Backend connection → Lua RPC client: uses RPC
- Lua RPC client → RPC server: sends messages
- RPC server → Notebook format: reads and writes
- RPC server → Execution RPCs: dispatches
- Execution RPCs → Kernel discovery: selects kernel
- Execution RPCs → Notebook session: manages session
- Execution RPCs → Jupyter protocol: executes code
- Jupyter protocol → Jupyter kernel: Jupyter messages
- Jupyter protocol → Notebook session: streams events
- Notebook session → Notebook editing: returns notebook state
- Notebook editing → Cell rendering: renders cells
- Cell rendering → Markdown cells: renders markdown
- Cell rendering → Image display: renders outputs
- Image display → Kitty graphics: encodes graphics
- Kitty graphics → Graphics terminal: writes graphics
- Notebook editing → Notebook LSP: attaches LSP
- Notebook LSP → Language server: sends document sync
- Notebook editing → Kernel LSP proxy: requests completion
- Kernel LSP proxy → Execution RPCs: proxies requests
- Notebook user → Remote workspace UI: opens remote tools
- Remote workspace UI → Lua RPC client: uses RPC
- Backend connection → SSH host: connects remotely
- RPC server → Remote files: dispatches filesystem RPC
- RPC server → Remote terminals: dispatches process RPC
- RPC server → Remote search: dispatches search RPC
- Remote files → SSH host: reads and writes
- Remote terminals → SSH host: spawns processes
- Remote search → SSH host: searches files