CLI
Install the NerionX CLI, configure credentials, and provision databases and env files for your pharmacy.
NerionX CLI
The Brand Kit is CLI-first: a brand owner provisions and operates their own self-hosted Spoke + storefront with the nerionx command, talking to the shared Central Hub. Provisioning creates the Spoke database, runs migrations, seeds the admin, and writes .env.<slug>. The Spoke connects to the Hub with its API key (HUB_API_URL + HUB_API_KEY); the brand is derived from the key.
Workflow
login+ sethubUrl, thenconfig sync-identitycreate brand→request approval(operator approves in the dashboard)provisionthe Spoke from the repo root (running elsewhere skips migrations)pull products --initial+generate products- Start the Spoke + storefront (self-hosted) and test checkout end-to-end
Commands & scripts
1 · Install & sign in
# Requires Node 20 and Docker. No repo access needed.
npm install -g @nerionx/cli
nerionx --help
nerionx login --api-key nx_live_your_key # authenticate
nerionx config set hubUrl https://api.nerionx.dev/api/v1
nerionx config sync-identity # pull name/logo/tagline/currency from the Hub2 · Register the brand & get approved
nerionx create brand --name "City Pharmacy" --domain city-pharmacy.com --currency EUR
nerionx select --domain city-pharmacy.com
nerionx request approval --brand-name "City Pharmacy" --email you@brand.com --phone "+100"
# → the platform operator approves it in the admin dashboard3 · Install and start the Brand Kit
# Scaffolds compose + .env (generating secrets) and pulls the kit images,
# then creates the Spoke DB, runs migrations inside the image, and starts up.
# Works the same on a laptop and on a server — only Docker is required.
mkdir city-pharmacy && cd city-pharmacy
nerionx init --slug city-pharmacy --hub-api-key nx_live_your_key
nerionx up
nerionx status # containers
nerionx logs spoke -f # tail the Spoke
nerionx request --ssl && nerionx check ssl city-pharmacy.com
# Platform developers only: `nerionx provision` does the same from a
# monorepo checkout, using pnpm + a local Postgres instead of containers.Air-gapped / private-network install
# Regulated vertical or a closed network with no reach to registry.nerionx.dev?
# Distribute the images yourself — the runtime stays containerized (no toolchain
# on the brand box). See docs/runbooks/brand-kit-airgap.md.
# On a machine that CAN pull the images — bundle them (docker save):
nerionx kit export --out ./nerionx-kit-latest
# Carry the folder in, then on the target host — load them (docker load):
nerionx kit import ./nerionx-kit-latest
nerionx init --offline --slug city-pharmacy --hub-api-key nx_live_your_key
nerionx up # boots from the loaded images, no registry
# Many hosts? Seed a registry you run inside your network (Zot / registry:2 / Harbor):
nerionx kit import ./nerionx-kit-latest --registry registry.internal:5000 --push4 · Sync catalog & generate content
nerionx pull products --initial # bulk download the master catalog from the Hub
nerionx sync --force-event-bus # reconcile local mirror with Hub state
nerionx generate products # AI SEO copy for the catalog
nerionx agent status # check AI job progress5 · Run the Brand Kit (self-hosted)
# Spoke admin → http://localhost:<port>/app (port shown by provision)
env $(grep -v '^#' .env.city-pharmacy | xargs) pnpm --filter @nerionx/spoke dev
# Storefront → http://localhost:8000
env $(grep -v '^#' .env.city-pharmacy | xargs) pnpm --filter @nerionx/storefront devConnect to the Hub (.env.<slug>)
HUB_API_URL=https://api.nerionx.dev/api/v1 # the Central Hub
HUB_API_KEY=nx_live_your_brand_key # issued on approval
# HUB_BRAND_ID is optional — the Hub derives the brand from the API key.Command reference
nerionx init --slug— Scaffold a Brand Kit here — compose + .env with generated secrets, then pull the imagesnerionx up— Start the kit — infra, Spoke DB, migrations, admin seed, spoke + storefrontnerionx down [--volumes]— Stop the kit; --volumes also deletes its database and uploadsnerionx status / logs [service]— Container status, and tail logs (-f to follow)nerionx update— Pull newer kit images and recreate spoke + storefrontnerionx init --offline— Air-gap: scaffold without registry login/pull — images come from `kit import`nerionx kit export— Air-gap: docker save the kit images into a portable bundlenerionx kit import [--registry --push]— Air-gap: docker load on the target, or seed a self-hosted registrynerionx login / logout— Authenticate the terminal with a brand API keynerionx config get|set|sync-identity— Manage ~/.nerionx/config.json; sync brand identity from the Hubnerionx create brand— Register a brand (name, domain, currency) before provisioningnerionx select --slug|--domain— Set the active brand for subsequent commandsnerionx request approval— Submit the brand for Hub approvalnerionx request dns-ready— Verify DNS resolves and record readiness on the Brand Kitnerionx provision— Platform developers only — provisions a Spoke from a monorepo checkout (pnpm + local Postgres)nerionx brand:create— Platform developers only — local one-shot Spoke provisioning from a checkoutnerionx check ssl / request --ssl— DNS + Let's Encrypt SSL for production domainsnerionx pull products --initial|--recent— Download the master catalog from the Hub over HTTPSnerionx sync --force-event-bus— Reconcile the local mirror with Hub statenerionx generate products— AI-generate SEO content for the catalog (or a single --sku)nerionx agent status— Inspect AI generation jobsnerionx pricing --sku— Price-floor lookup (markup/shipping write rules coming soon)nerionx theme export|import— Move theme tokens between environmentsnerionx orders list|get— List brand orders / fetch order detailnerionx health --verbose— Check DB, Redis, and Hub connectivitynerionx logs --follow— Stream Brand Kit logsnerionx security rotate-keys— Rotate Hub ↔ Spoke secret keysnerionx db migrate— Apply pending Spoke database migrationsnerionx service restart— Restart the Brand Kit servicesnerionx destroy brand --force— Tear down a brand's infrastructure (irreversible)