CLI

Command-line interface for creating and managing Fireberry apps


title: "CLI" description: "Command-line interface for creating and managing Fireberry apps"


Fireberry CLI

The Fireberry CLI (@fireberry/cli) is your command-line tool for creating, deploying, and managing Fireberry apps.

Resources:


Installation

npm install -g @fireberry/cli@latest

After installation, authenticate with your API token:

fireberry init

App Versioning

Every app version is in one of three states:

StateDescription
DraftWork in progress. Only visible to the developer. Created by create or automatically by push when no Draft exists.
LiveThe published version. Available to your org after install.
DeprecatedA previous Live version, superseded when a new version is deployed. Exists for audit history only — cannot be installed or re-deployed.

Rules:

  • There is at most one Draft and one Live version per app at any time.
  • Version numbers are sequential integers (V1, V2, V3…), incrementing on each deploy cycle.

Typical lifecycle:

fireberry create    → creates Draft V1
fireberry push      → updates Draft V1
fireberry deploy    → Draft V1 becomes Live; run again later to deploy V2, V3, etc.
fireberry install   → makes the Live version available to your org (run once)

After the first deploy, updating your app is just push + deploy. A new Draft is created automatically when you push against a Live version.


Commands

CommandDescription
fireberry initStore your authentication token
fireberry createCreate a new app
fireberry create-componentAdd component to existing app
fireberry pushUpload changes to the current Draft
fireberry deployPublish the Draft (Draft → Live)
fireberry installInstall the app on your account
fireberry debugDebug component with local dev server
fireberry deleteDelete an app

Marketplace commands:

CommandDescription
fireberry marketplace cloneFork an existing app into a new, independent app
fireberry marketplace deployPublish the app to the public Fireberry marketplace
📘

Note

The marketplace commands are documented in Publish to Marketplace.


fireberry init

Stores your API token for authentication.

fireberry init [tokenid]
ArgumentDescriptionRequired
tokenidYour Fireberry API token (how to get one)No (will prompt if omitted)

Examples:

# Interactive — prompts for token
fireberry init

# Direct — pass token as argument
fireberry init abc123xyz

Token storage location:

PlatformPath
macOS~/Library/Preferences/Fireberry CLI/config.json
Linux~/.config/Fireberry CLI/config.json
Windows%APPDATA%/Fireberry CLI/config.json

fireberry create

Scaffolds a new Fireberry app with your first component using Vite + React.

fireberry create [name]
ArgumentDescriptionRequired
nameApp name (alphanumeric, underscores, hyphens)No (will prompt if omitted)

What it does:

  1. Creates app directory and manifest.yml
  2. Registers app with Fireberry backend
  3. Prompts for your first component:
    • Component name
    • Component type (record, side-menu, or global-menu)
    • Type-specific settings
  4. Scaffolds a Vite + React project for the component
  5. Installs dependencies (@fireberry/sdk, @fireberry/ds)
  6. Builds the component

Example:

fireberry create my-awesome-app

Generated structure:

my-awesome-app/
├── manifest.yml
└── my-awesome-app-component/
    ├── src/
    │   ├── App.jsx
    │   ├── main.jsx
    │   └── App.css
    ├── dist/
    ├── package.json
    ├── vite.config.js
    └── node_modules/

Output example:

Creating app "my-awesome-app"...
✔ App directory "my-awesome-app" created!
📁 Location: /path/to/my-awesome-app
App ID: 1f3a3eca-d551-4cd0-a1d7-4a1f2e431e26

Adding component "my-awesome-app-component"...
Creating Vite React app...
✔ Component created
Installing dependencies...
✔ Dependencies installed
Building component...
✔ Component built

✔ Successfully created component "my-awesome-app-component"!
Component ID: 864fbfb2-e7ca-4e9e-8532-9f02b1e7936f
Type: record
Path: my-awesome-app-component/dist

🎉 Your app is ready!

Next steps:
   cd my-awesome-app
   fireberry push      # Upload to your Draft
   fireberry deploy    # Publish Draft as Live
   fireberry install   # Install on your account (once)
⚠️

Warning

App names must match the pattern ^[a-zA-Z0-9_-]+$. Spaces and special characters are not allowed.


fireberry create-component

Adds a new component to an existing Fireberry app.

fireberry create-component [name] [type]
ArgumentDescriptionRequired
nameComponent name (will be slugified)No (will prompt if omitted)
typerecord, side-menu, or global-menuNo (will prompt if omitted)

What it does:

  1. Prompts for type-specific settings
  2. Creates Vite + React project in [component-name] directory with appropriate template by type
  3. Installs dependencies
  4. Builds the component
  5. Updates manifest.yml with new component

Type-Specific Prompts:

TypeSettings Prompted
recordObject type (number), height (S/M/L/XL)
global-menuDisplay name
side-menuWidth (S/M/L)

Example:

# Interactive mode
fireberry create-component

# With parameters
fireberry create-component analytics-panel global-menu

Output example:

Creating Vite React app for "analytics-panel"...
Running npm create vite@latest...
✔ analytics-panel created
Installing dependencies...
✔ Dependencies installed
Installing Fireberry packages...
✔ Fireberry packages installed
Configuring component...
Building component...
✔ Component built
Adding component to manifest...

✔ Successfully created component "analytics-panel"!
Component ID: 9f02b1e7-8532-864f-bb2e-7936fca4e9e8
Type: global-menu
Path: analytics-panel/dist

Your component "analytics-panel" is ready!
   cd analytics-panel
   npm run dev    # Start development server
   npm run build  # Build for production

Component templates:

  • Record components: Include SDK initialization, context access, example button with API call
  • Other components: Simple structure with Design System theming, ready for customization
📘

Note

Each component gets its own node_modules, package.json, and Vite configuration. This allows components to have different dependencies if needed.


fireberry push

Uploads your component changes to the current Draft version.

fireberry push

Requirements:

  • Must run from your app's root directory (where manifest.yml is located)
  • All component paths must exist and contain index.html

What it does:

  1. Validates your manifest.yml
  2. Validates component settings for each type
  3. Packages each component (tar.gz)
  4. Uploads to the current Draft on Fireberry servers
📘

Note

push targets the Draft version only. If no Draft exists (because the last version is already Live), a new Draft is created automatically before uploading. To make your changes visible to org users, run fireberry deploy after pushing.

Example output:

✔ Manifest loaded successfully
✔ 2 components validated and zipped

Components ready to push:
  1. record-view (864fbfb2...) - 45.23 KB
  2. side-panel (9f02b1e7...) - 12.87 KB

✔ Components pushed successfully

fireberry deploy

Promotes the current Draft to Live, making it available to org users.

fireberry deploy

Requirements:

  • Must run from your app's root directory
  • A Draft version must exist (run fireberry push first)

What it does:

  1. Promotes the current Draft to Live
  2. Deprecates the previous Live version (only from the second deploy onward — on first deploy there is no prior Live version to deprecate)

Example output:

✔ Manifest loaded successfully
✔ App "my-awesome-app" deployed successfully
  Version 1 is now Live
📘

Note

After deploying, the next fireberry push will automatically create a new Draft (V2, V3, etc.) — you don't need to do anything extra.


fireberry install

Installs your app on your Fireberry account.

fireberry install

Requirements:

  • Must run from your app's root directory
  • A Live version must exist (run fireberry push then fireberry deploy first)
📘

Note

You only need to run install once. After that, use fireberry push + fireberry deploy to update your app — installed users will automatically get the new Live version.


fireberry debug

Enables debugging a component with your local development server. Changes appear instantly with hot module replacement.

fireberry debug <component-id> <url>
fireberry debug <component-id> --stop

Requirements:

  • Must run from your app's root directory
  • A Live version must exist — run fireberry push then fireberry deploy first
ArgumentDescriptionRequired
component-idComponent UUID from manifest (case-insensitive)Yes
urlLocal dev server URL: localhost:[port]Yes (unless using --stop)
--stopStop debug mode and revert to productionNo

Starting debug mode:

  1. Start your component's dev server:
cd my-component
npm run dev
# Runs on http://localhost:5173
  1. Enable debug mode:
fireberry debug abc-123-def-456 localhost:5173

Output:

Loading manifest...
✔ Manifest loaded
Starting debug mode for component abc-123-def-456...
✔ Debug mode started!
  Component: abc-123-def-456
  URL: localhost:5173

  To stop debugging, run: fireberry debug abc-123-def-456 --stop

What happens:

  • Fireberry loads the component from your local dev server instead of production
  • Changes appear instantly thanks to Vite's hot module replacement

Stopping debug mode:

fireberry debug abc-123-def-456 --stop

Output:

Loading manifest...
✔ Manifest loaded
Stopping debug mode...
✔ Debug mode stopped for component: abc-123-def-456

The component reverts to loading from the production build specified in your manifest.

Finding component IDs:

Component IDs are in your manifest.yml:

components:
  - type: record
    title: my-component
    id: "abc-123-def-456" # This is your component ID
    path: my-component/dist
📘

Learn More

See Local Development for a complete debugging workflow guide.

Validation:

ErrorSolution
Invalid URL formatUse format localhost:5173 (no http://, no 127.0.0.1)
Component not foundCheck component ID in manifest, or run without ID to see list
Manifest not foundRun from directory containing manifest.yml

fireberry delete

Permanently deletes your app from Fireberry.

fireberry delete

The CLI will ask for confirmation:

? Are you sure you want to delete app my-awesome-app (1f3a3eca...)?
  This action cannot be undone. (y/N)
❗️

Danger

Deletion is permanent and irreversible. The app will be removed from all accounts where it was installed.


Manifest Reference

The manifest.yml file defines your app configuration.

Structure

app:
  id: "uuid"
  name: "string"
  description: "string"
  icon: "string"

components:
  - type: "record"
    title: "string"
    id: "uuid"
    path: "string"
    settings: { ... }

App Properties

PropertyTypeRequiredDescription
idUUIDYesUnique app identifier
namestringYesDisplay name
descriptionstringNoBrief description
iconstringNoPath to an app icon — .svg, .png, .jpg, or .jpeg, non-empty, max 500 KB
❗️

One manifest per app identity

Private apps and marketplace apps use the same manifest format, but they are separate apps with separate app.id values — so each keeps its own manifest.yml in its own folder. See Publish to Marketplace.

Component Properties

PropertyTypeRequiredDescription
typestringYesrecord, side-menu, or global-menu
titlestringYesDisplay name
idUUIDYesUnique component identifier
pathstringYesRelative path to build files
settingsobjectYesType-specific settings

Component Settings by Type

Record Component:

settings:
  iconName: "task" # Icon in toolbar
  iconColor: "#7aae7f" # Hex color
  objectType: 5 # Object type (0 - for all types)
  height: "M" # Component height: S, M, L, or XL

Side Menu Component:

settings:
  iconName: "settings" # Icon in nav
  width: "M" # S, M, or L

Global Menu Component:

settings:
  displayName: "Analytics" # Menu item text
📘

See Also

Component Types for detailed settings documentation.


Multi-Component Example

An app can have multiple components:

app:
  id: "1f3a3eca-d551-4cd0-a1d7-4a1f2e431e26"
  name: "Complete App"
  description: "An app with all component types"

components:
  - type: record
    title: Record Viewer
    id: "comp-1"
    path: record-viewer/dist
    settings:
      iconName: "task"
      iconColor: "#7aae7f"
      objectType: 5
      height: "M"

  - type: side-menu
    title: Quick Actions
    id: "comp-2"
    path: quick-actions/dist
    settings:
      iconName: "lightning"
      width: "M"

  - type: global-menu
    title: Analytics
    id: "comp-3"
    path: analytics/dist
    settings:
      displayName: "Analytics"

Troubleshooting

ErrorSolution
"Unauthorized user"Re-authenticate: fireberry init
"Manifest not found"Run from directory containing manifest.yml
"Component path does not exist"Check that paths in manifest match your build output
"Invalid iconColor format"Use hex format: #RRGGBB
"All component ids must be unique"Each component needs a unique id
Icon rejectedUse .svg/.png/.jpg/.jpeg, non-empty, under 500 KB
"No components found in manifest"An empty components: array is an error — add and build a component first

Next Steps



Did this page help you?