Get Started
Quickstart with ionctl
Local Ionize stack in one command
ionctl is the local-development CLI. One command starts every Ionize service in the correct order, runs migrations, seeds an admin identity, and prints access URLs.
Run it
npx @nannier/ionctl deployThat's the whole command. It will:
- Detect and install dependencies, Podman,
podman-compose, andkubectlvia Homebrew on macOS if not present. (On Linux, install Podman yourself before running.) - Initialize and start the Podman machine if one isn't running.
- Build dev images for Dashboard, Auth, and Site if they aren't cached.
- Start services in dependency order, Postgres → Kratos/Hydra migrations → Ory services → apps → seed.
- Verify health of every service.
- Print access URLs and test credentials.
End-to-end, on a warm cache, this takes about 90 seconds.
What you get
Eighteen running containers, exposed at:
| URL | Service |
|---|---|
| http://localhost:2000 | Site (this docs page, brochure, OAuth2 playground) |
| http://localhost:3000 | Auth CIAM (customer login UI) |
| http://localhost:3001 | Dashboard CIAM (customer admin dashboard) |
| http://localhost:4000 | Auth IAM (employee login UI) |
| http://localhost:4001 | Dashboard IAM (employee admin dashboard) |
| http://localhost:5433 | pgAdmin (SSO via IAM) |
| http://localhost:5434 | MailSlurper (captured outbound email) |
See Access URLs and credentials for the full list including admin/public API ports.
Tearing down
npx @nannier/ionctl destroyStops every container, removes volumes, and removes the dev images. The Podman machine itself is left running.
What ionctl deploy doesn't do
- It does not deploy to production. For production, use Deploy.
- It does not configure email delivery. Outbound emails are captured by MailSlurper at http://localhost:5434.
- It does not enable captcha. Turnstile is disabled in dev.
Where next
- Access URLs and credentials, log into Dashboard.
- First login, walk through a real login flow.
- Quickstart with podman compose, what
ionctl deployactually does, expanded.