Getting started
From an invitation to a product answering at its own domain, in six steps.
1. Accept your invitation
scaledbox cloud is by invitation only. Your invitation is an email with a link, valid for a week and usable once: it opens the console, which creates your account with a passkey (Touch ID, Windows Hello, a security key or your phone). There are no passwords. To sign in on a new device, or if you lose your passkey, ask the console for an email link that adds one.
2. Install the CLI
The scaledbox CLI runs on macOS and Linux (amd64 and arm64):
curl -fsSL https://scaledbox.dev/install.sh | sh
It installs into ~/.local/bin without sudo and checks the download's SHA-256. If that directory isn't
on your PATH, the installer says which line to add to your shell's profile. Run the same command again
to update. scaledbox --version prints yours; to install a given version instead of the latest:
curl -fsSL https://scaledbox.dev/install.sh | SCALEDBOX_VERSION=v0.0.0-20261023120000-0123456789ab sh
3. Sign in
scaledbox login
The CLI shows a short code and opens the console in your browser (OAuth 2.0 device authorization, as
fly auth login does): check that the code matches and confirm with your passkey. The CLI keeps a
token, valid for a limited time and revocable, in your user configuration directory
(~/.config/scaledbox/credentials.json on Linux, ~/Library/Application Support/scaledbox/ on macOS).
scaledbox account shows who you are; scaledbox logout revokes the token.
4. Ask for a product
scaledbox products request shop --purpose "an online shop for ceramics"
scaledbox approves it with a monthly credit (see Spending) or declines it, and tells
you by email. scaledbox products list shows your products. You own the products approved for you.
5. Describe it in scaledbox.toml
In your product's repository, scaledbox.toml says what it runs and needs. A web service with a
database:
[app]
name = "shop"
[services.web]
dir = "dist/web" # its built modules and box.toml (bindings: [bindings.DB] kind = "database")
health = "/healthz" # answers 2xx when ready
memory = "256Mi"
[postgres.main] # the database env.DB reaches, in every environment
[release] # its release() handler runs the migrations before each release goes live
service = "web"
[env.prod.services.web]
domains = ["shop.example"]
replicas = 2
[env.staging.services.web]
domains = ["staging.shop.example"]
[budget]
usd_month = 15 # the most it may spend a month
Every setting is in the scaledbox.toml reference.
6. Deploy
Build your services' JavaScript modules (any bundler: see Deploying), then deploy them:
scaledbox deploy --env prod
Only the files scaledbox lacks are uploaded; scaledbox compiles them and builds nothing. The first deploy creates the environment. The release handler runs, then a box of each service's new release must answer its health path before the release goes live; if not, the previous release keeps running and the deploy fails with the reason.
Your domains answer once their DNS records are in place:
scaledbox domains
lists each name with the two records to create at your DNS provider (see Domains).
Next
- Deploy from CI with a deploy token instead of your own sign-in.
- Set secrets, read logs, size your services' instances.
- Run your customers' apps with the tenants API.