githubEdit

terminalBuilding the Rust Core

Build the Rust core from scratch on a fresh machine.

This page is the contributor-facing reference for compiling the Rust core on a fresh machine.

It covers the repo-root crate only:

  • Cargo package: openhuman

  • Binary: openhuman-core

  • Library: openhuman_core

If you want the full desktop app (pnpm dev, Tauri, CEF, frontend tooling), use Getting Set Up. That path has extra JavaScript, submodule, and desktop-runtime requirements that are not needed for a core-only cargo workflow.

1. Install the pinned Rust toolchain

The repository pins Rust in rust-toolchain.tomlarrow-up-right:

  • Channel: 1.93.0

  • Components: rustfmt, clippy

Recommended install:

rustup toolchain install 1.93.0 --component rustfmt --component clippy
rustup default 1.93.0

You can also let cargo auto-install from rust-toolchain.toml after rustup itself is installed.

2. Clone the repo

Core-only work:

That is enough for the root crate.

Desktop/Tauri work is different:

  • app/src-tauri/vendor/ submodules are only needed when building the desktop shell or CEF-aware Tauri tooling.

  • For that flow, follow Getting Set Up and run git submodule update --init --recursive.

3. Build commands

From the repository root:

Notes:

  • The package name is openhuman, but the runnable binary is openhuman-core.

  • If you prefer package-oriented cargo commands for packager scripts, use -p openhuman.

  • The built binary lands at target/debug/openhuman-core or target/release/openhuman-core.

4. macOS prerequisites

Install:

  • Xcode Command Line Tools: xcode-select --install

Why:

  • whisper-rs compiles native code during the build.

  • On macOS this crate is built with the metal feature enabled in Cargo.tomlarrow-up-right, so Apple toolchains and SDK headers need to be present.

After Xcode CLT is installed, the core should build with the cargo commands above.

5. Linux prerequisites

Core-only package set

Install these packages before running cargo on a fresh Ubuntu/Debian machine:

Why these matter:

  • build-essential, cmake, pkg-config: native builds used by transitive Rust dependencies.

  • clang, libclang-dev: bindgen / C and C++ compilation paths used by native crates.

  • libssl-dev: OpenSSL headers needed by some networking dependencies.

  • libasound2-dev, libxi-dev, libxtst-dev, libxdo-dev, libudev-dev: required by audio/input/device crates pulled into the core build.

whisper-rs + clang note

whisper-rs-sys can fail under clang with:

This is why the docs call out libstdc++-14-dev: clang may pick GCC 14 C++ headers on Ubuntu runners.

If your distro layout still leaves libstdc++.so unresolved for the build, use the same workaround documented in AGENTS.mdarrow-up-right:

Adjust the GCC version in that path if your machine installs a different one.

Linux desktop/Tauri package set

If you are building the desktop shell instead of the core-only crate, install the broader Ubuntu dependency set mirrored from .github/workflows/build-desktop.ymlarrow-up-right:

Use that desktop list only when you need app/src-tauri/; for root-crate work, the smaller core-only list above is the relevant baseline.

6. Windows prerequisites

Install:

  • Rust via rustup

  • Visual Studio Build Tools 2022 or Visual Studio with the Desktop development with C++ workload

  • The MSVC target used by CI and release builds: x86_64-pc-windows-msvc

Recommended commands after the Microsoft toolchain is installed:

Windows note:

  • The repo patches whisper-rs-sys to force the static MSVC CRT and avoid the LNK2038 / LNK1169 mismatch called out in Cargo.tomlarrow-up-right. Use the MSVC toolchain, not MinGW.

Last updated