Build And Run
Dokime is a Rust workspace with a React/Tauri desktop frontend. Repository commands are defined as mise tasks so local development and CI use the same toolchain and command contract.
Prerequisites
Section titled “Prerequisites”- Git access to the private Harmos dependency on GitLab.
- Platform libraries required by Tauri 2.
mise, which provisions the pinned Rust, Node, pnpm, Python, and uv versions.
Prepare The Workspace
Section titled “Prepare The Workspace”mise trustmise installmise run syncmise run sync installs the locked Python and GUI dependencies. It does not
build the desktop application.
Start The Desktop
Section titled “Start The Desktop”mise run dev:desktop:devThis starts the Tauri shell. A local session runs the dokime backend beside
it and attaches over native gRPC. Build it into the same target directory
first:
mise run build:cli:devThe backend owns the runtime.
Run The Standalone Service
Section titled “Run The Standalone Service”After building the CLI with a repository task, the dokime serve command runs
the same product without the desktop shell. Its default address is
127.0.0.1:8765, using native gRPC. The port is exact; --port 0 asks the OS
for an available port. Messages default to 1 MiB, configurable up to 16 MiB
with --message-limit-mib. Remote listeners require --allow-remote, TLS and
an authentication file; see gRPC setup.
mise run build:devtarget/debug/dokime serveThe output directory follows the saved application setting or OS data directory.
Use --output-root when a
repeatable local layout matters, and DOKIME_PLUGINS_DIR to select the immutable plugin authorization store.
Validate A Checkout
Section titled “Validate A Checkout”mise run checkmise run testcheck is the read-only pre-commit aggregate. It covers formatting, Python,
GUI, and Rust linting and type checks, branding, Harmos lock pinning, version
metadata, the installer configuration, and the Rust workspace. test runs
the full Rust workspace suite, then test:gui and test:python; run
test:gui or test:python on their own to iterate on just one lane.