Skip to content

Building from Source

The repository’s default branch is dev. The alpha branch is used for release snapshots; do not assume a main branch exists.

Terminal window
git clone https://github.com/Rheosoph/flow-like.git
cd flow-like
git checkout dev

Fork the repository first if you plan to contribute.

Flow-Like uses mise to pin and run the repository toolchain. The root mise.toml currently installs Rust, Bun, Node.js 22, Python 3.12, and uv.

Host builds use Rust 1.97.1, pinned in rust-toolchain.toml, mise, CI, and Docker builders. This satisfies Wasmtime 48’s Rust 1.95 minimum. Use the repository pin when building Flow-Like. Guest WASM packages have separate compiler requirements documented in their templates.

Terminal window
mise trust
mise install
bun install

The desktop build also needs:

  • the Tauri 2 system prerequisites for your operating system;
  • protoc, because Rust build scripts compile the repository’s protobuf definitions;
  • a working C/C++ build toolchain for native dependencies.

Platform-specific native libraries and mobile toolchains have additional requirements. Use the task you intend to run as the final source of truth.

The top-level task detects the current operating system and architecture:

Terminal window
mise run dev:desktop

Use an explicit task only when you need to override that detection:

Terminal window
mise run dev:desktop:mac:arm
mise run dev:desktop:mac:intel
mise run dev:desktop:win:x64
mise run dev:desktop:win:arm
mise run dev:desktop:linux:x64
mise run dev:desktop:linux:arm

To run the desktop app with the local API and runtime:

Terminal window
mise run dev:desktop:local
Terminal window
mise run build:desktop

Tauri writes binaries and installers below target/release/; the precise bundle directory and extension depend on the platform.

The frontend release job installs the full workspace and exports its assets for the native targets. Native jobs install the smaller package set in .github/release-tools into the runner’s temporary directory.

Keep its Tauri CLI and dotenv CLI versions aligned with the versions resolved in the root bun.lock. Update the release-tools lockfile in a temporary directory outside the repository so Bun does not discover the monorepo workspace. Commit that directory’s package.json and bun.lock together.

The native release workflow runs apps/desktop/scripts/sync-version.ts explicitly. It does not install the desktop workspace, so it cannot rely on the desktop postinstall script to synchronize versions.

Terminal window
mise tasks
mise run dev:web
mise run dev:docs
mise run build:web
mise run build:docs
mise run check
mise run fix

mise.toml is the authoritative task list. Several tasks wrap package-local scripts, so run them from the repository root unless a page explicitly says otherwise.

Tauri uses the system WebKitGTK stack on Linux. If a window fails to render, confirm the Tauri prerequisites for your distribution and check the upstream Tauri issues for your WebKitGTK or graphics-driver combination.