Skip to content

CLI reference

import { Aside } from ‘@astrojs/starlight/components’;

Terminal window
npm install -g @vantageconnections/cli

Then either run vantage login to save a token, or set VANTAGE_TOKEN in your environment.

Quick start — spin up a new site from an empty folder

Section titled “Quick start — spin up a new site from an empty folder”
mkdir my-new-site && cd my-new-site
vantage login # one-time
vantage websites create --name "Acme Plumbing" --slug acme-plumbing
vantage workspace init acme-plumbing # polls + git-clones into cwd
# → you're now editing the per-site repo; push to deploy
When you're sitting in the repo directory of a Melbora site (i.e. you
ran `vantage workspace init` earlier), you can omit the websiteId
argument on every per-site command — the CLI reads your cwd's git
remote and resolves the site automatically. Same idea as `git status`
knowing which repo you're in. Examples (run from inside the site dir):
vantage websites features --openrouter # toggle the AI assistant on
vantage websites deployment # is the build green?
vantage websites logs openrouter # service logs — id omitted
vantage content get # CMS document for the current site
vantage domains add --domain example.com # attach a domain to the current site
You can still pass an explicit id or slug as the first positional
if you want to operate on a different site than the one you're in.
vantage login [--token vc_pat_…] [--api-url <host>]
vantage logout
vantage whoami
vantage selftest Diagnose install + token + API
vantage workspace detect [--dir <path>] [--git-remote <url>] [--json]
vantage workspace init <slug-or-id> [--into <path>] [--ssh] [--no-clone] [--timeout 90]

Websites — core ( is optional inside a site repo)

Section titled “Websites — core ( is optional inside a site repo)”
vantage websites list
vantage websites get [<id>]
vantage websites create --name <n> --slug <s> [--client-id <id>]
vantage websites delete [<id>] [--yes]
vantage websites features [<id>] --openrouter|--no-openrouter --resend|--no-resend …
vantage websites repo [<id>]
vantage websites services [<id>]
vantage websites deployment [<id>] Latest Vercel deploy + errorMessage
vantage websites redeploy [<id>] Force a fresh build
vantage websites logs [<id>] <service> service: github | vercel | openrouter | resend | bookings | seo | cms | stripe | cognito | domain
vantage websites jobs [<id>] Provisioning step history
vantage websites transfer [<id>] --client-id <clientId>
vantage websites cancel-transfer [<id>]
vantage websites resend-transfer [<id>]
vantage websites unassign [<id>] [--yes]
vantage websites set-price [<id>] --price <whole USD>
vantage websites invite-client [<id>] --email <client@example.com>
vantage websites cancel-invite [<id>]
vantage websites invitations [<id>]
vantage websites invite-collaborator [<id>]
vantage websites invoices [<id>] [--json]
vantage websites invoice-one-off [<id>] --amount <usd> --description <text> [--currency usd]
vantage websites billing-portal [<id>] Stripe Customer Portal session URL
Section titled “Websites — client access (Add Client links)”
vantage websites clients list [<id>]
vantage websites clients add [<id>] --email <e> --role <viewer|editor>
vantage websites clients set-role [<id>] <clientId> <viewer|editor>
vantage websites clients remove [<id>] <clientId>
vantage websites clients revoke-invitation [<id>] <invitationId>
vantage websites delivery get [<id>] Includes per-checkpoint dueAt
vantage websites delivery set-eta [<id>] <iso-date>
vantage websites delivery set-preview [<id>] <true|false>
vantage websites delivery checkpoint [<id>] <checkpointId> [<pending|in_progress|done>] [--due <YYYY-MM-DD|iso|clear>]
vantage websites documents list [<id>]
vantage websites documents upload [<id>] <filepath>
vantage websites documents download [<id>] <documentId> [--out <path>] [--inline] [--open]
--inline prints a browser-renderable URL (PDF/image preview)
--open launches that URL in your default browser
vantage websites documents delete [<id>] <documentId>

Websites — bulk publishing (async, SQS-backed) (for >25 products; the portal’s bulk action handles ≤25 inline)

Section titled “Websites — bulk publishing (async, SQS-backed) (for >25 products; the portal’s bulk action handles ≤25 inline)”
vantage websites publishing bulk-async [<id>] --action <publish|unpublish>
--publication-id <pubGID> [--publication-id <pubGID> ...]
(--product-id <pGID> [--product-id <pGID> ...] | --product-ids-file <path>)
[--wait] Poll every 2s until state="done" (10-min ceiling)
On transient 5xx the loop retries up to 3 times
before surfacing the error.
--product-ids-file: one GID per line;
blank lines and `# comments` are ignored;
ids deduped across --product-id + file.
vantage websites publishing bulk-job [<id>] <jobId>
Print current job state + per-product outcomes

Websites — favicon (Higgsfield) (requires local higgsfield CLI + higgsfield auth login)

Section titled “Websites — favicon (Higgsfield) (requires local higgsfield CLI + higgsfield auth login)”
vantage websites generate-favicon [<id>] [--output ./icon.png] [--prompt "…"]
Generate a brand-appropriate square
icon via Higgsfield (gpt_image_2,
1:1, 1k). Pulls brand name + tagline
from the site's CMS to build the
prompt; pass --prompt to override.
Output: PNG file on disk. Drop it
into the client repo at app/icon.png
(Next.js auto-uses it as favicon).
Note: synth runs on YOUR machine,
not the API Lambda — Higgsfield has
no REST API today.
vantage clients list
vantage clients get <clientId>
vantage clients websites <clientId>
vantage content get [<id>]
vantage content edit [<id>] Open in $EDITOR; save on exit
vantage media upload [<id>] --file <path> [--content-type image/png]
vantage media delete [<id>] --path public/uploads/…
vantage blueprint get [<id>]
vantage blueprint positions [<id>] < positions.json
vantage bookings enable [<id>] --handle <cal-username> [--brand-color #RRGGBB]
vantage bookings disable [<id>]
vantage seo set-tier [<id>] --tier essentials|growth|premium|premium_plus
vantage seo disable [<id>]
vantage seo scan [<id>] Force an immediate health scan
vantage seo run-cron [<id>] [--force] Run tier-cadence work on-demand
vantage seo get [<id>] Full SEO state snapshot
vantage seo geo-probe [<id>] --prompt "…"
vantage seo ai-alt-text [<id>] --image "…" [--context "…"]
vantage seo ai-meta-description [<id>] --page-title "…" [--page-path /] [--page-body "…"]
vantage seo ai-blog-draft [<id>] --topic "…" [--audience "…"] [--length 700]
vantage seo ai-local-page [<id>] --city "…" [--focus-service "…"] [--business-summary "…"]
vantage seo ai-content-audit [<id>] [--json] Rubric report across 8 content
dimensions. Growth+; cache-aware
(unchanged content = free).
vantage seo set-competitors [<id>] --url https://… [--url …] (max 10)
vantage seo citations [<id>] Directory-listing checklist
vantage seo set-citations [<id>] (stdin: JSON array)
vantage seo gsc-connect [<id>] Start Google Search Console OAuth
vantage seo gsc-refresh [<id>] Force a metrics pull
vantage seo gsc-disconnect [<id>]

Newsletter (plug-and-play — enable mints a per-website Resend audience)

Section titled “Newsletter (plug-and-play — enable mints a per-website Resend audience)”
vantage newsletter status [<id>] Enabled? Counts? Default sender?
vantage newsletter enable [<id>] Mint audience + push env + redeploy
vantage newsletter disable [<id>] --yes DESTRUCTIVE — drops audience + subs
vantage newsletter subscribers [<id>] [--json]
vantage newsletter remove-subscriber [<id>] <contactId-or-email>
vantage newsletter resubscribe [<id>] <contactId-or-email> Clear unsubscribed flag
vantage newsletter unsubscribe [<id>] <contactId-or-email> Operator-mark unsubscribed
vantage newsletter campaigns [<id>] [--status <drafts|scheduled|sending|sent|cancelled|failed|archived>] [--include-archived] [--json]
List campaigns; default hides archived.
Friendly filters: drafts (status="draft"),
scheduled (queued + scheduledAt),
sending (queued|sending),
archived (only archived).
vantage newsletter campaign [<id>] <campaignId> Show one campaign + stats
vantage newsletter compose [<id>] --subject "…" (--body "…" | --body-file <path> | --template <id> --vars '<json>') [--from <addr>] [--schedule-at <iso>] [--send]
Compose a draft. Body via Markdown OR template.
--send fires it immediately (or schedules).
Body also accepted via stdin.
Body Markdown supports images:
![alt](https://cdn.example.com/img.jpg)
http(s) only; standalone lines render
centered, inline images flow with text.
--from defaults to the website's resolved
sender (verified email-kind domain if any,
else the platform fallback) — leave blank
to use it.
Template fields can be conditional:
e.g. the default template's ctaUrl is
only required (and accepted) when ctaText
is non-empty in --vars. Multi-line text
fields (e.g. signoff) accept literal \n
in the JSON string.
vantage newsletter update [<id>] <campaignId> [--subject "…"] [--body "…" | --body-file <path>] [--from <addr>]
Patch a draft (only drafts).
vantage newsletter send [<id>] <campaignId> [--schedule-at <iso>]
Send a previously-drafted campaign;
add --schedule-at for a future send.
vantage newsletter test [<id>] <campaignId> --to <email>
Send the rendered campaign to one
address (subject prefixed [TEST]).
vantage newsletter delete [<id>] <campaignId> --yes
Delete a draft (sent can't be deleted).
vantage newsletter archive [<id>] <campaignId> Hide a sent campaign from the default list.
vantage newsletter unarchive [<id>] <campaignId> Restore an archived campaign.
vantage newsletter templates list [<id>] [--json] Available templates + field schemas
vantage newsletter unsubscribe-url [<id>] --email <addr>
Mint a test unsubscribe URL for QA
vantage domains list [<id>]
vantage domains add [<id>] --domain example.com [--kind site|email]
vantage domains remove [<id>] <domain>
vantage domains verify [<id>] <domain> Re-check DNS propagation
vantage domains check <domain> Vercel availability + price
vantage domains buy [<id>] --domain … --years 1 --expected-price <usd> --contact-file <json>
vantage analytics traffic [<id>] [--range 7d|30d|90d|all] [--json]
Pageviews, sessions, dwell, top pages,
referrers, countries, devices
vantage analytics seo [<id>] [--range 7d|30d|90d|all] [--json]
Score, GEO citation rate, GSC totals,
citations progress, AI quota usage
vantage keys list
vantage keys create --name "Adrin Mac CLI"
vantage keys revoke <keyId> ⚠ revoking the token you're currently logged in with will lock you out
  • VANTAGE_TOKEN — Override stored credentials (preferred for CI / MCP)
  • VANTAGE_API_URL — Override the API host
  • NO_COLOR — Disable color output (set to any non-empty value)