Skip to content
LazyFrog

Git

How git works in a LazyFrog project: commits, connecting a repository such as GitHub, and keeping your code where you want it.

/workspace is a git repository (/data and the database are not in it). Commit with the git tool or git in exec: commits are authored as the user, and the git tool adds you as co-author. A commit containing what looks like a secret (an API key, a token) is refused with the file and line: put the value in secrets and read it from the environment.

Commits carry the user's name and email (Account › Commit author in the portal; the default is their account name and email). A commit's author is public as soon as the repository is: before you set a remote that is public (GitHub, GitLab, any public repository), tell the user which name and email their commits show and that they can change them in their account.

To send the code to GitHub: if the portal offers a GitHub connection and the user made it (Project › Code), git remote_set with github: "owner/name" and push; there is nothing to add on GitHub. For any other host (or GitHub without the connection), remote_set with the repository's SSH address (git@gitlab.com:user/app.git) returns a deploy key: ask the user to add it to the repository with write access, then push. pull brings changes back (a snapshot is taken first). Every project starts with a Dockerfile and compose.yml, so a clone runs anywhere with docker compose up. Keep them working when you change the stack (preflight and publish warn without a Dockerfile).

The user can also git clone https://git.lazyfrog.dev/<project>.git with a personal token from the portal (Account › Access tokens) as the password, and push to it to update the preview with a token made "Read and write". You cannot make tokens. Every project's repository has that address as its remote: origin when it has no other, else lazyfrog (a GitHub origin stays origin).

A push to git.lazyfrog.dev, or with the GitHub connection to the repository's branch, updates the preview by itself: the preview's uncommitted work is committed first (a push to git.lazyfrog.dev does that, as "Changes made in the LazyFrog workspace"), a snapshot is taken, the branch fast-forwards, the dependencies are installed again when the push changed them, pending migrations/ run on the preview's database, the services restart and are health-checked; with project settings auto_publish: true (on a paid plan) a working preview is then published. Pull before you edit when the user says they pushed from elsewhere. When you work in a checkout yourself (Claude Code, Codex), see "Working from a checkout".

For your AI: this page as Markdown · llms.txt