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
✔ Deployed

Live 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

CommandDescription
m1nt loginLog in or create an account
m1nt logoutLog out
m1nt whoamiShow 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 rollbackRevert to previous deployment
m1nt domains add <domain>Attach a custom domain
m1nt gate --price <usdc>Enable gating on current project
m1nt ungateDisable gating on current project

Flags

FlagUsed withDescription
--name <subdomain>deployRequest a specific subdomain (first deploy only)
--gatedeployEnable x402 payment gating after deploy
--price <usdc>deploy, gatePrice 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

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:

TypeNameTarget
CNAMEyourdomain.comyour-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

  1. Add a wallet address in your dashboard at dashboard.m1nt.xyz. You'll sign a message to verify ownership.
  2. Enable gating via CLI or dashboard:
    m1nt gate --price 0.01

    Or toggle it on per-domain in the dashboard.

Options

SettingWhereDetails
PriceCLI or dashboard0.001 – 1000 USDC
Session durationDashboardDefault 24 hours. Set to 0 for pay-per-visit.

How it works

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

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
Important: m1nt login always requires human interaction — it opens a browser. Never attempt to automate the login step. Surface it to the user instead.