Dashboard
Dashboard
The dashboard is the manual, point-and-click way to run MinMaxKey. No terminal,
no API keys — just a small web UI at /admin on your server.
Log in with the password you set as MMK_ADMIN_PASSWORD when deploying.
Overview
The dashboard has two levels:
- Products (
/admin) — everything you sell, at a glance: policies, licenses issued, active licenses, bound devices. - Product page — one product in detail: its API key and public key, its policies, its licenses, and its webhook settings.
Your first license in three steps
- Create a product (dashboard homepage, "New product" panel) — name and
slug, e.g.
PixelForge Pro/pixelforge-pro. - Create a policy (product page, "New policy") — pick a kind
(
lifetime,subscription,floating,trial), set max seats (2 = two machines) and, for subscriptions/trials, the duration in days. - Issue a license (product page, "Issue license") — choose the policy, optionally the customer's email, and the license key appears right on the page (green flash message, top of the page).
Give the key to your customer. Done.
What else is on a product page
Product info panel — the api_key (for client apps and webhook
automation) and the public_key (embed the PEM in your app so it can verify
offline tokens). The public key is safe to share — it's the signing key's
public half.
Policies — every policy with its kind, seats, and duration; create new ones with the form.
Licenses — every issued key, its policy, status, seats in use, and each bound device (name, platform, last seen). Buttons:
- reset seats — frees every device binding in one click. This is the
"customer reinstalled Windows" button: their old machine's binding is gone,
the key is still active, and they can activate on their new machine right
away. Fires a
license.resetwebhook. - revoke — kills the license immediately. Existing offline tokens keep working until the client revalidates (that's inherent to offline licensing, see Offline tokens).
Webhooks — set your endpoint URL, copy the generated secret, and watch
recent deliveries (event, status, attempts, error). "Send test event" fires a
webhook.test so you can confirm the plumbing. Full details:
Webhooks.
Tips
- Revoking from the dashboard and revoking from the API is the same action —
both fire
license.revokedwebhooks. Same for reset seats (license.reset). - The dashboard is a management tool, not a customer portal. For now, the "customer reinstalled their OS" case is handled with the reset seats button (one click, from anywhere).
- Everything the dashboard does, the CLI can do — script the repetitive parts, click the rare parts.