
A notebook where to writes notes while using rizin!
A notebook for binary analysis with rizin. Keep notes, commands, and scripts organized per binary.
Requires rizin 0.7.0 or later.
Each notebook page is tied to one binary. It stores the binary itself, its SHA-256 hash, and a list of cells:
Pages are stored as individual .rznb files (SQLite databases) in ~/.rizin-notebook/.
They can be exported and imported as single self-contained files.
rizin-notebook) - the main application. Serves a web UI, exposes a
protobuf + JSON REST API, stores everything in per-page .rznb SQLite files.NB commands to rizin so you
can interact with the notebook from the rizin shell.The plugins are optional. The Go server works standalone with just a browser.
The Go server is platform-independent. The plugins depend on the Rizin version they are built against.
If standalone rizin and Cutter ship different Rizin versions on your machine, build
rz_notebook once for each. Both builds can talk to the same server and share the same
.rznb data.
Simple rule:
rz_notebook build per Rizin version in useProject screenshots are organized under docs/images/.
Figure 1. Homepage view (with cell & scope based search, supporting multiple modes.)
Figure 2. Settings page for environment configuration, keyboard shortcuts, and server-side behavior.
Figure 3. Command autocomplete in the web console, helping discover and complete Rizin commands quickly.
Figure 4. Built-in command help and search modal for exploring command descriptions and arguments.
Figure 5. Rizin core plugin integration, enabling notebook interaction directly from the Rizin shell.
Figure 6. Cutter plugin integration view showing the notebook experience inside the Cutter interface.
Figure 7. Additional Cutter plugin workflow view demonstrating possible notebook usage(s).
go build -o rizin-notebook .
Embed the version string during release builds:
go build -ldflags "-X main.NBVERSION=$(git rev-parse --short HEAD)" -o rizin-notebook .
./rizin-notebook
Opens at http://127.0.0.1:8000/ by default.
Flags:
-bind 127.0.0.1:8000 address and port to listen on
-root / URL path prefix
-notebook /path/to/data data directory (default: ~/.rizin-notebook)
-debug-assets /path load templates from disk instead of embedded
-debug enable HTTP request logs
Set RIZIN_PATH to override the rizin binary path used for pipe execution.
See rizin-notebook-plugin/README.md.
See cutter-notebook-plugin/README.md.
If Cutter ships its own embedded Rizin, the rz_notebook plugin loaded by Cutter must be
built against that same bundled Rizin version.
Each page is a .rznb file in the data directory. It is a SQLite database containing:
The server maintains a catalog.db index for fast listing across all pages.
On first run the server automatically migrates any pages from an older monolithic
notebook.db format into the per-page .rznb layout.
All NB plugin commands use the protobuf API (Content-Type: application/x-protobuf).
The schema is in proto/notebook.proto.
A parallel JSON API at /api/v1/json/... is used by the Cutter plugin and the browser UI.