Miku is an early-stage Rust Kubernetes management application inspired by Lens. It is designed as a multi-crate workspace with one service contract shared by:
- a native egui desktop app (
miku/miku gui) - a BS mode with a Rust server plus wasm egui UI (
miku server)
The workspace keeps implementation details behind crate boundaries:
miku-core: domain types, identifiers, Kubernetes resource references, and shared errorsmiku-api: service traits and DTO contracts shared by UI, server, clients, and implementationsmiku-store:~/.mikudirectory and SQLite-backed local persistencemiku-kube: Kubernetes integration built onkube-rsmiku-server: REST/JSON and streaming transport adapter over the service traitsmiku-http-client: client facade for wasm/BS modemiku-ui: egui application shellmiku-web: wasm entrypoint for the web UImiku-cli:clapentrypoint withguiandserversubcommands
By default, Miku stores user data under ~/.miku:
miku.dbfor SQLite dataconfig.tomlfor small human-readable settingslogs/for local logscache/for disposable cache data
The application should not copy Kubernetes credentials into SQLite. It references existing kubeconfig contexts unless a future secret-store design changes that policy.
Native GUI:
cargo run -p miku-cliServer mode:
cargo run -p miku-cli -- server --bind 127.0.0.1:5174Web UI static assets:
make build-web-assetsThe Makefile target builds miku-web for wasm32-unknown-unknown, runs wasm-bindgen
with --target web, and writes generated assets into
crates/miku-server/web-dist. Those generated files are embedded into
miku-server at compile time and are intentionally ignored by git. The
installed wasm-bindgen-cli version must match the resolved wasm-bindgen
crate version in Cargo.lock.
Web UI check target:
make check-webQuality checks:
make fmt
make clippy
make test