Maintainer reference for building, testing, and releasing Zodex itself; not required to operate Sprite or Local.

Rust checks

Run the full Rust test suite:

cargo test --quiet

For CLI behavior changes, also inspect help output:

cargo run --quiet --bin zodex -- --help
cargo run --quiet --bin zodex -- sprite --help
cargo run --quiet --bin zodex -- proxy --help
cargo run --quiet --bin zodex -- github --help
cargo run --quiet --bin zodex-agent -- --help
cargo run --quiet --bin zodex-agent -- github publish-pr --help

The tests cover binary manifests, CLI behavior, GitHub App scripts, install behavior, Sprite scripts, zodex-agent forwarding, MCP tool registration, session handling, redaction, patch application, and mode-first product contracts.

Liveboard checks

Liveboard is an isolated frontend app under apps/liveboard. On macOS its production assets are embedded into the zodex binary by build.rs; Linux/Sprite builds do not require frontend tooling.

For visual development against the real currently running Local runtime, use the attached dev server:

cd apps/liveboard
bun run dev:live

The launcher builds a repo-local Zodex viewer once, starts zodex local watch --no-open against the active Local observer, and runs Vite with HMR. Vite proxies Liveboard API, SSE, and preference requests through that temporary same-origin capability host, so the observability bearer remains outside browser JavaScript. It does not restart or replace the running Local runtime.

cd apps/liveboard
bun install --frozen-lockfile
bunx playwright install chromium webkit
bun run typecheck
bun run test
bun run test:browser
bun run test:browser:webkit
bun run build

Do not commit apps/liveboard/node_modules/ or apps/liveboard/dist/.

For an embed-required macOS validation, build the frontend first and then run Cargo with:

ZODEX_LIVEBOARD_EMBED_REQUIRED=1 cargo test

CI does this only on the native macOS lane. Release builds likewise install Bun/build Liveboard only for the Apple target; Linux/Sprite release targets stay independent of the frontend toolchain.

Docs site checks

Run:

cd docs
bun install
bun run check
bun run build

Do not commit generated Astro output:

.astro/
dist/
node_modules/

These paths are ignored.

Docs content rules

Keep docs tied to actual zodex behavior:

  • mention the real binaries: zodex, zodex-agent, git-remote-zodex, zodexd, zodex-prd
  • distinguish operator-machine commands from Sprite-side commands
  • keep the read/write access model explicit
  • explain when a command needs an active grant
  • keep MCP as the supported remote coding transport; do not reintroduce deleted legacy transports
  • update command examples when Clap arguments change
  • when Local observability routes, response fields, filters, SSE event types, discovery fields, API/presentation versions, or recovery semantics change, update Local observability API in the same change
  • when Liveboard/TUI controls, board behavior, presentation, or recovery UX changes, update Watch and Liveboard in the same change

Repository scripts

Useful scripts include:

scripts/install.sh
scripts/mint-gh-app-installation-token.sh
scripts/protect-main-branch.sh
scripts/github_actions_fail_fast.py

Run script-specific tests when changing them:

cargo test --quiet --test install_script
cargo test --quiet --test github_app_scripts

Release awareness

The crate version is defined in Cargo.toml. The repository uses tagged releases.

When a release changes CLI arguments, binary names, setup behavior, service layout, Liveboard assets, or public observer contracts, update the docs site in the same change.