Skip to content
Documentation
v0.1.0

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.

Terminal
git clone https://github.com/godellabs-ai/godel-tally.git
cd godel-tally
make web-install
cargo install cargo-watch --locked
make dev

The 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.

Terminal
# Apple silicon + macOS 26 + Apple container
TALLY_DB_MODE=apple make dev
# Leave managed databases running after Ctrl-C
TALLY_KEEP_DB=1 make dev

For 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#

Terminal
make build
make run
# Package this host's binary and installer helpers
make package

make 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#

Terminal
make check
bash scripts/test-deployment.sh
make compose-check

The 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:

Terminal
make release-local

The 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.