Publishing
Ship to the marketplace and inspect what's already there.
orion publish
Builds your app with npm run build, runs every validation check, prompts for a changelog, archives your bundle and source, and uploads to the marketplace. If the build or any check fails, it aborts before authentication.
orion publishThe CLI runs your package.json build script, then prints validation rows for Manifest, Bundle, and Source archive, then prompts for confirmation before authenticating and uploading. On success, you'll see a Publish Details block with the new version's App ID, Version, and Status (typically pending_review for a new submission).
If your package.json has no build script, publish aborts with a clear remediation message — add one, or skip the step with --no-build (only safe when your dist/ is already current, e.g. when CI built the bundle in a prior step).
Flags
| Flag | Purpose |
|---|---|
--dry-run | Run every check + print the planned upload, but skip the API call. Useful in CI to verify a build is publishable without consuming a version slot. --dry-run still runs npm run build and writes the build-provenance stamp into dist/.orion-build-stamp, so a subsequent --no-build step in the same workflow can reuse the artifacts. |
-c, --changelog <message> | Inline changelog. Prompted interactively if omitted. |
--no-build | Skip npm run build before publish. The CLI still verifies a build-provenance stamp (dist/.orion-build-stamp) written by an earlier auto-build, and refuses to publish if your source has changed since then. Intended for CI flows that build in a separate step; otherwise prefer the default. |
Re-publishing the same version
Each version is uploaded once. If the version in orion-app.json already exists for this app, publish exits before uploading:
✖ Version 1.0.0 has already been uploaded (status: submitted). Bump the version in orion-app.json before publishing again.Bump version in orion-app.json and run orion publish again. To iterate quickly during development, use orion dev instead — it tunnels your local build into the sandbox without writing a marketplace version.
What gets uploaded
- The contents of
dist/(the bundle). - A source archive of your repo. When the project is a git repo, the file list comes from
git ls-files(so anything in your.gitignoreis already out). On top of that, the CLI hard-excludes the following defense-in-depth list regardless of how the file list was sourced:node_modules/,dist/,.git/.env,.env.*(including.env.local,.env.production,.env.staging)orion.config.{ts,js,mjs,cjs,tsx}(contains yourclientId/tenantUuid)- Private keys and credentials:
*.key,*.pem,*.p12,*.pfx,credentials.json,secrets.json,id_rsa,id_ed25519 *.logand.DS_Store
The archive is meant for marketplace reviewer audit; nothing in it is run.
orion apps list
List apps owned by the authenticated developer. Paginates through all results — the count banner reflects total, not page size.
orion apps listYou own 1 app.
SLUG STATUS CURRENT PUBLISHER
my-app published 1.0.5 Your NameFlags
| Flag | Purpose |
|---|---|
--status <draft|submitted|published|...> | Filter by app status. |
--json | Machine-readable response (full envelope including pagination metadata). |
orion apps info [slug]
Detail view for a single app. Defaults slug to the value in ./orion-app.json when omitted.
orion apps info my-appMy App (my-app)
status: published
publisher: Your Name
current version: 1.0.5
scopes_required: user/Patient.read,
user/ActivityDefinition.read
created: 2026-04-21Flags
| Flag | Purpose |
|---|---|
--json | Emit the raw record. |
orion versions list
List submitted versions for an app, newest first. Slug defaults to the value in ./orion-app.json.
orion versions listslug: my-app
VERSION STATUS SUBMITTED
1.0.5 published 2026-04-30 10:15 PDT
1.0.4 published 2026-04-27 19:16 PDT
1.0.3 published 2026-04-27 14:44 PDT
1.0.2 rejected 2026-04-27 14:22 PDT
1.0.1 published 2026-04-27 13:41 PDTFlags
| Flag | Purpose |
|---|---|
--slug <slug> | App slug (overrides the manifest default). |
--status <in_review|published|deprecated|rejected> | Filter by status. |
--json | Newline-delimited JSON, one record per line. |
orion versions show <version>
Show details and the reviewer thread for one version.
orion versions show 1.0.5my-app 1.0.5
status: published
submitted: 2026-04-30 10:15 PDT
bundle: https://orion-cdn.../bundle.js
sha256: eba5a60d…23578d7e
scope[]: user/Patient.read,
user/ActivityDefinition.read
changelog: "Fix exercise reorder bug"
Review thread (1 message)
2026-04-30 11:02 PDT — reviewer@orion.dev
Approved. Tested the reorder flow on staging.Flags
| Flag | Purpose |
|---|---|
--slug <slug> | App slug (overrides the manifest default). |
--json | Emit {version: {…}, review: [{…}]} with internal-only review notes filtered out. |