GitHub
Connect a repository to an app: every push to its branch deploys, and every pull request gets its own preview address.
Connect a repository
In the dashboard, open New app and choose Import from GitHub, or open an existing app's Settings. Press Connect GitHub:
- GitHub asks you to approve Deplane seeing your repositories. The first time, you also install the Deplane app on your GitHub account or organization and choose which repositories it can read.
- Back in the dashboard, pick the repository, the branch (its default branch unless you change it), and, for a monorepo, the folder the app lives in.
Deplane deploys the branch's latest commit right away. From then on:
- A push to the branch deploys it. The commit gets a status on GitHub, pending while it builds and green when the new release runs, linking to the build and to the app. If Deplane rolls the release back automatically because its errors spiked, the commit's status turns to failure. Add
[skip deploy]to a commit message to push without deploying. - The files are those of
deplane deploy. Deplane downloads the commit, keeps the chosen folder, and applies your.gitignoreand.dockerignore..envfiles are never used. The upload limits apply. - Deployments show where each one came from: the commit, its message, and its author.
Disconnect in the app's Settings at any time. Deplane forgets the connection and deletes the app's previews; the app keeps running its current release.
Pull request previews
Every pull request opened from a branch of the same repository gets a preview: its own app at <app>-pr-<number>.deplane.dev, rebuilt on every push to the pull request, with one comment on the pull request that shows its state and address. When the pull request is merged or closed, the preview is deleted.
- A preview runs 1 instance of your plan's smallest size, with the app's port and health check, and no workers or cron jobs.
- It gets the app's variables except
DATABASE_URLand any other variable that holds your database's password or address (pg--<name>), so a preview never writes to your production database. The database also refuses connections from previews. - A preview can have its own empty database. Turn on "Give each preview its own empty database" in the app's GitHub settings (off by default). Each new preview then gets an empty Postgres 17 database at the smallest size as its
DATABASE_URL; your app's migrations and seed fill it. No production data is copied. Its name ispr<number>-<8 characters>, and it shows under the preview, not on the Databases page. - Preview databases are free: they do not count toward your plan's instances or memory, or the 5 databases a team can have. A team has at most 3 at a time. - A preview deploys without waiting for its database. The database is attached as soon as it is ready, usually within a minute or two, and the preview restarts with it. Make your app start without a database, or retry its first connection. - The comment on the pull request says when the database is not ready yet, and when a preview has none: the team already has 3, or Deplane is short of database space right now. A database that did not start is replaced on the next push. - Preview databases need previews on. - They are not backed up. A preview's database is deleted for good with the preview (pull request closed, previews turned off, app disconnected or deleted), and when you turn the option off. It is not listed under Recently deleted and cannot be restored. - Pull requests from forks get no preview. Their code would otherwise run with your variables. A maintainer can push the branch to the repository to get one.
- An app has at most 3 previews at a time, and previews count toward your plan's apps and instances. When there is no room, the comment on the pull request says so.
- Turn previews, and preview databases, off for an app in its Settings.
What Deplane can do on GitHub
The Deplane app can only read the code of the repositories you choose, set commit statuses, and write its one comment on pull requests. It cannot push code, change settings, or read other repositories. Access tokens are created per job, limited to the one repository, and never stored.
Your approval to list repositories lasts an hour and is used only to connect apps; Deplane does not keep your GitHub sign-in. Removing a repository from the Deplane app on GitHub, or uninstalling it, disconnects the apps that used it.
Sign in with GitHub
Once your Deplane account is linked to GitHub on the Account page, you can sign in with GitHub. Deplane matches GitHub's numeric account ID, never your email address, and still asks for your second factor.
This page is also available as Markdown. AI agents can start at /llms.txt.