Get started

Give the app a home in a few commands. Install the CLI, sign in through the browser and deploy the current folder.

Signup takes an invite code during early access. Ask for a code, and it comes by email.

Before you begin.

  • Node.js 22 or newer
  • An invite code (ask for one)
  • A project folder, Dockerfile, compose file or GitHub repository

Install the CLI. One file, no dependencies.

macOS and Linux
$ curl -fsSL https://cloud.myhub.host/install.sh | sh
Windows PowerShell
PS> irm https://cloud.myhub.host/install.ps1 | iex
npm
$ npm i -g @hubhq/cli@beta

Create the account and the org. At cloud.myhub.host/signup: name, email, password, org name and the invite code.

Or from the terminal:

$ hub signup

Your org's root is https://<org>.myhub.host, and every app goes under it.

Connect the CLI through the browser.

$ hub login
Open this link to log in: https://cloud.myhub.host/cli/BCDF-GHJK

The CLI prints the link and a short code and opens the page. Click Connect in the browser, and the terminal is logged in. hub whoami shows the active account.

Run the first release.

$ cd path/to/my-app
$ hub deploy
Deploying my-app (node, port 3000) to acme
Uploading 0.4 MB
Building... 31s
Starting...
Live at https://my-app.acme.myhub.host

Hub picks the app name from --name, else app in hub.yaml, else the folder name. A compose file runs as it is. Without one, Hub takes a Dockerfile, a package.json with a start or build script, or an index.html.

Connect a repository without cloning it.

$ hub deploy --git owner/repository

Pick a branch or a subfolder when needed:

$ hub deploy \
    --git owner/repository \
    --branch main \
    --path apps/admin \
    --name admin

The instance then deploys every push to that branch, and hub git admin --watch off stops that. hub deploy inside a clone connects the same way.

Add configuration without committing it.

One value, asked for without echo
$ hub env set my-app DATABASE_URL
Several values
$ hub env set my-app API_URL=https://api.example.com MODE=production
A dotenv file
$ hub env set my-app --file .env
Values the image build needs
$ hub env set my-app --build VITE_API_URL=https://api.example.com
The names, never the values
$ hub env my-app

Choose the access rule. New apps are private to the org.

$ hub access my-app public   # anyone with the address, no login
$ hub access my-app org      # back behind the org login

The first commands to remember.

$ hub list
$ hub status my-app
$ hub logs my-app
$ hub logs my-app --build
$ hub restart my-app
$ hub shell my-app
$ hub releases my-app
$ hub rollback my-app

Add staging or a customer-specific deployment.

$ hub instance create my-app staging
https://my-app--staging.acme.myhub.host
Deploy to it with: hub deploy --instance staging
$ hub deploy --instance staging

Target it later as my-app/staging.

Give the team a root URL.

$ hub workspace init
Live at https://acme.myhub.host

The workspace deploys at the org root, with a page that lists every app. Create workspace on the dashboard does the same. A coding agent runs all of the above from its terminal: For agents.

The next useful app should not end on localhost.

Signup takes an invite code during early access. Ask for a code.