diff --git a/content/docs/configuration/librechat_yaml/object_structure/interface.mdx b/content/docs/configuration/librechat_yaml/object_structure/interface.mdx index 554453bd9..2654122c4 100644 --- a/content/docs/configuration/librechat_yaml/object_structure/interface.mdx +++ b/content/docs/configuration/librechat_yaml/object_structure/interface.mdx @@ -1212,20 +1212,25 @@ interface: ## marketplace -Enables/disables access to the Agent Marketplace. +Enables/disables access to the Agent Marketplace and, optionally, defines custom categories used to organize agents within it. > **Deprecated for permission management.** Seeds the `MARKETPLACE` role permission at startup for the default `USER` role only. Prefer the [Admin Panel](/docs/features/admin_panel). **Key:** **Sub-keys:** **Default:** @@ -1242,3 +1247,90 @@ interface: marketplace: use: true # Enable marketplace access ``` + +### categories + +Customizes the categories displayed in the Agent Marketplace. The list is synced to the database on startup: new entries are created, existing entries are updated, and custom entries removed from the YAML are deleted from the database. Categories are only synced when `marketplace.use` is `true`. + +**Key:** + + +**Sub-keys:** + + + +**`list` item sub-keys:** + + + +**Example:** +```yaml filename="interface / marketplace / categories" +interface: + marketplace: + use: true + categories: + enableDefaultCategories: true # Built-in categories appear first + list: # Order here determines marketplace order + - value: "Education" + description: "Educational agents." + - value: "productivity" + label: "Productivity & Focus" # Optional, defaults to value + description: "Productivity agents." +``` + +#### Localized labels and descriptions + +`label` and `description` are displayed verbatim unless they start with `com_`, in which case the client resolves them as UI translation keys and renders the string for each user's own language. Omitting `label` displays `value` exactly as typed, in every locale. + +```yaml +list: + - value: "support" + label: "com_agents_category_aftersales" # localized per user + description: "com_agents_category_aftersales_description" + - value: "Education" # shown as "Education" everywhere + description: "Educational agents." +``` + + + A `com_` key must already exist in LibreChat's bundled locale files. Unknown keys are rendered + literally, so a typo shows up in the UI as `com_agents_category_typo` rather than falling back to + the category name. + + +#### Overriding built-in categories + +Declaring a `value` that matches a built-in category overrides that category's `label` and `description` instead of creating a new one. Fields you omit keep their existing values, so declaring only `value` changes nothing but visibility. + +An overridden category stays a built-in: it keeps its original position in the marketplace, is never deleted when removed from `list`, and remains active even when `enableDefaultCategories` is `false`. That last point is how you keep a subset of the built-in categories while hiding the rest. + +```yaml filename="interface / marketplace / categories" +interface: + marketplace: + use: true + categories: + enableDefaultCategories: false # hide the built-in categories... + list: + - value: "aftersales" # ...except this one, renamed and kept visible + label: "Customer Success" + - value: "Education" + description: "Educational agents." +``` + +> **Note:** Removing a custom category from `list` deletes it from the database on the next startup. Built-in categories are never deleted, `enableDefaultCategories: false` only hides them. + +> **Note:** The `general` category stays active even when `enableDefaultCategories` is `false`, because it is the category assigned to agents created without one. Hiding it would leave those agents reachable only from the "All" tab. You can still rename it by declaring `general` in `list`.