Connecting your GitHub account
GitHub integration uses OAuth. Your access token is stored securely in thegithubCredentials table in Convex, indexed by your Clerk user ID.
Tap Connect GitHub
Find the GitHub section and tap Connect. You will be redirected to GitHub’s OAuth authorization page.
Authorize Vibra Code
Review the requested permissions and tap Authorize. Vibra Code only requests the minimum permissions needed to create repositories under your account.
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 IDaccessToken— the GitHub OAuth tokenusername— your GitHub usernameconnectedAtandupdatedAt— 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.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.Open the three-dots menu
Tap the three-dots (⋯) button in the top bar. This opens the session’s action menu.
Tap Publish
Select Publish from the menu. This opens the Publish modal (
EXPreviewZoomManager+PublishModal.m).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.
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.GitHub push status
The push operation goes through its own set of statuses, tracked in thegithubPushStatus field on the sessions table in Convex.
| Status | Meaning |
|---|---|
pending | Push job is queued but has not started yet |
in_progress | Files are actively being transferred from the sandbox to GitHub |
completed | All files have been pushed successfully — repository URL is available |
failed | The push encountered an error; check the logs modal for details |
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.jsonand lock files- Configuration files (
app.json,tsconfig.json,tailwind.config.js, etc.) - Any assets created during the session
Disconnecting GitHub
To disconnect your GitHub account, go to your profile and tap Disconnect next to the GitHub section. This removes yourgithubCredentials record from Convex. Previously pushed repositories are not affected.