Sep 27, 2026
Ship Frontend, Worker, and Database From One CLI With pinme
A zero-config deployment CLI that scaffolds a full-stack project and pushes frontend, Worker backend, and database in one flow — plus a static-upload path for plain builds.
Deploying a small full-stack project usually means stitching together a host, a serverless function provider, and a database, then writing the glue config for each. pinme is a zero-config deployment CLI that bundles the three layers — frontend, Worker backend, and database — behind a handful of commands, and it ships an official skill so coding agents can drive the whole flow for you.
Why This Skill Matters
The project workflow covers the case where you want more than a static page: pinme create provisions platform-side Worker and database resources, downloads the official project template, writes config into pinme.toml, and attempts a first deploy. After that, pinme save deploys every layer, and targeted commands rebuild only the piece you changed. A static-upload path covers the other case — publishing an already-built dist/ folder without the project scaffolding.
The README also documents an agent protocol with guardrails: the skill tells your coding agent which command fits which task, and what never to upload.
Installation
Install the CLI (Node.js 16.13.0 or newer):
npm install -g pinme
For agent workflows, install the PinMe skill first, as the README instructs:
npx skills add glitternetwork/pinme
Real Workflow: Launch and Iterate on a Full-Stack Project
- Authenticate, scaffold, and deploy:
npm install -g pinme
pinme login
pinme create my-app
cd my-app
pinme save
createdoes more than scaffold files: it creates the platform project resources first, installs workspace dependencies, builds the Worker, uploads Worker code and SQL files, then builds the frontend and attempts an initial upload. The CLI prints the project management URL.- Change only the frontend? Skip the full deploy:
pinme update-web
The siblings are update-worker for Worker code and update-db for SQL migrations in db/.
4. Bind a domain when saving:
pinme save --domain my-site
- For a plain static build, skip the project flow entirely:
pinme login, thenpinme upload dist. The README's static-upload flow checksdist/,build/,out/, thenpublic/, and it documents the domain rule for uploads: a name containing a dot is treated as a DNS domain, while a dot-less name becomes a PinMe subdomain.
Tips
- Know the documented limits before you upload: 100MB per single file and 500MB per directory upload are the defaults (both overridable via environment variables), while
update-dbenforces a hard 10MB total SQL payload per run. - Automation can authenticate with
pinme set-appkey <AppKey>instead of the interactive browser login. - Domain binding requires wallet balance — check
pinme wallet-balancefirst. - The agent guardrails in the README are worth copying into your own habits: never upload source folders like
src/, and never uploadnode_modules,.git, or.env. pinme delete my-appremoves the platform-side Worker, domain binding, and D1 database; your local files stay untouched.
When Not to Use This
The project template is the documented path for backend hosting — the README's guardrails explicitly tell agents not to claim backend hosting outside that flow. If you already run on a mainstream PaaS, or just want an IPFS-side upload of static files (which the CLI also does, including CAR import/export), weigh that against setting up the PinMe project structure.
See the leaderboard for more skills.