> ## Documentation Index
> Fetch the complete documentation index at: https://voyant.travel/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Get a Voyant deployment running: use Voyant and have it provisioned for you, run the Voyant OSS container, or generate a project you own from the CLI.

There are three ways to get to a running Voyant, depending on how much of it you want to operate yourself.

<CardGroup cols={3}>
  <Card title="Use Voyant" icon="circle-check">
    Nothing to install. Sign up and your deployment is provisioned for you.
  </Card>

  <Card title="Run the container" icon="box">
    Self-host Voyant OSS from the published image. The fastest way to run it yourself.
  </Card>

  <Card title="Generate a project" icon="code">
    Scaffold a codebase you own and extend, with the platform as dependencies.
  </Card>
</CardGroup>

## Use Voyant

Sign up at [voyant.travel](https://voyant.travel). Your deployment, database, admin, and booking surface are provisioned for you, and upgrades and scaling are handled from there on. You get an admin URL and an API token, and nothing to run.

It is also the only way to get [Max](/docs/max/overview), the app marketplace, and the [services](/docs/services/overview) — messaging, vault, browser, video, realtime, and search.

[Connect](/docs/connect/overview) and [Data](/docs/data/overview) are hosted products you consume over their APIs, so they work with a self-hosted deployment too.

A deployment can be exported to Voyant OSS at any time, so this is not a one-way door.

## Run the Voyant OSS container

Voyant OSS is the whole platform under Apache-2.0, published as a container image. You need a PostgreSQL database and a set of secrets.

<Steps>
  <Step title="Pull the image">
    ```bash theme={null}
    docker pull ghcr.io/voyant-travel/operator:latest
    ```

    <Warning>
      **Pin a version in production.** Every push to `main` publishes an immutable `sha-<git-sha>` tag; deliberate releases publish a bare semver tag, and `latest` is promoted from an already-verified release digest. A `sha-` tag records which commit was built, not which version was released — pin a semver tag or a digest.
    </Warning>
  </Step>

  <Step title="Write an env file">
    The server needs a Postgres URL plus auth, session, and integration secrets. [`apps/operator/.env.example`](https://github.com/voyant-travel/voyant/blob/main/apps/operator/.env.example) in the Voyant OSS repository is the authoritative key list.

    ```bash title="operator.env" theme={null}
    DATABASE_URL="postgresql://user:password@host/dbname?sslmode=require"
    BETTER_AUTH_ADMIN_SECRET="…"     # openssl rand -base64 32
    BETTER_AUTH_CUSTOMER_SECRET="…"  # generate separately
    APP_URL="https://example.com/api"
    DASH_BASE_URL="https://example.com"
    ```

    Generate the two auth secrets separately. They protect different session realms, and reusing one for both collapses that boundary.
  </Step>

  <Step title="Run it">
    ```bash theme={null}
    docker run --rm -p 8080:8080 --env-file ./operator.env \
      ghcr.io/voyant-travel/operator:latest
    ```

    The server listens on `PORT`, which defaults to `8080`, and exposes `/healthz` for container probes.
  </Step>
</Steps>

## Generate a project

Use the CLI when you want a codebase you own and extend, rather than a container you configure. The platform arrives as dependencies; your repository holds your modules, routes, and UI.

<Steps>
  <Step title="Install the CLI">
    Requires **Node.js 20 or newer** and a package manager. The generated project uses [pnpm](https://pnpm.io).

    ```bash theme={null}
    npm install -g @voyant-travel/cli
    voyant --help
    ```
  </Step>

  <Step title="Create the project">
    ```bash theme={null}
    voyant new my-travel-app
    cd my-travel-app
    pnpm install
    ```
  </Step>

  <Step title="Configure it">
    ```bash theme={null}
    cp .env.example .env
    ```

    Set `DATABASE_URL` and the auth secrets. Any PostgreSQL works for local development.
  </Step>

  <Step title="Migrate and run">
    ```bash theme={null}
    pnpm db:migrate
    pnpm dev
    ```

    Local development serves on port `3300` by default. Open it and sign in with the seeded credentials from the project README.
  </Step>
</Steps>

## What you just ran

A deployable travel operations platform, not a demo: a normalized data model on Postgres, the domain modules for catalog, commerce, inventory, operations, bookings, finance and the rest, an API layer over all of them, an admin, and a public booking surface.

Voyant runs as a resident Node process against Postgres. The modules are assembled through the resolved deployment graph and booted together into one application — they are components of one deployable, not separately deployed services.

## Next steps

<CardGroup cols={2}>
  <Card title="Understand the architecture" icon="diagram-project" href="/docs/concepts/architecture">
    How modules, links, jobs, subscribers, and surfaces fit together.
  </Card>

  <Card title="Browse the modules" icon="cubes" href="/docs/platform/modules">
    What each domain module owns.
  </Card>

  <Card title="Extend the platform" icon="puzzle-piece" href="/docs/platform/extending/adapters-and-providers">
    Swap a provider, or build an app that runs outside the deployment.
  </Card>

  <Card title="Connect supplier inventory" icon="plug" href="/docs/connect/overview">
    Sell cruises, hotels, and flights from third-party suppliers.
  </Card>
</CardGroup>

<Tip>
  Need help? Reach out at [hi@voyant.travel](mailto:hi@voyant.travel).
</Tip>
