> ## Documentation Index
> Fetch the complete documentation index at: https://cerebrium-kyle-phase0-docs-fixes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Cerebrium's documentation MCP server is available at https://cerebrium.ai/docs/mcp for searching and querying these docs directly. Install the Cerebrium agent skill with `npx skills add https://cerebrium.ai/docs`. Append .md to any docs page URL to fetch that page as plain Markdown. API keys and authentication tokens are created in the Cerebrium dashboard at https://dashboard.cerebrium.ai.

# Create GitHub App

> Create a new app linked to a GitHub repository for automatic deployments.



## OpenAPI

````yaml https://s3.eu-west-1.amazonaws.com/www.cerebrium.ai/openapi_spec.json post /v2/projects/{project_id}/apps/github
openapi: 3.0.0
info:
  title: Cerebrium REST API
  description: >-
    REST API for interacting with Cerebrium. This API is mainly used by the
    Cerebrium CLI client, please run `pip install cerebrium` to install it.
  version: 1.0.0
  license:
    name: Proprietary
    url: https://www.cerebrium.ai/terms-of-service
servers:
  - url: https://rest.cerebrium.ai
security: []
paths:
  /v2/projects/{project_id}/apps/github:
    post:
      tags:
        - Apps
        - GitHub Integration
      summary: Create GitHub App
      description: >-
        Create a new app linked to a GitHub repository for automatic
        deployments.
      operationId: createGithubApp
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                baseImage:
                  description: >-
                    Base Docker image for the app. Default:
                    debian:bookworm-slim.
                  type: string
                cerebrium_toml:
                  description: Verbatim contents of the cerebrium.toml configuration file.
                  type: string
                cliVersion:
                  description: Version of the client initiating the deployment.
                  type: string
                compute:
                  description: >-
                    Compute type(s) for the app, in priority order. A single
                    value or a list of up to 5. Valid values: ADA_L4, ADA_L40,
                    AMPERE_A10, AMPERE_A100_40GB, AMPERE_A100_80GB, HOPPER_H100,
                    HOPPER_H200, BLACKWELL_B200, BLACKWELL_RTX6000, CPU, INF2,
                    TRN1, TURING_T4. Default: CPU.
                  type: array
                computeTier:
                  description: >-
                    Compute tier for the app. Valid values: interruptible,
                    protected.
                  type: string
                containerRuntime:
                  description: 'Container runtime version. Valid values: v1, v2.'
                  type: string
                cooldownPeriodSeconds:
                  description: >-
                    Cooldown period in seconds before an idle replica scales
                    down. Range: 0-3600. Default: 10.
                  type: integer
                cpu:
                  description: >-
                    Number of CPU cores to allocate. Range: 0.25-192. Default:
                    2.
                  type: number
                deploymentInitializationTimeout:
                  description: >-
                    Maximum time in seconds to wait for a deployment to
                    initialize. Range: 60-830. Default: 600.
                  type: integer
                disableAuth:
                  description: 'Disable authentication on the app endpoint. Default: false.'
                  type: boolean
                dockerAuth:
                  description: >-
                    Credentials for pulling the base image from a private Docker
                    registry.
                  type: string
                dockerfilePath:
                  description: Path to a Dockerfile to build the app from.
                  type: string
                entrypoint:
                  description: Command to start a custom runtime app, as a list of strings.
                  type: array
                evaluationIntervalSeconds:
                  description: >-
                    Interval in seconds between autoscaling evaluations. Range:
                    6-300.
                  type: integer
                githubAutoDeploy:
                  description: >-
                    Automatically deploy new commits pushed to the configured
                    branch.
                  type: boolean
                githubBranch:
                  description: 'Git branch to deploy. Default: main.'
                  type: string
                githubPath:
                  description: Path within the repository containing the app.
                  type: string
                githubRepo:
                  description: GitHub repository to deploy from, in owner/repo format.
                  type: string
                gpuCount:
                  description: 'Number of GPUs to allocate. Range: 0-16. Default: 0.'
                  type: integer
                healthcheckEndpoint:
                  description: >-
                    HTTP endpoint used to check that a custom runtime app is
                    healthy.
                  type: string
                loadBalancingAlgorithm:
                  description: >-
                    Load balancing algorithm. Valid values: round-robin,
                    first-available, min-connections, random-choice-2.
                  type: string
                logLevel:
                  description: >-
                    Log level for the deployment. Valid values: INFO, DEBUG,
                    INTERNAL, ERROR. Default: INFO.
                  type: string
                maxReplicaCount:
                  description: 'Maximum number of replicas. Range: 1-2000. Default: 1.'
                  type: integer
                memory:
                  description: 'Memory allocation in GB. Range: 0.05-1984. Default: 4.'
                  type: number
                minReplicaCount:
                  description: 'Minimum number of replicas. Range: 0-2000. Default: 0.'
                  type: integer
                name:
                  description: >-
                    The name of the app. 3-30 lowercase alphanumeric characters
                    and dashes.
                  type: string
                partialUpload:
                  description: >-
                    Whether the upload contains only files changed since the
                    previous deployment.
                  type: boolean
                port:
                  description: 'Port the app listens on. Range: 0-65535. Default: 8000.'
                  type: integer
                provider:
                  description: >-
                    Cloud provider to deploy to. Valid values: aws, crusoe,
                    nebius. Defaults to an automatically selected provider.
                  type: string
                pythonVersion:
                  description: 'Python version to use. Default: 3.10.'
                  type: string
                readycheckEndpoint:
                  description: >-
                    HTTP endpoint used to check that a custom runtime app is
                    ready to receive traffic.
                  type: string
                region:
                  description: >-
                    Region to deploy to. Defaults to an automatically selected
                    region.
                  type: string
                replicaConcurrency:
                  description: >-
                    Maximum concurrent requests per replica. Defaults to 100 for
                    CPU apps and 1 for GPU apps.
                  type: integer
                responseGracePeriodSeconds:
                  description: >-
                    Grace period in seconds for in-flight requests when a
                    replica stops. Range: 16-43200. Default: 900.
                  type: integer
                rollOutDurationSeconds:
                  description: >-
                    Duration in seconds over which to roll out a new version.
                    Range: 0-21600.
                  type: integer
                runtime:
                  description: 'App runtime. Valid values: cortex, custom. Default: cortex.'
                  type: string
                scalingBuffer:
                  description: >-
                    Number of extra replicas to keep available beyond current
                    demand. Must be >= 0.
                  type: integer
                scalingMetric:
                  description: >-
                    Metric used for autoscaling. Valid values: cpu_utilization,
                    memory_utilization, requests_per_second,
                    concurrency_utilization. Default: concurrency_utilization.
                  type: string
                scalingTarget:
                  description: >-
                    Target value for the scaling metric. Must be > 0. Default:
                    100.
                  type: integer
                useUv:
                  description: Use uv for Python package installation.
                  type: boolean
              required:
                - name
                - cliVersion
                - githubRepo
              type: object
      responses:
        '200':
          description: Details of the created GitHub-linked app and its first build.
          content:
            application/json:
              schema:
                properties:
                  appId:
                    description: Unique identifier of the created app.
                    type: string
                  appUrl:
                    description: URL of the app in the dashboard.
                    type: string
                  buildId:
                    description: ID of the build created for this deployment.
                    type: string
                  dashboardUrl:
                    description: URL of the build in the dashboard.
                    type: string
                  internalEndpoint:
                    description: Base URL for invoking the app.
                    type: string
                  jwt:
                    description: Access token for streaming build logs.
                    type: string
                  logUrl:
                    description: URL for retrieving build logs.
                    type: string
                  projectId:
                    description: ID of the project the app belongs to.
                    type: string
                  status:
                    description: Current status of the build.
                    type: string
                type: object
        '400':
          description: >-
            Bad request. The request was malformed or contained invalid
            parameters.
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Human-readable description of the error.
                    type: string
                type: object
        '401':
          description: >-
            Unauthorized. The Authorization header is missing or the token is
            invalid.
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Human-readable description of the error.
                    type: string
                type: object
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Service Account Token authentication. To authenticate API requests:


        1. **Create a Service Account Token:**
           - Go to the [Cerebrium Dashboard](https://dashboard.cerebrium.ai/) and open the **API Keys** page
           - Click **Create Service Account**, name it (e.g., "GitHub Actions CI/CD"), choose an expiry date, and click **Create**
           - **Copy the token** generated for the desired service account

        2. **Use the Token:**
           Include the service account token in the Authorization header of API requests:
           `Authorization: Bearer <your-service-account-token>`

        3. **Best Practices:**
           - Create separate service accounts for different environments (dev, staging, prod)
           - Store tokens securely as secrets in consuming applications or workflows
           - Set appropriate expiry dates and rotate tokens regularly
           - Never commit tokens to source control

        For CI/CD integration examples, see the [CI/CD
        documentation](https://docs.cerebrium.ai/cerebrium/deployments/ci-cd).

````