Getting started
Install
npm install -g m1nt
Login
m1nt login
Opens your browser at auth.m1nt.xyz — create an account or log in with an existing one.
Deploy a static site
m1nt deploy ./my-site
Any directory with an index.html works. No build step required.
Deploy a Next.js app
m1nt deploy ./my-app
Requires output: 'export' in next.config.js. See the Next.js section for details.
Your site is live
m1nt deploy ./my-site --name cool-project
Detected framework: static ✔ Packaged ✔ DeployedLive at: https://cool-project.m1nt.xyz
Re-deploy the same directory and it updates in place. A m1nt.json file tracks the link between your directory and the live URL.
CLI reference
| Command | Description |
|---|---|
m1nt login | Log in or create an account |
m1nt logout | Log out |
m1nt whoami | Show logged-in email |
m1nt deploy [dir] | Deploy directory to production |
m1nt deploy [dir] --name <sub> | Deploy with a specific subdomain |
m1nt deploy [dir] --gate --price <usdc> | Deploy and enable x402 gating |
m1nt rollback | Revert to previous deployment |
m1nt domains add <domain> | Attach a custom domain |
m1nt gate --price <usdc> | Enable gating on current project |
m1nt ungate | Disable gating on current project |
Flags
| Flag | Used with | Description |
|---|---|---|
--name <subdomain> | deploy | Request a specific subdomain (first deploy only) |
--gate | deploy | Enable x402 payment gating after deploy |
--price <usdc> | deploy, gate | Price in USDC (0.001 – 1000) |
Next.js
m1nt supports Next.js apps in static export mode. The CLI detects Next.js automatically, runs next build, and uploads the out/ directory.
Requirements
Add output: 'export' to your next.config.js:
const nextConfig = { output: 'export' }
module.exports = nextConfig
Then deploy as normal:
m1nt deploy .
Limitations in v1
- No server-side rendering (
getServerSideProps) - No API routes
- No Next.js image optimization — use standard
<img>tags - No middleware
All data fetching must happen client-side (e.g. useEffect + fetch). Mark pages as 'use client' components.
Custom domains
Attach your own domain to a deployment:
m1nt domains add yourdomain.com
Then add a CNAME record in your DNS provider:
| Type | Name | Target |
|---|---|---|
| CNAME | yourdomain.com | your-subdomain.m1nt.xyz |
DNS changes can take up to 48 hours to propagate. Custom domains are shown with a CUSTOM badge in your dashboard.
Gating (x402)
Gate your site behind a USDC micropayment using the x402 protocol. Visitors pay once and get a time-limited session.
Setup
- Add a wallet address in your dashboard at dashboard.m1nt.xyz. You'll sign a message to verify ownership.
- Enable gating via CLI or dashboard:
m1nt gate --price 0.01Or toggle it on per-domain in the dashboard.
Options
| Setting | Where | Details |
|---|---|---|
| Price | CLI or dashboard | 0.001 – 1000 USDC |
| Session duration | Dashboard | Default 24 hours. Set to 0 for pay-per-visit. |
How it works
- Payments go directly to your wallet on Base.
- No m1nt fees in v1.
- For agents and x402-aware clients, the server returns machine-readable
402headers with a base64-encodedX-PAYMENT-REQUIREDpayload. - Human visitors see a styled payment UI page with a "Pay with USDC" button.
- After payment, a signed session cookie grants access for the configured duration.
Disable gating
m1nt ungate
Testnet
By default the router runs on Base Sepolia (testnet). Payments use test USDC. Get test tokens from faucet.circle.com.
To switch to mainnet, set NETWORK = "mainnet" in the router's wrangler.toml.
Dashboard
Manage your deployments at dashboard.m1nt.xyz.
Features
- View all deployed domains
- See framework (Static / Next.js) and deploy time
- Copy URL, rollback to previous deployment
- Enable / disable x402 gating per domain
- Set price and session duration per domain
- Set and verify your wallet address for payments
The dashboard itself is a Next.js static export deployed on m1nt. You log in with the same credentials as the CLI.
SKILL.md (for agents)
m1nt is designed to be used by AI agents as well as humans. The full agent skill spec is in the repo at skills/deploy/SKILL.md.
Quick reference
Check if logged in:
m1nt whoami
Deploy a site:
m1nt deploy ./path --name my-site
Deploy with gating:
m1nt deploy ./path --name my-site --gate --price 0.10
Extract the URL programmatically:
url=$(m1nt deploy ./site 2>&1 | grep -E "Live at:|Updated:" | awk '{print $NF}')
Rollback (pass y to confirm):
echo 'y' | m1nt rollback
m1nt login always requires human interaction — it opens a browser. Never attempt to automate the login step. Surface it to the user instead.