Developer-first delivery
Web components, ES modules, plain JS bundles. Anything that builds to a directory with an entry file.
Framework-agnostic — Vite, esbuild, Rollup, tsc all work.
Packdog is a versioned package registry for web modules. Upload from CI, point named channels at the right version, roll back the moment something breaks — without touching your main deploy.
$ packdog upload
✓ 3 files, 45.2 KB
✓ Published to stage: 7c91a0f3-...
$ packdog publish
✓ Promoted to stable: 7c91a0f3-...
$ packdog rollback --channel=stable
✓ Rolled back to: 4b2d5e8c-... What you get
Ship to the live web without coupling module updates to your main deploy. Same model the platforms use for their own internals — now hosted, scoped, and metered.
Every upload becomes a permanent, hash-keyed version. Nothing overwritten, ever. CDN-cached forever by URL.
Point stable, beta, staging — any name — at any version. Promote and demote without redeploying anything.
Each channel has its own history chain. One call steps a channel back to the previous version, in milliseconds.
Customer admins issue scoped developer tokens themselves — per-package, with separate upload and publish flags. Onboard a contractor or revoke when a contract ends, no support ticket required.
Files served directly from Cloudflare's R2 with immutable URLs. Worker only handles metadata.
Every load is logged to Cloudflare Analytics Engine — queryable per customer and per package, ready for billing.
How it works
Build your module to dist/ and run packdog upload. The CLI creates an immutable version, auto-publishes to stage, and prints the version id.
Verify the new version against the stage channel. When happy, run packdog publish to point stable at it. Browser clients pick it up on the next load.
Each channel has its own history chain. packdog rollback --channel=stable steps one version back, atomically — no redeploy, no cache to bust.
Use cases
Web components, ES modules, plain JS bundles. Anything that builds to a directory with an entry file.
Framework-agnostic — Vite, esbuild, Rollup, tsc all work.
Issue scoped developer tokens yourself — staging-only or full publish — and revoke them the moment a contract ends. Manage every contractor from your own CLI, no support ticket needed.
Per-module access without ever sharing your main repo.
Same widget across many sites or brands. Update once and every site picks it up on the next load — no redeploys, no cache wars.
Independent rollback per channel keeps brands isolated.
Packdog is invitation-only at the moment. If you're shipping web modules with a team and the loop above sounds familiar, get in touch — onboarding takes about ten minutes.