📦 Packdog
Live on Cloudflare's edge — global by default

Ship modules, not deploys.

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.

terminal
$ 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

A registry built for runtime delivery.

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.

Immutable versions

Every upload becomes a permanent, hash-keyed version. Nothing overwritten, ever. CDN-cached forever by URL.

Named channels

Point stable, beta, staging — any name — at any version. Promote and demote without redeploying anything.

Instant rollback

Each channel has its own history chain. One call steps a channel back to the previous version, in milliseconds.

Self-service developer access

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.

Edge-served

Files served directly from Cloudflare's R2 with immutable URLs. Worker only handles metadata.

Usage metering

Every load is logged to Cloudflare Analytics Engine — queryable per customer and per package, ready for billing.

How it works

Three commands. That's the whole loop.

  1. 01

    Upload

    Build your module to dist/ and run packdog upload. The CLI creates an immutable version, auto-publishes to stage, and prints the version id.

  2. 02

    Test on stage, promote to stable

    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.

  3. 03

    Roll back instantly if needed

    Each channel has its own history chain. packdog rollback --channel=stable steps one version back, atomically — no redeploy, no cache to bust.

Use cases

Made for teams that ship code separately from their main app.

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.

Agencies and outsourced developers

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.

Multi-property distribution

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.

Get a token, ship a module.

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.