Build from source
Build the runtime and CLI from the streamlib repository. Use it while the installers roll out, on a setup they don't cover, or to work on Tatolab itself.
The runtime and CLI are built from the streamlib repository. A source build gives you the same tatolabd and tatolab the installers ship. The difference is that nothing starts the runtime for you: you run tatolabd in a terminal of its own.
What you need
Section titled “What you need”-
Rust, installed with rustup.
-
uv, which the build uses to run its pinned Python tools. See Install uv.
-
A native toolchain and a few libraries:
On Debian or Ubuntu:
Terminal window sudo apt install pkg-config protobuf-compiler libclang-dev libvulkan-dev glslc python3-dev cmake ninja-buildOn macOS, with the Xcode command line tools (
xcode-select --install) and Homebrew:Terminal window brew install shaderc cmake ninjashadercprovidesglslc. You don’t need a Vulkan SDK on macOS: the build puts a Vulkan loader and MoltenVK inside the runtime.
The platform requirements are the same as for the installers: Linux x86_64 with a Vulkan GPU driver, or an Apple silicon Mac with macOS 15 or later.
git clone https://github.com/tatolab/streamlib.gitcd streamlibcargo xtask build-runtime --releaseThe first build takes a while. When it finishes, target/tatolab-runtime/ is laid out like an installed copy:
target/tatolab-runtime/├── bin/│ ├── tatolabd the runtime│ └── tatolab the CLI└── lib/tatolab/lend/ the runtime's Python bindings, which each node's process loads from hereKeep bin/ and lib/ together: tatolabd finds lib/ next to itself, and each node’s process loads the runtime’s bindings from there, never from your .venv. To move the build, copy the whole tatolab-runtime folder.
Put it on your PATH:
export PATH="$PWD/target/tatolab-runtime/bin:$PATH"Add that line, with the full path, to ~/.bashrc or ~/.zshrc to keep it.
Start the runtime
Section titled “Start the runtime”In a terminal of its own, run:
tatolabdLeave it running. It’s the runtime for the whole machine: every stream you run loads into it. It runs in the foreground until you press Ctrl-C.
In another terminal, check that it answers:
tatolab streamsNo streams in this runtime.You’re ready for the quickstart.
Notes for macOS
Section titled “Notes for macOS”- Camera and microphone prompts name your terminal app, not Tatolab, because the terminal started the runtime. Allow access for Terminal (or iTerm, or whichever you use) in System Settings → Privacy & Security.
the machine runtime lock cannot be taken: /Library/Application Support/Tatolab … does not exist. The Tatolab app creates that folder on its first launch. Without the app, run thesudocommands the message prints, once.
Updating
Section titled “Updating”git pullcargo xtask build-runtime --releaseThen stop tatolabd with Ctrl-C and start it again. Streams you kept with tatolab run -d load again when it starts.
A debug build (without --release) builds faster and runs slower; it’s useful when you’re working on the runtime itself.