--- title: Getting Started --- # Getting Started ## Clone the Repository ```bash git clone https://github.com/mayocream/koharu.git cd koharu ``` ## Prerequisites - [Rust](https://www.rust-lang.org/tools/install) 1.95 or later (Rust 2024 edition) - [Bun](https://bun.sh/) 1.0 or later ### Windows - Visual Studio C++ build tools - [CUDA Toolkit 13.0](https://developer.nvidia.com/cuda-13-0-0-download-archive) for the normal CUDA build path - [AMD HIP SDK](https://www.amd.com/en/developer/resources/rocm-hub/hip-sdk.html) for ZLUDA ### macOS - Xcode Command Line Tools (`xcode-select --install`) ### Linux - A working C/C++ toolchain (`build-essential` or the equivalent for your distro) - [LLVM](https://llvm.org/) 15 or later for GPU-accelerated builds ## Install Dependencies ```bash bun install ``` Rust toolchain components are resolved automatically from `rust-toolchain.toml` on first build. ## Run Koharu Locally ```bash bun run dev ``` This launches the Tauri app in development mode against the bundled UI. ## Build a Release ```bash bun run build ``` The built binaries land in `target/release-with-debug/` or `target/release/` depending on the profile. ## Daily Commands Always go through `bun cargo` for Rust commands so platform feature flags (CUDA, Metal, Vulkan) are wired up correctly. ```bash bun cargo check # type-check the workspace bun cargo clippy -- -D warnings # lint bun cargo fmt -- --check # format check bun cargo test --workspace --tests # unit and integration tests ``` UI and config formatting use [oxfmt](https://github.com/oxc-project/oxfmt): ```bash bun run format bun run format:check ``` UI unit tests: ```bash bun run test:ui ``` ## ML Work When iterating on `koharu-ml` or `koharu-llm` locally, enable the backend that matches your machine: ```bash # Windows / Linux with NVIDIA bun cargo test -p koharu-ml --features=cuda # macOS (Apple Silicon) bun cargo test -p koharu-ml --features=metal ``` See [Acceleration and Runtime](../explanation/acceleration-and-runtime.md) for details on how backends are selected. ## Docs Docs live under `docs/en-US/`, `docs/ja-JP/`, `docs/zh-CN/`, and `docs/pt-BR/`. Build each locale you touched: ```bash zensical build -f docs/zensical.toml -c zensical build -f docs/zensical.ja-JP.toml zensical build -f docs/zensical.zh-CN.toml zensical build -f docs/zensical.pt-BR.toml ``` If you add a new page, register it in the matching `zensical*.toml` nav. ## Before Opening a PR Run the checks that match what you changed. You do not need to run everything on every PR. - **Rust changes** — `bun cargo fmt -- --check`, `bun cargo check`, `bun cargo clippy -- -D warnings`, `bun cargo test --workspace --tests` - **UI changes** — `bun run format` and `bun run test:ui` - **Desktop integration** — `bun run build` - **Docs** — build every locale you edited ## Pull Request Expectations - **One goal per PR.** Bug fix *or* refactor *or* new feature, not all three. - **Follow existing patterns.** If the file already has a convention, match it instead of introducing a new one. - **Describe what changed and how you verified it.** Screenshots or short clips for UI work; before/after for pipeline work. - **No backwards-compat shims.** Replace old code in place — no `v2/` folders, no deprecated aliases. - **No drive-by refactors.** If you spot unrelated cleanup, open a separate PR. Small, focused PRs get reviewed faster than large, mixed ones. ## Related Pages - [Build From Source](../how-to/build-from-source.md) - [Run GUI, Headless, and MCP Modes](../how-to/run-gui-headless-and-mcp.md) - [Troubleshooting](../how-to/troubleshooting.md)