@fluid-app/fluid-cli-portal
v0.1.56
Published
Fluid CLI plugin for building portal applications
Keywords
Readme
Fluid Portal CLI — Pull & Push App Manifests
The Fluid CLI lets you pull a Fluid OS definition (your app manifest — screens, themes, navigations, profiles) into local JSON files, edit them, and push them back to production.
Create a portal project
fluid portal create my-portalCreation uses the bundled canonical starter by default. Pass
--remote-template only when you intentionally want the GitHub mirror, or
--skip-install when you want scaffold-only output. A current scaffold uses
createPortal({ customPages }), keeps company widget packages in
src/widgets.config.ts, and does not contain iframe preview entries.
One-time setup
Build the CLI (from the repo root):
pnpm --filter @fluid-app/fluid-cli --filter @fluid-app/fluid-cli-portal buildThe
fluidbinary is then atpackages/cli/core/dist/bin/fluid.mjs. Optionally alias it:alias fluid="node /path/to/repo/packages/cli/core/dist/bin/fluid.mjs"(All examples below assume this alias. Without it, replace
fluidwithnode packages/cli/core/dist/bin/fluid.mjs.)
Authenticate
Email + MFA flow:
fluid loginOr skip MFA with an API token:
FLUID_TOKEN="<your-api-token>" fluid login
Pull a definition
fluid portal pull- Interactive picker, or target one directly:
fluid portal pull --app "<definition name>" - Writes
portal/(screens/,themes/,navigations/,profiles/,definition.json) plus a.portal-sync/folder that tracks sync state. - Switching to a different definition with unpushed local changes? Add
--forceto overwrite.
Edit & preview
Edit the JSON files under
portal/.Preview locally (serves the manifest from your local files):
fluid portal dev
Push changes back
fluid portal push- Shows a diff and asks for confirmation (add
--yesto skip). - Push does NOT publish — it updates the definition's working/draft state. End users keep seeing the currently-active published version.
- For a verified non-interactive release,
fluid portal push --yes --activatepushes the draft and creates/activates a live version only when every push phase succeeds. Partial pushes exit non-zero and are never activated.
Publish portal versions (only when you want manifest changes live)
fluid portal version create --activate # snapshot current state + make it live
fluid portal version list # see all versions
fluid portal version activate <version-id> # promote a specific versionPublish widget runtime artifacts
Portal widget packages are published separately from the hosted portal shell. Create a Remote DOM widget and register it in the single source package:
fluid portal widget create stock-tickerThe scaffold writes the widget under src/widgets/ and creates or updates
src/widgets.config.ts using defineWidget and defineWidgetPackage from the
worker-safe Portal SDK entry. portal.config.ts, customWidgets, and legacy
manifest endpoints are not part of widget discovery.
The portal CLI publishes company-owned portal widget packages:
fluid portal deploy- Builds
defineWidgetPackageintowidget.js, scoped CSS,manifest.json, andpublish-manifest.jsonunder.fluid/widget-distby default. manifest.jsonuses the canonical Remote DOM descriptor. ItsworkerEntryUrland CSS URLs are package-local artifact paths; the catalog resolves them to absolute public URLs before hosts consume the descriptor. Company and droplet package IDs remain fully qualified (company.*ordroplet.*). The publish manifest records the artifact inventory and hashes.- Publishes a company-owned portal widget package for Fluid OS usage.
- Defaults to
--environment production(an output/reporting label) and--out-dir .fluid/widget-dist. - Add
--dry-runto build and print the upload payload without creating an upload session. - This publishes widget runtime artifacts only; it does not deploy the hosted portal shell.
For droplet-owned marketplace widget packages, use the dedicated widget CLI
(@fluid-app/fluid-cli-widget) instead:
fluid widget create my-widget --droplet <uuid>
fluid widget link --droplet <uuid>
fluid widget publishDroplets are managed outside the widget CLI and must already exist before you link or publish a droplet-owned widget package.
Handy commands
fluid whoami— show the active profilefluid switch— switch between profilesfluid logout— clear stored credentialsfluid portal doctor— diagnose portal project issues
