| name | pinme |
| description | Deploy static websites to IPFS with a single command using PinMe CLI.
Use when: (1) User wants to deploy a built frontend project, (2) Need to upload static files (dist/build/out/public) to IPFS, (3) Requesting preview URL for a deployed site.
Supports: Vite, React, Vue, Next.js, Angular, Create React App, and static sites.
Output: Preview URL (https://pinme.eth.limo/#/preview/*) after successful upload.
|
PinMe - Zero-Config Frontend Deployment
Deploy static websites to IPFS network with a single command. No servers, no accounts, no setup.
When to Use
Use this skill when:
- User asks to "deploy", "upload", or "publish" a frontend project
- User wants to get a preview URL for their built site
- User mentions PinMe or IPFS deployment
- Project has built static files (dist/, build/, out/, public/)
Quick Start
npm install -g pinme
pinme upload dist
Core Workflow
1. Check Prerequisites
node --version
pinme --version
2. Identify Static Directory
PinMe auto-detects directories in priority order:
| Directory | Framework/Tool |
|---|
dist/ | Vite, Vue CLI, Angular |
build/ | Create React App |
out/ | Next.js (static export) |
public/ | Static sites |
Validation rules:
- ✅ Folder must exist
- ✅ Must contain
index.html
- ✅ Must have actual static files (CSS, JS, images)
3. Execute Deployment
pinme upload dist
pinme upload build
pinme upload dist --domain my-site
4. Return Result
Return ONLY the preview URL: https://pinme.eth.limo/#/preview/*
Commands Reference
| Command | Description |
|---|
pinme upload <dir> | Upload static files to IPFS |
pinme upload <dir> --domain <name> | Upload + bind domain |
pinme import <car-file> | Import CAR files |
pinme export <CID> | Export IPFS content as CAR |
pinme list | Show upload history |
pinme rm <hash> | Remove files from IPFS |
pinme set-appkey | Set AppKey for authentication |
pinme my-domains | List owned domains |
pinme --version | Show version |
Upload Limits
| Type | Free Plan |
|---|
| Single file | 200MB |
| Total directory | 1GB |
Error Handling
| Error | Solution |
|---|
| Node.js version too low | Upgrade to 16.13.0+ |
| Command not found | Run npm install -g pinme |
| Folder does not exist | Check path, use ls |
| Upload failed | Check network, retry |
| Authentication failed | Run pinme set-appkey |
AI Execution Protocol
For programmatic deployment:
- Check environment:
node --version (needs >=16.13.0)
- Install if needed:
npm install -g pinme
- Detect directory: Check
dist/, build/, out/, public/
- Validate: Must contain
index.html
- Execute:
pinme upload <directory>
- Return: Only the preview URL
Prohibited operations:
- ❌ Upload node_modules, .env, .git
- ❌ Upload source directories (src/)
- ❌ Upload config files (package.json, etc.)
- ❌ Upload non-existent/empty folders
GitHub Actions Integration
Example workflow:
name: Deploy to PinMe
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '18'
- run: npm ci && npm run build
- run: npm install -g pinme
- run: pinme set-appkey "${{ secrets.PINME_APPKEY }}"
- run: pinme upload dist --domain "${{ secrets.DOMAIN }}"
Machine-Readable Config
{
"tool": "pinme",
"requirements": {
"node_version": ">=16.13.0"
},
"install": "npm install -g pinme",
"upload": "pinme upload {{directory}}",
"upload_with_domain": "pinme upload {{directory}} --domain {{domain}}",
"validDirectories": ["dist", "build", "out", "public"],
"requiredFiles": ["index.html"],
"excludePatterns": ["node_modules", ".env", ".git", "src"],
"limits":
Resources