Skip to main content
Koharu runs as a desktop application. React invokes typed Tauri commands; native components own durable project state and processing.

Interface and application

Independent typed channels carry project, canvas, job, download, preference, and resource updates. The frontend does not use an HTTP client or a generic application event envelope.
Rust signatures generate packages/bridge/src/protocol.ts. Change the Rust source and regenerate bindings.

Scene and processing

koharu-scene owns the canonical project, hierarchy, components, relations, patches, revisions, and session undo. koharu-storage persists opaque complete state payloads and immutable blobs. koharu-pipeline owns page-stage scheduling, model lifetime, progress, cancellation, and incremental commits. koharu-ml owns models and the shared device abstraction; koharu-translator owns local and hosted translation connections.

Rendering and transport

koharu-renderer interprets a page as a portable prepared frame owned by koharu-rasterizer. Browser transport splits its manifest from content-hashed resources. Raster data is tiled with sampling gutters, bounding browser copies, validation, uploads, and eviction. koharu-canvas retains resources across pages and activates a staged frame through WebGPU only when every dependency is ready. Native PNG, PSD, font previews, and Agent previews compose the same full-resolution resources through native readback. koharu-desktop coordinates latest-wins preparation and exact-generation manifests and resources. The webview owns the visible window surface.

Native runtime boundary

Safe wrappers koharu-torch, koharu-llama, and koharu-diffusion are separate from unsafe -sys dynamic-loading crates. koharu-runtime discovers, downloads, validates, and loads their packages.

Scene and storage

Trace edits, revisions, publication, and recovery.

Processing and rendering

Follow stage commits through browser presentation.