> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rigbox.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# List App Catalog

> Browse the catalog of installable apps and services.



## OpenAPI

````yaml GET /api/v1/app-catalog
openapi: 3.1.0
info:
  title: Rigbox Public API
  description: >-
    Gateway-owned public API for Rigbox. The gateway composes its local
    lifecycle API with service-owned exported specs.
  contact:
    name: Rigbox
    url: https://rigbox.dev
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.rigbox.dev
    description: Production gateway
security: []
tags:
  - name: Workspaces
  - name: CLI
  - name: Observability
  - name: Auth
  - name: API Keys
  - name: Access Control
  - name: Apps
  - name: App Catalog
  - name: Logs
  - name: AI
  - name: Tools
  - name: Snapshots
  - name: SSH Keys
  - name: Templates
  - name: Setup Scripts
  - name: Service Specs
  - name: Deploy
  - name: Community
  - name: User Settings
  - name: Roadmap
  - name: System
paths:
  /api/v1/app-catalog:
    get:
      tags:
        - App Catalog
      summary: List all available catalog apps.
      description: List all available catalog apps that can be installed into a workspace.
      operationId: list_catalog
      responses:
        '200':
          description: List of available catalog app items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogResponse'
components:
  schemas:
    CatalogResponse:
      type: object
      required:
        - items
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/AppCatalogItem'
    AppCatalogItem:
      type: object
      required:
        - id
        - name
        - description
        - icon
        - category
        - min_ram_mb
        - min_disk_mb
      properties:
        app_kind:
          $ref: '#/components/schemas/AppKind'
          description: |-
            What kind of app this is. `Service` (default) is the daemon shape
            every existing recipe uses. `Cli` skips systemd unit, Caddy route,
            and readiness probe — only the install script runs. See `AppKind`.
        category:
          type: string
        configurable_params:
          type: array
          items:
            $ref: '#/components/schemas/ParamSpec'
          description: >-
            User-configurable parameters for this app.

            Values are submitted at install time and resolved via
            `{PARAM_<KEY>}`

            placeholders in install scripts, exec_start, and config files.
        description:
          type: string
        destructive_delete:
          type: boolean
          description: >-
            If true, deletion destroys user-modifiable files (e.g. scaffolded
            starter code).

            Requires `?force_delete=true` and the UI renders extra confirmation

            (type app name or check a warning box).
        icon:
          type: string
        id:
          type: string
        incompatible_templates:
          type: array
          items:
            type: string
          description: >-
            Template IDs that already include this app (e.g.
            `["chat-app-starter"]`).

            Installing on workspaces created from these templates is blocked.
        min_disk_mb:
          type: integer
          format: int32
          description: Minimum disk space hint (MB). Informational only - not enforced.
          minimum: 0
        min_ram_mb:
          type: integer
          format: int32
          description: Minimum RAM hint (MB). Informational only - not enforced.
          minimum: 0
        name:
          type: string
        preview:
          type: boolean
          description: Whether this item is in preview (feature-flagged).
        system_tags:
          type: array
          items:
            type: string
          description: |-
            Author-declared discovery tags. Merged into the auto-generated
            `["catalog:{id}-{ws}", "catalog"]` tags on the installed app.
    AppKind:
      oneOf:
        - allOf:
            - $ref: '#/components/schemas/ServiceSpec'
            - type: object
              required:
                - kind
              properties:
                kind:
                  type: string
                  enum:
                    - service
        - type: object
          required:
            - kind
          properties:
            kind:
              type: string
              enum:
                - cli
      description: >-
        Whether a catalog item is a long-running service or an interactive CLI.


        `Service(spec)` — historical default. The install script runs, a systemd

        unit is built from `spec.exec_start`, a Caddy route is registered
        against

        `spec.port` + `spec.subdomain_suffix`, and `spec.health` drives
        readiness.

        Every existing recipe (Hermes dashboard, OpenClaw gateway, Jupyter, …)

        is a `Service`. Hermes/OpenClaw are still Service items even though they

        also install a user-invokable CLI — the registered catalog subject is
        the

        daemon; the CLI in PATH is a side-effect of install.sh.


        `Cli` — install-only. The binary lives in `$PATH` and the user invokes
        it

        interactively over SSH (claude, codex, opencode, kilocode, …). No
        systemd

        unit, Caddy route, or health probe is produced. The App row is still

        registered so the workspace UI shows the agent as installed.
    ParamSpec:
      type: object
      description: >-
        One configurable parameter declared by a template expected app or
        catalog item.


        The `key` is used as the `{PARAM_<KEY>}` placeholder (upper-cased) in

        install scripts, exec_start, and config_file JSON values.
      required:
        - key
        - label
        - param_type
      properties:
        default:
          type: string
          description: Pre-filled value (empty string = no default).
        description:
          type: string
          description: Longer description / hint text shown below the field.
        group:
          type:
            - string
            - 'null'
          description: Visual group header for related params.
        help_url:
          type:
            - string
            - 'null'
          description: Help URL (e.g. docs for getting an API key).
        key:
          type: string
          description: Machine key, e.g. `"telegram_bot_token"`.
        label:
          type: string
          description: Human-readable label for the UI.
        options:
          type: array
          items:
            $ref: '#/components/schemas/ParamOption'
          description: Selectable options for `ParamType::Select`.
        order:
          type: integer
          format: int32
          description: Display order within the group (lower = higher).
        param_type:
          $ref: '#/components/schemas/ParamType'
          description: Determines the UI element and basic validation.
        required:
          type: boolean
          description: If true, deploy is blocked when the value is empty.
        sensitive:
          type: boolean
          description: If true, render as password field and mask in API responses.
        validation_pattern:
          type:
            - string
            - 'null'
          description: Optional regex the submitted value must match.
    ServiceSpec:
      type: object
      description: >-
        Account-level service spec that runs a background process inside
        workspaces.

        Working directory is always /home/developer.
      required:
        - id
        - user_id
        - name
        - exec_start
        - setup_script
        - env_vars
        - restart_policy
        - auto_enable
        - source
        - created_at
        - updated_at
      properties:
        app_id:
          type:
            - string
            - 'null'
        auto_enable:
          type: boolean
        created_at:
          type: string
          format: date-time
        env_vars:
          type: object
          additionalProperties:
            type: string
          propertyNames:
            type: string
        environment_file:
          type:
            - string
            - 'null'
          description: Optional path to an environment file for the service.
        exec_start:
          type: string
        id:
          type: string
          format: uuid
        name:
          type: string
        restart_policy:
          type: string
        setup_script:
          type: string
        source:
          type: string
        updated_at:
          type: string
          format: date-time
        user_id:
          type: string
        workspace_id:
          type:
            - string
            - 'null'
    ParamOption:
      type: object
      description: A selectable option for `ParamType::Select` fields.
      required:
        - value
        - label
      properties:
        label:
          type: string
        value:
          type: string
    ParamType:
      type: string
      description: Data type for validation + UI element selection.
      enum:
        - string
        - secret
        - email
        - url
        - number
        - boolean
        - select
        - textarea

````