| Name | Last commit date | |
|---|---|---|
| .. | ||
| public | 4 months ago | |
| src | 2 months ago | |
| tests | 2 months ago | |
| .gitignore | 4 months ago | |
| .prettierrc.json | 2 months ago | |
| package-lock.json | 2 months ago | |
| package.json | 2 months ago | |
| README.md | 2 months ago | |
| shims.d.ts | 4 months ago | |
| tsconfig.json | 2 months ago | |
| wrangler.jsonc | 2 months ago | |
site/ — tx9.col-agents.com
Cloudflare Worker serving tx9's public face (docs/tx9-cli-design.md
decision 10): the homepage, the curl | sh installer, and release binary
downloads out of an R2 bucket.
URL surface
| Route | Serves |
|---|---|
/ |
public/index.html homepage |
/install (and /install.sh) |
scripts/install.sh, imported at build time via the src/install.txt symlink — no copy step, can't drift. (The .txt alias is load-bearing: Cloudflare's API WAF rejects worker uploads containing a *.sh module with shell content.) |
/releases/latest |
current version as bare text (e.g. 0.1.0) |
/releases/latest/<asset> |
302 to the versioned path |
/releases/<version>/<asset> |
binary / checksums.txt from R2 |
R2 bucket layout (tx9-releases)
latest.txt "0.1.0\n" — flipped last during publish
0.1.0/tx9_linux_amd64
0.1.0/tx9_linux_arm64
0.1.0/tx9_darwin_amd64
0.1.0/tx9_darwin_arm64
0.1.0/checksums.txt
.depot/workflows/release.yml writes this on every vX.Y.Z tag push, after
attaching the same files to the GitHub release. The installer and
tx9 upgrade consume the public R2 routes. GitHub retains the release archive.
One-time setup
npx wrangler r2 bucket create tx9-releases- Add Depot CI secrets for the release workflow (deploys run on Depot;
these are
depot ci secrets, not GitHub repo secrets):CLOUDFLARE_API_TOKEN(Workers R2 Storage: edit) andCLOUDFLARE_ACCOUNT_ID. - The
routesblock inwrangler.jsoncbindstx9.col-agents.com(interim hostname on the col-agents.com Cloudflare zone; swap the pattern when tx9 gets its own domain).
Validate
Use Node.js 22.18 or newer. The tests load the actual Worker through Node's TypeScript support and use an in-memory R2 stub; they do not start a server, build a bundle, or contact Cloudflare.
cd site
npm ci --ignore-scripts
npm run check # wrangler types + tsc --noEmit
npm run format:check
npm run lint
npm test
npm audit --audit-level=high
Run npm run format to apply formatting. CI uses the same locked tooling
for checks and release uploads, without package install scripts.
Develop / deploy
npm run dev # local worker with a local R2 stub
npm run deploy
To exercise the release routes locally, seed the dev R2 stub:
printf '0.0.1\n' > /tmp/latest.txt
npx wrangler r2 object put tx9-releases/latest.txt --file /tmp/latest.txt --local