Every record in a session is stamped on one monotonic clock: `mach_absolute_time` on macOS and `QueryPerformanceCounter` on Windows, behind a `platform` facade with a third `unsupported` host that builds anywhere. Anchors pair that clock with the wall clock, a map interpolates between them, and a jump detector notices sleep and clock steps by comparing how far each moved. Video timecodes are parsed and printed here too. `Host` and `ClockKind` say what a session was recorded on.
komorebi-recorder
Synchronized screen, log and trace capture for komorebi bug reproduction. komorebi-recorder records a bug while it
happens, on macOS and on Windows: the screen, komorebi's log, every event komorebi sends its subscribers and the
operating system's own trace, all on one clock, into a single session directory. It then answers, from that
directory alone, what komorebi and the OS were doing at any second of the video and where in the video any log line or
event is: for a person, with a window that plays the recording with everything that happened laid out on a timeline,
and for an agent, with commands that print JSON.
Install
Every release has, for macOS and for both architectures of Windows, a zip of the executables and, for Windows, an MSI
installer that puts them in Program Files\komorebi-recorder\bin and optionally on the PATH. The nightly release
is rebuilt every week from master.
| file | |
|---|---|
| macOS (Apple silicon) | komorebi-recorder-<version>-aarch64-apple-darwin.zip |
| Windows x86_64 | komorebi-recorder-<version>-x86_64.msi or komorebi-recorder-<version>-x86_64-pc-windows-msvc.zip |
| Windows ARM64 | komorebi-recorder-<version>-aarch64.msi or komorebi-recorder-<version>-aarch64-pc-windows-msvc.zip |
checksums.txt lists the SHA-256 of every file. The installers and executables are not signed, so Windows
SmartScreen and Defender may warn about them.
From source
The repository is a Nix flake. In a checkout:
nix develop # the toolchain and the pinned komorebi sources
cargo install --path komorebi-recorder --locked
nix build makes the macOS binary in ./result/bin, and nix build .#komorebi-recorder-windows cross-compiles
komorebi-recorder.exe and, with it, komorebi-recorder-gui.exe from a Mac. nix run github:LGUG2Z/komorebi-recorder
runs the latest commit without a checkout.
How it fits together
Two things vary independently: the host the recorder runs on (macOS or Windows) and the flavor of komorebi it records (komorebi for Mac or komorebi for Windows). A session records both, so one recorded on Windows can be investigated on a Mac. Every record in a session is stamped on one monotonic clock, and the files in it are never rewritten after they are written. Architecture explains the model and which layer enforces each rule; Platform answers the same questions for each host.
Crates
komorebi-recorder: the library, thekomorebi-recordercommand and, with the same code, thekomorebi-recorder-guiexecutable (no console window on Windows).
Checks
just check runs formatting, clippy and the tests for macOS, clippy for Windows (the Windows code is type-checked
from a Mac, not run), rustdoc with its warnings as errors for both hosts, and cargo deny. It needs nix develop.
CI runs the same checks, builds both platforms and, for Windows, the installer.
Documentation
cargo doc --workspace --no-deps --open for the code. CONTRIBUTING.md says how to work on it.