PinMe is a zero-config deployment CLI focused on one-command creation and deployment for full-stack projects. It lets you quickly set up and launch a complete project with an integrated frontend, Worker backend, and database, without tedious configuration.
FAQ
pinme is a Claude Code plugin with 7 hand-picked skills for deployment work, indexed on Flowy. Install it with the command on its page. It includes pinme-auth, pinme-email, pinme-llm. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
$ npx -y skills add glitternetwork/pinme --agent claude-code
Repo: glitternetwork/pinme
PinMe is a zero-config deployment CLI focused on one-command creation and deployment for full-stack projects.
It lets you quickly set up and launch a complete project with an integrated frontend, Worker backend, and database, without tedious configuration. PinMe is built to make full-stack delivery much simpler and significantly improve development efficiency.
Website: https://pinme.eth.limo/
PinMe Skill
Install the PinMe skill before using PinMe in agent workflows:
npx skills add glitternetwork/pinme
>= 16.13.0npm install -g pinme
pinme login
pinme create my-app
cd my-app
pinme save
What this workflow gives you:
pinme.tomlpinme update-worker
pinme update-db
pinme update-web
pinme login
pinme upload dist
Common build directories are dist, build, out, and public.
Prefer the PinMe project workflow when the user wants a frontend plus backend plus database, or when the repo already contains pinme.toml.
Use this flow when the user wants a Worker app, database migrations, or ongoing project updates.
node --version
npm install -g pinme
pinme login
pinme create <name>pinme savepinme update-workerpinme update-dbpinme update-webIf the repo contains pinme.toml, run project commands from that directory.
Return the final project URL printed by the CLI for frontend deploys. For Worker-only or DB-only updates, return the relevant success result instead of fabricating a URL.
Use this only when the task is just "publish the built frontend" and there is no PinMe project workflow involved.
pinme login
Or for automation:
pinme set-appkey <AppKey>
dist/build/out/public/Verify the directory exists and contains built assets such as index.html.
Upload it:
pinme upload <folder>
src/.node_modules, .git, or .env.update-* commands outside a PinMe project root with pinme.toml.Install from npm:
npm install -g pinme
Verify installation:
pinme --version
create sets uppinme create <name> does more than scaffold files. The command:
pinme.tomlAfter creation, the CLI prints the project management URL and suggests pinme save for the next deploy.
pinme login
pinme create my-app
If the target directory already exists, the CLI asks before overwriting it unless --force is used.
Run this from the project root that contains pinme.toml:
pinme save
pinme save --domain my-site
pinme save --domain example.com
save performs the full deploy path:
npm run build:workerdb/npm run build:frontendfrontend/distUse targeted commands when only one part changed:
pinme update-worker
pinme update-db
pinme update-web
What each command expects:
update-worker: builds and uploads Worker code from the current PinMe projectupdate-db: uploads .sql files from db/update-web: builds and uploads frontend/distpinme delete
pinme delete my-app
pinme delete my-app --force
This deletes the platform-side Worker, domain binding, and D1 database. Local files remain unchanged.
pinme login
pinme login --env test
pinme set-appkey
pinme set-appkey <AppKey>
pinme show-appkey
pinme appkey
pinme logout
Notes:
pinme login is the recommended path for project commands.set-appkey is the alternative authentication method for CLI and automation usage.pinme my-domains
pinme domain
pinme wallet
pinme wallet-balance
pinme balance
pinme list
pinme ls
pinme list -l 5
pinme list -c
These commands are useful when you already have artifacts and do not need the full Worker project flow.
pinme upload
pinme upload ./dist
pinme upload ./dist --domain my-site
pinme upload ./dist --domain example.com
pinme upload ./dist --domain my-site --dns
Domain handling:
--dns forces DNS modepinme bind ./dist --domain my-site
pinme bind ./dist --domain example.com
bind requires wallet balance.
pinme import
pinme import ./site.car
pinme import ./site.car --domain my-site
pinme export <cid>
pinme export <cid> --output ./exports
pinme rm
pinme rm <value>
| Command | What it does |
|---|---|
pinme create [name] | Create a new PinMe Worker project from the official template |
pinme save [--domain <name>] | Deploy the current PinMe project: Worker, SQL, and frontend |
pinme update-worker | Build and upload Worker code only |
pinme update-db | Upload SQL migrations from db/ only |
pinme update-web | Build and upload the frontend only |
pinme delete [name] [--force] | Delete a platform project |
pinme upload [path] | Upload a file or directory to IPFS |
pinme bind [path] --domain <name> | Upload and bind a domain |
pinme import [path] | Import a CAR file |
pinme export <cid> [--output <dir>] | Export IPFS content as a CAR file |
pinme rm [value] | Remove uploaded content |
pinme login [--env test|prod] | Login via browser |
pinme set-appkey [AppKey] | Set authentication with an AppKey |
pinme show-appkey / pinme appkey | Show masked AppKey info |
pinme my-domains / pinme domain | List domains owned by the current account |
pinme wallet / pinme wallet-balance / pinme balance | Show current wallet balance |
pinme list / pinme ls | Show upload history |
pinme help | Show CLI help |
PinMe uses Vitest for unit/integration tests, real dist/index.js CLI smoke tests, npm package checks, and Stryker for slower mutation testing.
npm run test # Unit and integration tests
npm run test:coverage # Coverage gate for core modules
npm run test:cli # Real CLI black-box tests
npm run test:pack # npm pack/package-shape checks
npm run verify # Full pull-request gate
npm run test:mutation # Slow mutation tests for manual/nightly runs
Tests must not call live PinMe/IPFS/CAR services. Use nock, local loopback servers, fixtures, and temporary HOME directories for API and CLI scenarios.
For the full testing policy, layout, and mutation-testing guidance, see TESTING.md.
100MB500MBupdate-db enforces a total SQL payload limit of 10MB per runupload, import, and project commands require authenticationsave, update-worker, update-db, and update-web expect to run from a PinMe project root with pinme.tomlThis repo includes example projects and docs:
.env.example
.eslintrc.cjs
.github/
workflows/
ci.yml
.gitignore
.npmignore
.prettierignore
.prettierrc.js
AGENTS.md
bin/
bind.ts
create.ts
delete.ts
exportCar.ts
importCar.ts
index.ts
login.ts
logout.ts
my-domains.ts
remove.ts
save.ts
services/
uploadService.ts
set-appkey.ts
show-appkey.ts
updateDb.ts
updateWeb.ts
updateWorker.ts
upload.ts
utils/
apiClient.ts
auth.ts
checkNodeVersion.ts
checkPath.ts
cliError.ts
config.ts
decrypt.ts
domainValidator.ts
downloadFile.ts
getDeviceId.ts
help.ts
history.ts
installProjectDependencies.ts
pinmeApi.ts
prebuiltDistConfig.ts
removeFromIpfs.ts
tracker.ts
trackerEvents.ts
uploadLimits.ts
uploadToIpfs.ts
uploadToIpfsSplit.ts
urlDisplay.ts
webLogin.ts
workerMetadata.ts
wallet-balance.ts
build-env.js
build.js
CHANGELOG.md
CLAUDE.md
example/
docs/
_navbar.md
_sidebar.md
.nojekyll
contact/
_sidebar.md
index.md
test.md
guide/
config.md
installation.md
index.html
quickstart.md
README.md
pinme-blog/
.hugo_build.lock
archetypes/
default.md
config.toml
content/
posts/
ecommerce-intro.md
hugo.toml
public/
404.html
assets/
css/
stylesheet.f49d66caae9ea0fd43f21f29e71a8d3e284517ed770f2aa86fa012953ad3c9ef.css
categories/
index.html
index.xml
index.html
index.xml
page/
1/
index.html
posts/
ecommerce-intro/
index.html
index.html
index.xml
page/
1/
index.html
sitemap.xml
tags/
index.html
index.xml
README.md
supabase/
.env.example
.gitignore
eslint.config.js
index.html
package.json
pnpm-lock.yaml
public/
vite.svg
README.md
src/
App.css
App.tsx
assets/
react.svg
components/
TodoList.css
TodoList.tsx
index.css
main.tsx
pages/
Home.css
Home.tsx
utils/
supabase.ts
vite-env.d.ts
tsconfig.app.json
tsconfig.json
tsconfig.node.json
vite.config.ts
LICENSE
llms.txt.md
package-lock.json
package.json
pnpm-lock.yaml
pnpm-workspace.yaml
README.md
skills/
pinme/
pinme-auth/
SKILL.md
pinme-email/
SKILL.md
pinme-llm/
SKILL.md
pinme-r2/
agents/
openai.yaml
SKILL.md
pinme-share/
SKILL.md
pinme-uniwebpay/
SKILL.md
SKILL.md
stryker.config.json
test/
cli/
basic.test.ts
commands.test.ts
success.test.ts
fixtures/
project/
db/
001_init.sql
dist/
index.html
pinme.toml
site/
index.html
helpers/
cliRunner.ts
localHttpServer.ts
integration/
apiClient.test.ts
pinmeApi.test.ts
login-tracking-source.test.mjs
pack/
npmPack.test.ts
setup/
nock.ts
webcrypto.cjs
unit/
buildEnv.test.ts
cliError.test.ts
config.test.ts
domainValidator.test.ts
history.test.ts
uploadLimits.test.ts
uploadService.test.ts
webLogin.test.ts
TESTING.md
tests/
background-install-status.test.mjs
download-file.test.mjs
prebuilt-dist-config.test.mjs
tracker-error-reason.test.mjs
worker-metadata.test.mjs
tsconfig.json
tsconfig.node.json
tsconfig.test.json
vitest.config.ts
vitest.mutation.config.tsΒ© 2026 Flowy Β· Free and open source
Built for Claude Code Β· Not affiliated with Anthropic