Skip to main content

CLI Reference

The GGNomad CLI (ggnomad from @ggnomad/cli) is a thin shell over @burdenoff/cli-sdk. It mounts the GGNomad product context and exposes all shared platform modules plus the GGNomad domain surface.

Install

npm install -g @ggnomad/cli
# or
bun add -g @ggnomad/cli

Environment selection

The CLI defaults to production endpoints. Set BURDENOFF_ENV to target alpha or local before running any command:

BURDENOFF_ENVWorkspace gatewayGlobal gatewayOIDC issuer
prod (default)https://graphqlworkspaces.burdenoff.com/workspaces/graphqlhttps://graphql.burdenoff.com/global/graphqlhttps://graphql.burdenoff.com/global
alphahttps://alphagraphqlworkspaces.burdenoff.com/workspaces/graphqlhttps://alphagraphql.burdenoff.com/global/graphqlhttps://alphagraphql.burdenoff.com/global
localhttp://localhost:4003/workspaces/graphqlhttp://localhost:4000/global/graphqlhttp://localhost:4000/global

You can also override per command via env vars:

export GGNOMAD_WORKSPACE_ENDPOINT="https://graphqlworkspaces.burdenoff.com/workspaces/graphql"
export GGNOMAD_GLOBAL_ENDPOINT="https://graphql.burdenoff.com/global/graphql"
export GGNOMAD_OIDC_ISSUER="https://graphql.burdenoff.com/global"

Authentication

All workspace operations require dual-token auth (platform token + workspace token). The workspace token is issued automatically when you set a workspace.

User Authentication (OAuth2 Device Code)

Interactive browser-based login.

# Login — opens browser for approval
ggnomad auth login

Common Auth Commands

ggnomad auth status # Check current auth state
ggnomad auth token # Print platform access token
ggnomad auth token --workspace # Print workspace token
ggnomad auth refresh # Force token refresh
ggnomad auth logout # Clear stored tokens

ggnomad workspace list # List available workspaces
ggnomad workspace current # Show current workspace
ggnomad workspace set <id> # Switch workspace (re-issues token)

Token storage: ~/.config/ggnomad-cli/auth.json (mode 0600).

Command groups

ggnomad auth Authentication (login, logout, status, token, refresh)
ggnomad workspace Workspace context (list, current, set)
ggnomad organizations Organization management
ggnomad tours Product tours
ggnomad rbac Role-based access control
ggnomad ggnomad GGNomad marketplace (providers, properties,
activities, events, tours, trips, bookings,
favorites, analytics)
ggnomad sandbox Sandbox script execution
ggnomad tags Tags
ggnomad files Files
ggnomad groups Groups
ggnomad conversations Conversations
ggnomad security Security
ggnomad integrations Integrations
ggnomad channels Channels
ggnomad scheduler Scheduler
ggnomad export Data export
ggnomad notifications Notifications
ggnomad support Support
ggnomad products Products / feature flags
ggnomad billing Billing
ggnomad store Store
ggnomad devportal Developer portal
ggnomad health Health checks

Run ggnomad <command> --help for subcommand details.

Quick Examples

ggnomad auth login
ggnomad workspace set <id>
ggnomad ggnomad properties list
ggnomad ggnomad providers list
ggnomad tags create --key bug --label Bug
ggnomad rbac check <user> read project
ggnomad billing subscriptions list
ggnomad devportal apps list --status PUBLISHED

Output Formats

All list/get commands support --format (-f): json, table, yaml.

Development

Prerequisites

  • Bun 1.3.14+
  • Node.js 24.11.0+
  • TypeScript 5.9+

Setup

git clone https://github.com/Algoshred/ggnomad-cli.git
cd ggnomad-cli
bun install

Commands

bun run dev # Run CLI in dev mode (tsx)
bun run dev -- --help # Dev mode with args
bun run build # Compile TypeScript (tsc + tsc-alias)
bun run type-check # Type checking
bun run lint # ESLint
bun run format # Prettier
bun run sanity # All checks (format + lint + type-check + build)
bun run start # Run compiled CLI

Project Structure

src/
cli.ts # Entry point — builds CLIContext, mounts SDK modules, runs program
product-defaults.ts # GGNomad endpoints, OIDC client id, env prefix

All command logic lives in @burdenoff/cli-sdk modules.

CI/CD

Every push to main / PRs (CI): Lint → Type check → Build → CLI smoke (--help, --version). No publish — the gate is green-only.

Release (manual workflow_dispatch or CalVer git tag): Lint → Type check → Build → Publish to npmjs (public) → GitHub Release.

CalVer format: YYYY.MDD.PATCH (e.g., 2026.626.1).