> ## Documentation Index
> Fetch the complete documentation index at: https://koharu.rs/llms.txt
> Use this file to discover all available pages before exploring further.

# Development setup

> Run the desktop app, choose a focused check, and regenerate derived bindings.

## Prerequisites

Koharu is developed against Rust 1.97.1 with the 2024 edition, Bun 1.3.14, and LLVM 22.1.8. The repository does not pin these versions. LLVM supplies the libclang that bindgen needs in the `-sys` crates; the native libraries themselves are prebuilt packages downloaded at runtime, so no C++ build system is required.

<Tabs>
  <Tab title="Windows">Install MSVC C/C++ build tools for native dependencies.</Tab>

  <Tab title="Linux">
    Install the packages the CI workflow uses: `build-essential`, `libgtk-4-dev`, `libxdo-dev`,
    `libssl-dev`, `libayatana-appindicator3-dev`, and `librsvg2-dev`. Tests also need
    `fonts-noto-cjk`, `dbus-x11`, and `gnome-keyring`.
  </Tab>

  <Tab title="macOS">
    Install the platform C/C++ development tools required by native dependencies.
  </Tab>
</Tabs>

## Start development

```bash theme={null}
git clone https://github.com/koharu-rs/koharu.git
cd koharu
bun install
bun dev
```

`bun dev` launches the Next.js UI and Tauri app. It builds `koharu-canvas` for WASM with wasm-pack into `packages/bridge/src/wasm`, then watches `koharu-canvas` and `koharu-rasterizer` and rebuilds on change. Turbopack refreshes the browser client after successful rebuilds. Debug builds expose CEF remote debugging at `http://127.0.0.1:4000`.

## Check the affected component

Run the smallest relevant debug check or focused test once. For example:

```bash theme={null}
cargo check -p koharu
cargo test -p koharu-pipeline <test_name>
cargo fmt --all --check
```

For frontend work, use the package's focused test or typecheck command. Repository formatting checks are available through `bun run check`; `bun run lint` runs frontend linting.

<Note>
  Do not run full suites, non-debug profiles, or end-to-end tests by default. Run them only when
  explicitly requested.
</Note>

## Regenerate IPC bindings

Rust command signatures and Specta types are authoritative:

```bash theme={null}
cargo run -p koharu-app --bin generate
```

Do not hand-edit `packages/bridge/src/protocol.ts`.

## Build an executable

When you need a release executable, `bun run build` invokes `tauri build --no-bundle` and writes to `target/release`. Installer packaging belongs to the release workflow.

<Card title="Work on the documentation" icon="book-open" href="/en/development/documentation">
  Preview Mintlify and maintain the English, Japanese, and Chinese documentation.
</Card>


## Related topics

- [Contribute to Koharu](/en/development/contributing.md)
- [Install Koharu](/en/installation.md)
- [Write and publish docs](/en/development/documentation.md)
- [Architecture](/en/development/architecture.md)
- [Processing and rendering](/en/development/rendering.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.