Skip to main content
Once you have built an app with Vibra Code, you can push the entire project to a new GitHub repository with a single tap. This copies all generated source files from the E2B sandbox into a fresh GitHub repo under your account, giving you a permanent copy of the code that you can clone, fork, or continue developing locally.

Connecting your GitHub account

GitHub integration uses OAuth. Your access token is stored securely in the githubCredentials table in Convex, indexed by your Clerk user ID.
1

Open your profile

Tap the Profile tab at the bottom of the Vibra Code app.
2

Tap Connect GitHub

Find the GitHub section and tap Connect. You will be redirected to GitHub’s OAuth authorization page.
3

Authorize Vibra Code

Review the requested permissions and tap Authorize. Vibra Code only requests the minimum permissions needed to create repositories under your account.
4

Return to the app

After authorizing, you are redirected back to the app. Your GitHub username is now displayed, confirming the connection. The backend stores your OAuth access token in the githubCredentials table with the following fields:
  • clerkId — your Clerk user ID
  • accessToken — the GitHub OAuth token
  • username — your GitHub username
  • connectedAt and updatedAt — timestamps for the connection
If you self-host Vibra Code, you must configure GitHub OAuth by setting GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET in vibracode-backend/.env.local. Create an OAuth app in your GitHub Developer Settings and point the callback URL at your deployed backend.

Pushing a project to GitHub

Once your GitHub account is connected, you can publish any session’s code to a new repository.
1

Open the session you want to publish

Navigate to the session containing the app you want to push. The session must be in RUNNING status with a working preview.
2

Open the three-dots menu

Tap the three-dots (⋯) button in the top bar. This opens the session’s action menu.
3

Tap Publish

Select Publish from the menu. This opens the Publish modal (EXPreviewZoomManager+PublishModal.m).
4

Confirm the push

Review the repository name (auto-generated from your app name) and tap Push to GitHub. Vibra Code begins copying the project files from the E2B sandbox to a new GitHub repository.
5

Wait for completion

The push runs as an Inngest background job (push-to-github.ts). You can follow the progress in real time via the session status displayed in the chat.
6

Open your repository

When the push completes, a link to the new GitHub repository appears in the Publish modal. Tap it to view the repository in your browser.

GitHub push status

The push operation goes through its own set of statuses, tracked in the githubPushStatus field on the sessions table in Convex.
StatusMeaning
pendingPush job is queued but has not started yet
in_progressFiles are actively being transferred from the sandbox to GitHub
completedAll files have been pushed successfully — repository URL is available
failedThe push encountered an error; check the logs modal for details
The full repository name and URL are stored in githubRepository and githubRepositoryUrl on the session once the push completes.

What gets pushed

The push copies the entire project directory from the E2B sandbox into a new GitHub repository. For an Expo React Native session this includes:
  • All generated source files (app/, components/, hooks/, etc.)
  • package.json and lock files
  • Configuration files (app.json, tsconfig.json, tailwind.config.js, etc.)
  • Any assets created during the session
The push creates a new repository each time. It does not update an existing repository. If you want to keep iterating on a pushed project, clone the repository locally and push updates manually via Git.

Disconnecting GitHub

To disconnect your GitHub account, go to your profile and tap Disconnect next to the GitHub section. This removes your githubCredentials record from Convex. Previously pushed repositories are not affected.

Build docs developers (and LLMs) love