Prerequisites
Unkey installs most tools and dependencies automatically. The only required preinstalled dependencies are:- docker
- git
Configure Depot
Unkey uses Depot as the build runner for local development. To get your Depot token, sign in to Depot, then create a token. Name it something like<your-name>-local.
The Depot org settings page is only accessible to Depot org owners. If you are
not an owner, Depot might redirect you away from the settings page or block
access. Ask Andreas for the appropriate token or access path.
During bootstrap, paste that token when prompted or manually add it to
./dev/.env.depot.
Bootstrap
Clone the repository and install mise and other tools.Install and set up mise
You can set up mise manually or use the install script. It pins mise to a specific version and SHA.
Bootstrap local configuration
Run the bootstrap task to install the pinned toolchain, create local environment files, write your Depot credentials, and configure the GitHub app.
Use the token from Configure Depot when prompted.If GitHub rate limits
mise install, provide a GH_TOKEN when you rerun the task:mise run dashboard.
Otherwise continue for a full dev setup.
Run dev mode
Start the full development setup:- Tilt UI at
http://localhost:10350 - Various services port-forwarded
- Dashboard at
http://localhost:3000
Local HTTPS with Frontline (optional)
Set up local TLS for*.unkey.local:
- Configure local DNS:
- Start the minikube tunnel in another terminal:
- Open the local domain:
Stop the development environment
Environment configuration
Local authentication
Set local auth mode in your.env file:
Optional services
WorkOS authentication:web/apps/dashboard/.env. If any is missing the dashboard treats Stripe as
unconfigured and billing calls fail.
The product ID lists come pre-filled in .env.example (the shared sandbox
catalog), so you only add two values:
STRIPE_SECRET_KEY- a test-mode key (sk_test_...) from the shared sandbox.STRIPE_WEBHOOK_SECRET- from forwarding events to your local dashboard:
dev/.env.stripe. See Deploy Billing Push.
Feature flags
You don’t need Vercel Flags setup to run dashboard code that imports@/lib/flags. When FLAGS is missing, the dashboard uses the noop adapter and resolves each flag to its declared defaultValue.
If you’re adding flags, testing remote targeting rules, or using Vercel Toolbar overrides, ask Andreas for the dev values of FLAGS and FLAGS_SECRET. Add them to web/apps/dashboard/.env. They’re stable, so you set them once and forget. See Feature flags for the rest of the workflow.

