Static Sites
Best for: React, Vue, Next.js static exports, documentation, landing pages
Features:
- Global CDN distribution
- Instant cache invalidation
- Automatic SSL certificates
- Fixed profile pricing
varitykit app deployDeploy your application to Varity from the Dashboard, CLI, or MCP server.
From the Dashboard, choose a GitHub repository, add environment variables, review the fixed monthly price for the reserved hardware, and deploy.
Varity accepts three kinds of input, from the CLI, the Developer Portal, or the MCP server in your AI coding tool:
| Input | How | Best for |
|---|---|---|
| Your project / GitHub repo | varitykit app deploy (this page) | Apps in a supported framework with automatic detection and builds |
| A Docker image | varitykit app deploy --image <ref>. See Deploy a Docker Image | Anything already containerized, any language |
| A template | The portal gallery. See agent templates | One-click AI agent and tool deployments |
The rest of this page covers the first path: deploying your own project.
Install the CLI
pipx install varitykitBuild your project
npm run buildDeploy
varitykit app deployYour app is live!
Varity will output your live URL:
✓ Deployed successfully!✓ URL: https://your-app.varity.app✓ Build time: 1m 23s✓ Status: LiveWhen you run varitykit app deploy:
npm run build)https://varity.app/<name>/; dynamic apps use https://<name>.varity.app/All of this happens automatically.
Choose the right hosting for your application type:
Static Sites
Best for: React, Vue, Next.js static exports, documentation, landing pages
Features:
varitykit app deployDynamic Apps
Best for: Full-stack apps, APIs, real-time applications, databases
Features:
varitykit app deploy --hosting dynamicCredentials are managed automatically by Varity. Optionally set your app ID:
# Optional: Your Varity App IDNEXT_PUBLIC_VARITY_APP_ID=<your-app-id>See Environment Variables for the complete list and Managed Credentials for how credential auto-provision works.
Always test your build works locally:
npm run buildnpm run startVisit http://localhost:3000 and verify everything works.
View your deployment history:
varitykit app listOutput:
ID Status URL Deployeddeploy-1737491000 live https://your-app.varity.app 2 hours agodeploy-1737484800 archived https://your-app-v2.varity.app 1 day agodeploy-1737398400 archived https://your-app-v1.varity.app 2 days agoTo recover after a bad deploy, redeploy a known-good version of your app. Check out the working commit and run varitykit app deploy again under the same --name. The deployment at that URL is replaced with the version you just built.
Check the details of a specific deployment:
varitykit app info deploy-1737491000View overall deployment status:
varitykit app statusEvery deployment gets a public URL. URL format depends on hosting type:
varitykit app deploy --name my-app# Static hosting → https://varity.app/my-app/# Dynamic hosting → https://my-app.varity.app/See App URLs & Subdomains for naming rules and the current status of bring-your-own domains.
Verify your build works locally:
npm run buildCheck the build output directory exists:
.next/ or out/dist/ or build/dist/Credentials are auto-provided. If you see this error, run varitykit doctor to check your setup.
Check your internet connection:
varitykit doctorIf issues persist, you can preview what would deploy without deploying:
varitykit app deploy --dry-run| Option | Default | Description |
|---|---|---|
--hosting | auto | Hosting type: auto, static, or dynamic (auto picks based on your project) |
--name | from package.json | App name (and URL) for this deployment |
--path | . | Project directory |
--mode | auto | Override the detected build/run mode |
--skip-build | off | Skip the build step (deploy a pre-built output) |
--repo-url | None | Deploy directly from a GitHub repo URL instead of a local path |
--dry-run | off | Simulate the deploy: show what would deploy without deploying (not supported with --image) |
Instead of a project directory, you can deploy an existing image. See Deploy a Docker Image for the full flow.
| Option | Default | Description |
|---|---|---|
--image | None | Image reference to deploy as-is (e.g. ghcr.io/acme/api:1.4.2) |
--port | 80 | Container port your app listens on |
--image-registry / --image-username / --image-password | None | Credentials for a private registry |