Development
Run databases in Docker by default, with a native Rust watcher and Next.js hot reload. Apple containers and existing databases are supported alternatives.
Prepare the toolchain#
Use the pinned Rust toolchain in rust-toolchain.toml (1.99.0), Node.js 24, npm 11, OpenSSL, and a supported database runtime. Install Xcode command-line tools on macOS.
git clone https://github.com/godellabs-ai/godel-tally.git
cd godel-tally
make web-install
cargo install cargo-watch --locked
make devThe launcher builds the registry and initial Rust executable, then runs one cargo watch process for tallyd and npm run dev for Next.js. Rust changes rebuild automatically; UI changes use hot reload.
Development addresses and databases#
Open https://localhost:8080. Next.js proxies to Rust on 127.0.0.1:8788; the private upgrade listener uses 127.0.0.1:8789. Set TALLY_DEV_BIND and matching TALLY_URL to change the development console address.
# Apple silicon + macOS 26 + Apple container
TALLY_DB_MODE=apple make dev
# Leave managed databases running after Ctrl-C
TALLY_KEEP_DB=1 make devFor existing databases, set their URLs and TALLY_DB_MODE=existing. Per-database overrides use TALLY_POSTGRES_MODE and TALLY_CLICKHOUSE_MODE. Development passwords are local defaults; the customer installer generates random credentials.
Build the embedded production UI#
make build
make run
# Package this host's binary and installer helpers
make packagemake build exports the UI in an isolated staging directory, generates registry artifacts, and compiles tallyd with embedded-ui. It does not rename live development files. make run uses HTTPS on port 8443 and Docker databases by default.
cargo run -p tallyd is the development backend without embedded assets. The explicit feature keeps Rust-only edits from requiring a UI export.
Validate changes#
make check
bash scripts/test-deployment.sh
make compose-checkThe main check builds the UI and registry, checks formatting, runs Clippy and workspace tests, validates generated schemas, and runs web lint, tests, and type checks. Deployment fixtures exercise installers and service/container lifecycles without changing real host services.
Use focused tests for the changed behavior. Browser and database integration tests require an isolated test environment; ordinary unit tests do not prove live vendor compatibility. See Contributing for privacy, fixture, and review requirements.
Build platform releases#
On a Mac, install cargo-zigbuild and Zig, then build all four archives:
make release-localThe build targets Linux amd64/arm64 and macOS amd64/arm64. Archives and SHA256SUMS are written under dist/v<version>. Each bundle includes the embedded UI executable, installer, uninstaller, and runtime/upgrade helpers.
Before publishing, verify archive architectures and checksums, run the binary on compatible hosts, test installation and authentication, and commit generated metadata. A cross-compile alone does not prove runtime compatibility on every target.