📦 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.

Per-module access

Developer tokens are scoped per package, with separate upload and publish permissions. Revoke in one call.

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.

External and contract developers

Issue a developer token scoped to one package, with separate upload and publish flags. Revoke in one call when the contract ends.

Per-module access control without giving repo permissions.

Multi-property distribution

Same widget across many sites or brands. Each site gets its own customer key. Update the widget once and every site picks it up.

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.