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/cliAfter installation, authenticate with your API token:
fireberry initCommands
| Command | Description |
|---|---|
fireberry init | Store your authentication token |
fireberry create | Create a new app |
fireberry create-component | Add component to existing app |
fireberry push | Deploy your app to Fireberry |
fireberry install | Install the app on your account |
fireberry debug | Debug component with local dev server |
fireberry delete | Delete an app |
fireberry init
Stores your API token for authentication.
fireberry init [tokenid]| Argument | Description | Required |
|---|---|---|
tokenid | Your 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 abc123xyzToken storage location:
| Platform | Path |
|---|---|
| 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]| Argument | Description | Required |
|---|---|---|
name | App name (alphanumeric, underscores, hyphens) | No (will prompt if omitted) |
What it does:
- Creates app directory and
manifest.yml - Registers app with Fireberry backend
- Prompts for your first component:
- Component name
- Component type (record, side-menu, or global-menu)
- Type-specific settings
- Scaffolds a Vite + React project for the component
- Installs dependencies (@fireberry/sdk, @fireberry/ds)
- Builds the component
Example:
fireberry create my-awesome-appGenerated 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 # Push to Fireberry
WarningApp 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]| Argument | Description | Required |
|---|---|---|
name | Component name (will be slugified) | No (will prompt if omitted) |
type | record, side-menu, or global-menu | No (will prompt if omitted) |
What it does:
- Prompts for type-specific settings
- Creates Vite + React project in
[component-name]directory with appropriate template by type - Installs dependencies
- Builds the component
- Updates
manifest.ymlwith new component
Type-Specific Prompts:
| Type | Settings Prompted |
|---|---|
| record | Object type (number), height (S/M/L/XL) |
| global-menu | Display name |
| side-menu | Width (S/M/L) |
Example:
# Interactive mode
fireberry create-component
# With parameters
fireberry create-component analytics-panel global-menuOutput 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
NoteEach component gets its own
node_modules,package.json, and Vite configuration. This allows components to have different dependencies if needed.
fireberry push
Deploys your app to Fireberry's servers.
fireberry pushRequirements:
- Must run from your app's root directory (where
manifest.ymlis located) - All component paths must exist and contain
index.html
What it does:
- Validates your
manifest.yml - Validates component settings for each type
- Packages each component (tar.gz)
- Uploads to Fireberry servers
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 install
Installs your app on your Fireberry account.
fireberry installRequirements:
- Must run from your app's root directory
- App must be pushed first (
fireberry push)
NoteAfter installation, your app appears in Fireberry based on its component types. You don't need to run
installagain after updating — justpushyour changes.
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| Argument | Description | Required |
|---|---|---|
component-id | Component UUID from manifest (case-insensitive) | Yes |
url | Local dev server URL: localhost:[port] | Yes (unless using --stop) |
--stop | Stop debug mode and revert to production | No |
Starting debug mode:
- Start your component's dev server:
cd my-component
npm run dev
# Runs on http://localhost:5173- Enable debug mode:
fireberry debug abc-123-def-456 localhost:5173Output:
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 --stopOutput:
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 MoreSee Local Development for a complete debugging workflow guide.
Validation:
| Error | Solution |
|---|---|
| Invalid URL format | Use format localhost:5173 (no http://, no 127.0.0.1) |
| Component not found | Check component ID in manifest, or run without ID to see list |
| Manifest not found | Run from directory containing manifest.yml |
fireberry delete
Permanently deletes your app from Fireberry.
fireberry deleteThe CLI will ask for confirmation:
? Are you sure you want to delete app my-awesome-app (1f3a3eca...)?
This action cannot be undone. (y/N)
DangerDeletion 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"
components:
- type: "record"
title: "string"
id: "uuid"
path: "string"
settings: { ... }App Properties
| Property | Type | Required | Description |
|---|---|---|---|
id | UUID | Yes | Unique app identifier |
name | string | Yes | Display name |
description | string | No | Brief description |
Component Properties
| Property | Type | Required | Description |
|---|---|---|---|
type | string | Yes | record, side-menu, or global-menu |
title | string | Yes | Display name |
id | UUID | Yes | Unique component identifier |
path | string | Yes | Relative path to build files |
settings | object | Yes | Type-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 XLSide Menu Component:
settings:
icon: "settings" # Icon in nav
width: "M" # S, M, or LGlobal Menu Component:
settings:
displayName: "Analytics" # Menu item text
See AlsoComponent 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:
icon: "lightning"
width: "M"
- type: global-menu
title: Analytics
id: "comp-3"
path: analytics/dist
settings:
displayName: "Analytics"Troubleshooting
| Error | Solution |
|---|---|
| "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 |
Next Steps
- Local Development — Master the debug workflow
- SDK — Access context and data in your app
- Design System — Build UIs with Fireberry components
- Component Types — Understand component configurations
Updated about 16 hours ago
