URL: /geist/quickstart

---
title: Quickstart
description: From a fresh terminal to a live URL in under two minutes.
icon: rocket
---

You'll need a Halo account. Sign up at [halo.example.com/signup](https://halo.example.com/signup) — the free tier covers everything in this guide.

## 1. Install the CLI

<CodeGroup>
```bash npm
npm install -g @halo/cli
```
```bash bun
bun add -g @halo/cli
```
```bash brew
brew install halo
```
</CodeGroup>

## 2. Log in

```bash
halo login
```

A browser window opens. Approve, and the CLI stores a token at `~/.halo/credentials`.

## 3. Deploy

From any project root:

```bash
halo deploy
```

The CLI detects your framework, builds, and uploads. You'll see something like:

```
[halo] detected: next@15.1
[halo] uploading 412 files (1.8 MB)
[halo] building on iad1...
[halo] deployment ready: https://my-app-x7k2qz.halo.app
```

That URL is live, served from the edge POP nearest each visitor.

## 4. Promote to production

```bash
halo alias my-app.com
```

Halo provisions a TLS cert (Let's Encrypt) and aliases the deployment. Done.

<Tip>
  Skip steps 1–3 with `halo init --from vercel-template`. See [`halo init`](/sdks/cli#init).
</Tip>

## What's next

<CardGroup cols={2}>
  <Card title="Connect your repo" icon="git-branch" href="/guides/deploy-from-git">
    Auto-deploy on every push.
  </Card>
  <Card title="Add a custom domain" icon="globe" href="/guides/custom-domains">
    Point DNS, get HTTPS.
  </Card>
</CardGroup>
