Hoox provides a comprehensive local development workspace designed to emulate your production Cloudflare edge environment. Developers can choose between running microservices natively on local Wrangler V8 isolates or inside completely isolated, containerized Docker stacks, with real-time log tailing and TUI diagnostics.
⚡ 1. Dev Runtime Selection: Native vs. Docker
The hoox dev start command orchestrates the boot sequence for all enabled workers and supports two execution runtimes:
The Guided Startup Flow
When you run hoox dev start:
- Wrangler Version Verification: Probes your global/local
Wrangler package. If Wrangler is outdated, it prompts an advisory upgrade
warning. The warning shows the current vs minimum version and offers a
one-line update command.
- Docker Environment Probing: Checks if the Docker daemon is
active and
docker-compose.yml is present in the workspace. - Runtime Preference Lock: If both runtimes are available,
the CLI prompts you to select your preference. This choice is written to
your
wrangler.jsonc file under the dev runtime block, bypassing
future prompts.
🐳 2. Docker Compose Orchestration & Profiles
For full stack containerized development, Hoox divides operations into three Docker Compose profiles in your root docker-compose.yml:
Only hoox (8787) and dashboard (8794) are published to the host. The
remaining workers are reachable only via service bindings on the hoox-net
bridge network — the same topology as production Cloudflare Workers Service
Bindings.
📍 3. Local Port Mapping Registry
In the local environment, each V8 dev instance mounts to a dedicated host port. Ensure no other applications are occupying these ports before launching:
🛡️ 4. Local Environmental Mocking (.dev.vars)
Because production secrets are locked inside Cloudflare’s secured key vaults, Wrangler dev uses local .dev.vars files located inside each worker’s directory to mock API keys and credentials:
.dev.vars files contain local plaintext keys and are excluded from git index
tracking via .gitignore. Never remove these files from .gitignore or
check them into your repository.
If local tests fail with Time-Stamp Expired errors when calling exchange
APIs, check that your local machine’s NTP system clock is synchronized: sudo ntpdate pool.ntp.org (or check date/time settings on macOS/Windows)!
🏃 5. Shell Helpers: Running Commands Across All Workers
The scripts/helpers.sh file provides a wx() function that runs any CLI command in every worker directory — useful for bulk operations like regenerating types, running typecheck, or installing dependencies.
Installation
Usage
Filtering
Use WX_FILTER to target specific workers by glob pattern:
Custom Path
Set WX_WORKERS_DIR if your workers live elsewhere:
🕸️ 6. Codebase Dependency Graph
Hoox includes a function-level dependency graph extractor that maps all exported symbols, imports, calls, type references, and service bindings across the entire monorepo.
This runs scripts/extract-graph.ts (ts-morph) and scans 917 source files across all 14 workspaces. During extraction, a live progress bar shows each phase with elapsed time:
The 8 extraction phases (exports → imports → extends/implements → type refs → calls → service bindings → workspace deps → filtering) complete in ~20–25s on average.
Outputs
Quick Render
Use graph.json as AI/LLM context for codebase-aware queries, or paste
graph.dot into Edotor for instant browser
visualization without installing Graphviz.
🔗 Next Steps