Chapter 12: Ecosystem & Reference 🟡 BETA

General Bots supports full white-label customization, allowing you to rebrand the entire platform.

Overview

White-labeling allows you to:

  • Replace “General Bots” branding with your own product name
  • Enable/disable specific apps in the suite
  • Set a default theme for all users
  • Customize logos, colors, and other visual elements
  • Control which APIs are available based on enabled apps

Configuration File

The white-label settings are defined in the .product file located in the root of the botserver directory.

File Location

botserver/
├── .product          # White-label configuration
├── src/
├── Cargo.toml
└── ...

Configuration Format

The .product file uses a simple key=value format:

# Product Configuration File
# Lines starting with # are comments

# Product name (replaces "General Bots" throughout the application)
name=My Custom Platform

# Active apps (comma-separated list)
apps=chat,drive,tasks,calendar

# Default theme
theme=sentient

# Optional customizations
logo=/static/my-logo.svg
favicon=/static/favicon.ico
primary_color=#3b82f6
support_email=support@mycompany.com
docs_url=https://docs.mycompany.com
copyright=© {year} {name}. All rights reserved.

Configuration Options

name

Type: String
Default: General Bots

The product name that replaces “General Bots” throughout the application, including:

  • Page titles
  • Welcome messages
  • Footer text
  • Email templates
  • API responses
name=Acme Bot Platform

apps

Type: Comma-separated list
Default: All apps enabled

Specifies which apps are visible in the suite without turning Preview mode on. The shipped configuration lists only the stable surface:

apps=chat,drive,vibe

Applications not listed here are not removed — they are declared under preview_apps instead. To promote an app out of Preview mode, move its id from preview_apps to apps.

Example — promoting the advanced apps:

apps=chat,drive,vibe,mail,sheet

preview_apps

Type: Comma-separated list
Default: Empty

Applications that are installed and fully usable, but withheld from the launcher and the sidebar until the user turns on the Preview switch in the left sidebar (#1348). The shipped configuration declares every application except the three stable ones.

apps=chat,drive,vibe
preview_apps=admin,analytics,attendant,automations,banking,billing,biometry,
             browser,calendar,campaigns,canvas,compliance,concierge,crm,database,
             designer,docs,editor,fraud,goals,handoff,hr,integrations,jukebox,kyc,
             learn,lists,mail,marketing,meet,memory,minutes,monitoring,notes,o365,
             paper,people,photos,plan,player,pos,products,project,recycle,research,
             retail,sales,settings,sheet,slides,social,sources,store,tasks,tax,
             templates,terminal,tickets,timeclock,timer,vdi,video,vision,weather,
             workspace

Rules that matter when editing these lists:

  • Never list the same id in both lists. A preview app must be absent from apps; that absence is what keeps it out of the launcher.
  • Ids must exist. They are matched against the catalog in botserver/src/apps/registry.rs and the feature map in botserver/src/apps/mod.rs::is_app_compiled. An id in neither place is ignored by the launcher.
  • Core surfaces stay visible. settings, auth and admin are always enabled regardless of these lists.
  • Preview controls visibility, not installation. Preview apps keep working; only their launcher entry is withheld.

Stability classification

As of September 2026:

StabilityAppsNotes
Stablechat, drive, vibeSupported surface
Preview — advancedmail, sheetFunctional; expected to reach stable next
Preview — in testdocs, slidesUnder active test; capability may change
Previewevery other app in the catalogUsable, not yet supported

theme

Type: String
Default: sentient

Sets the default theme for new users and the login page.

Available themes:

ThemeDescription
sentientDefault neon green theme
darkDark mode with blue accents
lightLight mode with blue accents
blueBlue theme
purplePurple theme
greenGreen theme
orangeOrange theme
cyberpunkCyberpunk aesthetic
retrowave80s retrowave style
vapordreamVaporwave aesthetic
y2kglowY2K neon style
arcadeflashArcade game style
discofeverDisco theme
grungeera90s grunge style
jazzageJazz age gold
mellowgoldMellow gold tones
midcenturymodMid-century modern
polaroidmemoriesVintage polaroid
saturdaycartoonsCartoon style
seasidepostcardBeach/ocean theme
typewriterTypewriter/monospace
3dbevel3D beveled style
xeroxuiClassic Xerox UI
xtreegoldXTree Gold DOS style
theme=dark

Type: URL/Path (optional)
Default: General Bots logo

URL or path to your custom logo. Supports SVG, PNG, or other image formats.

logo=/static/branding/my-logo.svg
logo=https://cdn.mycompany.com/logo.png

favicon

Type: URL/Path (optional)
Default: General Bots favicon

URL or path to your custom favicon.

favicon=/static/branding/favicon.ico

primary_color

Type: Hex color code (optional)
Default: Theme-dependent

Override the primary accent color across the UI.

primary_color=#3b82f6
primary_color=#e11d48

support_email

Type: Email address (optional)
Default: None

Support email displayed in help sections and error messages.

support_email=support@mycompany.com

docs_url

Type: URL (optional)
Default: https://docs.generalbots.org

URL to your documentation site.

docs_url=https://docs.mycompany.com

Type: String (optional)
Default: © {year} {name}. All rights reserved.

Copyright text for the footer. Supports placeholders:

  • {year} - Current year
  • {name} - Product name
copyright=© {year} {name} - A product of My Company Inc.

API Integration

Product Configuration Endpoint

The current product configuration is available via API:

GET /api/product

Response:

{
  "name": "My Custom Platform",
  "apps": ["chat", "drive", "tasks", "calendar"],
  "theme": "dark",
  "logo": "/static/my-logo.svg",
  "favicon": null,
  "primary_color": "#3b82f6",
  "docs_url": "https://docs.mycompany.com",
  "copyright": "© 2025 My Custom Platform. All rights reserved."
}

App-Gated APIs

When an app is disabled in the .product file, its corresponding APIs return 403 Forbidden:

{
  "error": "app_disabled",
  "message": "The 'calendar' app is not enabled for this installation"
}

UI Integration

JavaScript Access

The product configuration is available in the frontend:

// Fetch product config
const response = await fetch('/api/product');
const product = await response.json();

console.log(product.name);  // "My Custom Platform"
console.log(product.apps);  // ["chat", "drive", "tasks"]

Conditional App Rendering

The navigation menu automatically hides disabled apps. If you need to check manually:

function isAppEnabled(appName) {
  return window.productConfig?.apps?.includes(appName) ?? false;
}

if (isAppEnabled('calendar')) {
  // Show calendar features
}

Examples

Example 1: Simple Chat Bot

A minimal setup for a chat-only bot:

name=Support Bot
apps=chat
theme=dark
support_email=help@example.com

Example 2: Internal Tools Platform

An internal company platform with productivity tools:

name=Acme Internal Tools
apps=chat,drive,tasks,docs,calendar,meet
theme=light
logo=/static/acme-logo.svg
primary_color=#1e40af
docs_url=https://wiki.acme.internal
copyright=© {year} Acme Corporation - Internal Use Only

Example 3: Customer Service Platform

A customer service focused deployment:

name=ServiceDesk Pro
apps=chat,tasks,analytics,admin,monitoring
theme=blue
support_email=admin@servicedesk.com
docs_url=https://help.servicedesk.com

Example 4: Full Suite

Enable all features (default behavior):

name=Enterprise Suite
apps=chat,mail,calendar,drive,tasks,docs,paper,sheet,slides,meet,research,sources,analytics,admin,monitoring,settings
theme=sentient

Reloading Configuration

The product configuration is loaded at server startup. To apply changes:

  1. Edit the .product file
  2. Restart the server
# Restart the server to apply changes
systemctl restart botserver
# or
docker-compose restart botserver

Environment Variable Override

You can override the .product file location using an environment variable:

export PRODUCT_CONFIG_PATH=/etc/myapp/.product

Best Practices

  1. Version Control: Include the .product file in your deployment configuration (but not in the main repo if it contains sensitive branding)

  2. Minimal Apps: Only enable the apps your users need to reduce complexity and improve performance

  3. Consistent Branding: Ensure your logo, colors, and theme work well together

  4. Documentation: Update your docs_url to point to customized documentation for your users

  5. Testing: Test the UI with your specific app combination to ensure navigation works correctly

Troubleshooting

Apps Not Hiding

If disabled apps still appear:

  1. Clear browser cache
  2. Verify the .product file syntax
  3. Check server logs for configuration errors
  4. Restart the server

API Returns 403

If APIs return “app_disabled” errors:

  1. Check the apps list in .product
  2. Ensure the app name is spelled correctly (lowercase)
  3. Restart the server after changes

Branding Not Updating

If the product name doesn’t change:

  1. Hard refresh the browser (Ctrl+Shift+R)
  2. Clear application cache
  3. Verify the name field in .product
  4. Check for syntax errors (missing = sign)