Migrate from Vercel
Bring Vercel projects over with one command.
clouzark import vercel reads your Vercel projects and recreates them on Clouzark: the GitHub repo, build settings, environment variables, custom domains, and cron jobs. It runs on your machine: your Vercel token is only sent to Vercel's API.
export VERCEL_TOKEN='<token from vercel.com/account/tokens>'
clouzark import vercel --dry-run # pick projects, show the plan, change nothing
clouzark import vercel # pick and import
clouzark import vercel --team arius --project web --project admin -yThe Clouzark GitHub app needs access to each project's repo. If it doesn't have it yet, the import says so; install it from New Project, then run the command again.
What's copied
| From Vercel | To Clouzark |
|---|---|
| GitHub repo, root directory, production branch | A new hosting project building the same repo |
| Framework preset | Next.js, React (Vite, Create React App), static, or Node (Express, Hono, Fastify, NestJS) |
| Install, build, and output commands | The same commands |
| Environment variables for production and preview | Environment variables, saved before the first build |
| Custom domains | Added to the project, with the DNS records to point at Clouzark when you're ready to switch |
crons in vercel.json | Cron jobs |
The first production build starts as soon as each project is created. Your Vercel deployment keeps running until you move the DNS, so you can check the Clouzark build first.
What isn't
- Projects not connected to a GitHub repo, and frameworks Clouzark doesn't build yet (for example SvelteKit, Nuxt, Remix, Astro with SSR). The plan lists them.
- Sensitive variables, whose values Vercel never reveals: add them with
clouzark env add. - Development-only variables and ones scoped to a single preview branch.
- Domains that redirect or are assigned to a branch.
- Vercel-only services such as Edge Config, KV, Blob, and Vercel Postgres. To move a Supabase database too, see Migrate from Supabase.
Cron endpoints should check Authorization: Bearer $CRON_SECRET; set CRON_SECRET with clouzark env add after the import.