---
title: Deploy from GitHub
description: Connect a GitHub repository to an app. Every push builds; a push to the production branch goes live, other branches get a preview address.
url: https://agentlab.cresclab.com/docs/en/deploy/github
language: en
updated: 2026-10-08
---

# Deploy from GitHub

Connect a GitHub repository to an app. Every push builds; a push to the production branch goes live, other branches get a preview address.

## How it works

Agent Lab's GitHub App, **Crescendo Agent Lab**, provided by Crescendo Lab, reads the repositories you allow and is told about every push.

- A push to the **production branch** (the repository's default branch unless you change it) builds and goes live on the app's address.
- A push to **any other branch** builds a version with its own preview address and goes live nowhere. If your workspace has an Agent Lab branch with the same name, such as `staging`, it goes live there instead.
- The commit on GitHub shows the result: pending while it builds, then success with the preview address, or failure with a link to the build log.

Nothing about the build changes: the platform detects the framework the same way it does for an upload. See [deploy from source code](https://agentlab.cresclab.com/docs/en/deploy/source-build.md).

> [!NOTE] Not the same as the GitHub integration
> The GitHub integration under **Integrations** lets assistants use GitHub's tools in a conversation. Deploying uses its own connection, set up here.

## 1. Connect GitHub

1. In **Settings › Deploy settings**, select **Connect GitHub**.
2. GitHub asks where to install **Crescendo Agent Lab**: your account or one of your organizations. Choose all repositories or only the ones the apps need.
3. You come back to Agent Lab with the account listed. An organization whose owner has to approve the install shows as requested until they do.

Only people who can manage apps can connect GitHub. To stop deploying, remove the connection here, and uninstall the App on GitHub if you no longer want it to read anything.

## 2. Import a repository

1. On the apps page, select **New app**, then **Import from GitHub**.
2. Pick the account, search for the repository and select it.
3. Check the name, the address label and the production branch. For a monorepo, set the **App path**, such as `apps/web`.
4. Paste the variables the project needs, or add them later.
5. Select **Deploy**. The newest commit on the production branch builds and goes live.

An existing app connects in **Settings › Git**.

## Branches

A git branch goes live in the Agent Lab branch with exactly the same name, automatically: a push to `staging` goes live in your `staging` branch. There is nothing to map. Create the Agent Lab branch first; until it exists, pushes to that git branch only get a preview address. The production branch always goes live on the app's main address. In **Settings › Git** you can change the production branch. **Deploy latest commit** builds the production branch again without a push.

## Limits

- A repository is held to the same limits as an uploaded source: 20,000 files and 512 MB, without `node_modules`, `.git` and `.env.local` / `.env.*.local` files. Committed `.env` and `.env.<mode>` files are kept, as Vite and Next.js expect.
- Git submodules and Git LFS files are not fetched.
- Each push uses build minutes like any other build.
