The toolchain, the environment and the tasks of this repository: the one place every tool version lives. Nothing here needs nix, nix-darwin or root:
mise trust && mise install the toolchain (a C compiler and git must exist)
mise tasks what can be run
mise run check the fast gates
mise run dev the Worker under wrangler dev, supervised by pitchfork
tools/check-versions.sh (part of mise run check) fails when a version
written elsewhere (Cargo.toml's wasm-bindgen pin, hk.pkl's hk release) differs
from the one here. The nix flake only wraps this file; it holds no version of its own.
12min_version = "2026.10.0"
14[settings]
[daemons] below needs it.
16experimental = true
18[tools]
The Worker is Rust compiled to WebAssembly.
20rust = { version = "1.99.0", profile = "minimal", components = "rustfmt,clippy", targets = "wasm32-unknown-unknown" }
The wasm-bindgen CLI must equal the wasm-bindgen crate pinned in Cargo.toml
(checked by tools/check-versions.sh). worker-build downloads wasm-opt and esbuild itself.
23"cargo:wasm-bindgen-cli" = "0.2.127"
worker-build links OpenSSL on Linux. A system copy (and pkg-config) is not assumed: the same OpenSSL from conda-forge is installed first and linked from where mise put it.
26"conda:openssl" = "3.5.9" 27"cargo:worker-build" = { version = "0.8.6", depends = ["conda:openssl"], install_env = { OPENSSL_DIR = "{{ env.MISE_DATA_DIR | default(value=xdg_data_home ~ '/mise') }}/installs/conda-openssl/3.5.9", RUSTFLAGS = "-C link-arg=-Wl,-rpath,{{ env.MISE_DATA_DIR | default(value=xdg_data_home ~ '/mise') }}/installs/conda-openssl/3.5.9/lib" } }
The jdx tools: git hooks, supervised dev daemons, secrets.
What the owner's tasks read, never written here. Declared, without values, in fnox.toml; tools/with-secrets.sh puts them in a command's environment through fnox when it is set up, and a command simply finds them in the environment otherwise. CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID wrangler (Workers AI has no local emulation) LMJTFY_TYPESAFE_API_KEY the Jev key, for the dev server LMJTFY_GITHUB_TOKEN the clone proxy's read-only token
---------------------------------------------------------------- setup
---------------------------------------------------------------- checks
The tree is not formatted by rustfmt, so formatting is not checked. Warnings are shown, not fatal.
---------------------------------------------------------------- build and run
85[tasks."dev:preflight"] 86description = "Fail at once, with the reason, if the Cloudflare credentials the dev server needs are missing" 87run = "tools/with-secrets.sh tools/wrangler --preflight" 88 89[tasks.dev] 90description = "Start the dev server (http://localhost:8787/) under pitchfork and wait until it answers" 91depends = ["dev:preflight"] 92run = ["mise daemons start worker", "echo 'the Worker is on http://localhost:8787/; mise daemons logs worker, mise daemons stop worker'"]
---------------------------------------------------------------- the owner's tasks These need the owner's Cloudflare account: CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID in the environment (or in fnox, see fnox.toml). Anyone else can deploy their own copy the same way.
---------------------------------------------------------------- daemons
Supervised by pitchfork, started and stopped through mise. wrangler rebuilds the Worker itself when a
source changes; its watcher can start two builds off one save, which collide in build/ and take wrangler
down (2026-10-02). tools/wrangler-dev reports any exit pitchfork did not ask for as a failure, and
retry starts it again (five times, then mise run dev fails instead of waiting for ever).