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 wrapperskoharu-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.