Skip to main content

Going to production with Clerk Deploy

Category
Engineering
Published

Take a Clerk app to production with a single, resumable command, all from your terminal.

Clerk Deploy

Your app's at a point where it's almost ready to go live.

Users can sign up, sign in, and manage their account. Organization owners can create workspaces and invite members. Billing works as expected; your plans are set up, and your users can subscribe to them. It feels shippable.

Not yet, though.

You still need to set up a production instance, which involves a few steps spread across different pages and external services. The dashboard handles this well, and on a focused day, the whole thing can be done in under 30 minutes.

But what if the final stretch from 'almost ready' to 'ready' had fewer clicks and less context switching?

Our new CLI brings that flow directly to your terminal.

Meet clerk deploy.

A different kind of deploy

clerk deploy doesn't ship code. Your hosting platform still takes care of that. Instead, it's a helpful wizard that walks you through everything Clerk needs to take your app to production.

In an interactive terminal session, you get the wizard. Without one (or with the --mode agent flag), deploy instead returns a JSON snapshot of your deployment state so coding agents can check progress and suggest the next step. For agents, this command is purely informational and doesn't perform any changes.

If you need automated deployments for CI/CD pipelines or agent workflows, you can compose the same flow from a handful of lower-level Clerk commands. Stay tuned for a follow-up post.

Now let's see what the wizard can do.

Inside the wizard

Run clerk deploy from the root of your project:

clerk deploy

The process starts with a pre-flight pass over your linked app: it confirms the app is ready to deploy, identifies which OAuth providers need production credentials, and checks for any deployment already in progress.

The first time you run clerk deploy, the wizard walks through the steps below. If a production instance already exists but isn't fully configured, it resumes from where it left off.

Production domain

The wizard first asks for your production domain. After you confirm, it creates a fresh production instance in your Clerk account and registers your domain to it.

From this point on, your deployment is resumable. You can rerun clerk deploy to inspect the current state of your production instance and complete the remaining steps.

CNAME records

Next comes DNS. The wizard prints the CNAME records to add at your DNS provider. You don't have to wait for propagation to move on. The wizard verifies DNS at the end, after OAuth setup, so DNS can propagate in the background while you continue.

OAuth credentials

For each provider detected, you'll get the exact redirect URI to register with the provider, then be prompted for the Client ID and Client Secret. For Google, the wizard can also accept the OAuth credentials JSON file directly. For Apple, it reads the .p8 private key from a file path.

Verification

After OAuth, the wizard verifies DNS, SSL, and email DNS together. If propagation is still incomplete, rerun clerk deploy once your records are live, or run clerk deploy status to check at any time.

Production summary

After verification clears, the wizard prints a production summary with your live URL and production instance ID.

Ready to ship?

With clerk deploy, the CLI now covers Clerk's full arc from development to production. And while the dashboard is always there when you need it, that's one less side-quest pulling you out of flow. The gap between 'almost ready' and 'live' just got smaller.

So this is your nudge. If your app's been on localhost too long, what's stopping you from going to production? Make today the day.

Open a terminal and give it a try:

clerk deploy

Happy shipping!

Read the docs

Ready to get started?

Start building
Author
Nicolas Angelo

Share this article

Share to socials: