Get started
Install the nesly CLI, deploy your first project and put it on your own domain.
1. Install the CLI
macOS and Linux, with Homebrew:
brew install neslyhq/tap/nesly Or download a release binary from GitHub releases and put it on your PATH.
Check it:
nesly --version 2. Sign in
nesly login
The CLI prints a URL and a code; approve it in the browser. The token is stored in your user config directory,
and nesly whoami shows who you are signed in as.
Don't have an account yet? Create one at console.nesly.net.
3. Deploy
From your project directory:
cd my-app
nesly deploy --yes
The first run creates a project named after the directory, links this working copy to it
(.nesly/project.json), builds your code and prints the live URL.
After that, nesly deploy is enough.
What gets built:
- A Dockerfile in the project root wins — we build exactly what it says.
- A frontend (Vite, React, Astro, SvelteKit, Angular, Next.js…) is installed with your lockfile's package manager, built, and served as static files.
- A static site generator outside the Node world (Hugo, Jekyll, MkDocs) is built with its own toolchain and served as static files.
- Otherwise the stack is detected automatically (Node.js, Python, Go, .NET, Ruby, PHP, Java…) and run as a container.
- A directory of static files with no server entry point is served as it is.
Nothing to configure for the common cases. When you need to say it yourself — a monorepo, a custom build command, a different output directory — see builds.
Your app must listen on the port given in PORT and bind
0.0.0.0, not localhost.
4. Environment variables
nesly env set API_KEY=... STRIPE_KEY=...
nesly env ls
nesly env rm API_KEY Changes apply to the next deployment — running instances are never mutated in place. Deploy again to pick them up.
.env files are never uploaded, and neither is anything your .gitignore excludes.
Values are encrypted before they are written down (AES-256-GCM), and only ever decrypted to hand to your build and your running app. A viewer on your team can see that a variable exists, never what is in it.
5. Add a database
nesly addon add postgres
nesly addon add mssql
You get your own database and user; DATABASE_URL is
injected into the project. No other customer can reach it. Deploy again so your app sees the variable.
mssql (SQL Server Express, 10 GB per database) also injects
ConnectionStrings__Default —
a .NET app reads it with GetConnectionString("Default"),
no configuration code at all.
6. Your own domain
nesly domain add app.example.com
nesly domain verify app.example.com
The first command prints the DNS records to create (a CNAME and a
TXT proving you own the name). Create them at your DNS provider, then verify.
HTTPS is issued and renewed automatically; the project keeps its .nesly.net address too.
A root domain (example.com, with nothing in front of it)
works the same way, but the record is different: DNS does not allow a
CNAME at the root of a zone, so the command prints
A records instead. Add
www.example.com as a second domain if you want both to work.
7. When something goes wrong
nesly ls # deployments, newest first
nesly inspect dep_… # one deployment in detail
nesly logs --follow # build and runtime output
nesly rollback dep_… # put a previous deployment back A rollback is instant: it repoints traffic at a deployment that already exists, without rebuilding anything.
Limits worth knowing
- Source uploads are capped at 256 MiB and 100,000 files.
- Builds are given 15 minutes.
- Free applications pause when idle and wake on the first request, which takes a few seconds. Pro keeps them warm.
- Pull requests from forks are not deployed — see GitHub.
- Each plan has an allowance — projects, domains, team members, build minutes and traffic: limits.
Starting from a template instead of an empty directory: templates. Framework-specific notes (Next.js, Astro, FastAPI, ASP.NET…): deploy guides. Deploying from GitHub: GitHub. Build configuration: builds. Databases, backups and one-off commands: backups & commands. Notifications, data export and closing an account: your account. Working with an AI agent (MCP, diagnose): for AI agents. Full command reference: nesly CLI. Questions we have not answered here: contact us.