Skip to main content
Use the root Makefile for normal development.

Setup

This installs desktop and OAuth service npm dependencies.

Desktop development

Fresh-build Rust sidecars and start the Tauri desktop app:
Run the frontend only:
Build the packaged desktop app:

Rust and frontend checks

GitHub Actions parity:

Run the CLI

Or run the debug binary directly after build:

Daemon development

The default state root is ~/.loc. Use LOCALITY_STATE_DIR for isolated tests.

macOS File Provider development

For File Provider changes, verify the installed app, daemon, registered domain, and visible CloudStorage folder. A passing Rust build is not enough.

Publish commands

Release commands are deliberate and should be run only for a release task:
Do not publish a build that failed relevant checks. The dedicated .github/workflows/release-notes.yml workflow generates the GitHub Release body with scripts/render-release-notes.sh. The script compares RELEASE_TAG with the previous reachable v* tag, sends the commit range and diff summary to codex exec, and writes target/release/release-notes.md for gh release create/edit --notes-file. GitHub’s PR-only generated notes are intentionally not used because direct commits to main are common. Platform release workflows only publish assets; if they create the release first, the notes workflow later replaces the placeholder body. GitHub Actions needs CODEX_CONFIG_TOML plus the provider credential named by that config. The current Azure OpenAI setup uses AZURE_OPENAI_API_KEY. Those secrets are passed only to the release-notes step. Validate the plumbing locally with:

Docs development

The docs source uses Mintlify from the repository’s docs-site/ directory. Internal engineering notes stay in docs/. Preview from an isolated docs workspace:
Validate before committing:
CI runs the same validation for docs-related pull requests. It does not publish the docs site:
The docs helper pins the Mintlify CLI version for deterministic local and CI behavior. Override it only when intentionally testing a CLI upgrade:
Check navigation paths directly when editing docs-site/docs.json:
Keeping the Mintlify root in docs-site/ avoids mixing public docs with internal design notes.