worker
Whiskers' hubs as a Cloudflare Worker with one Durable Object per household. The same build (worker-build --release,
giving build/index.js and build/index_bg.wasm) runs under Cloudflare's wrangler dev and under celld dev.
What it serves today: POST /memory/sync, /household/sync and /chat/sync, answered by whiskers-service over a backend
whose three hubs live in the household's object. That is all the Worker has (it implements HasMemory, HasHousehold and
HasChat and no other capability), so it is all the service is given: every other route, /check and /usage and
the rest, is not there and answers 404 as an unknown path does. Moving a capability onto the Worker is implementing its
Has… trait and giving the service its route (Service::serve), see crates/whiskers-ports/README.md.
| Path | What |
|---|---|
| src/ | The adapter. |
| tools/ | host starts, stops and restarts native, wrangler and celld each on its own port; crosscheck runs the whole comparison; probe shows what each host says to a few odd requests. |
wrangler.jsonc | The one configuration both hosts read. Only keys celld accepts: no routes, never .toml. |
.dev.vars | Read by wrangler dev and celld dev only. It switches on the test mode (see src/household.rs). |
Run it:
nix develop ~/whiskers#backend
worker-build --release
celld dev . --port 8801 # self-hosted, no bucket; state in .celld/dev
wrangler dev --local --port 8802 --persist-to .wrangler/state
cargo test # the pure parts, natively
One deployment serves one household, named by the HOUSEHOLD setting: the wire carries no credential today, so
nothing could say which household a request is for. A harness that needs a fresh household per test turns on the
test mode in .dev.vars (TRUST_HOUSEHOLD_HEADER=1), which neither deploy reads.