Guide
Sync a workspace through GitHub or GitLab
A workspace is local by default. Track it and it also becomes a git repository on your machine; connect one remote and that history is kept in a repository you control, where another machine, another person, or CI can read it. Credentials are your own git credentials, and the sensitive parts are never written to the repository.
Git must be installed and on your PATH
What a sync does
Fetch, integrate, then push
The app runs this cycle on its own in auto mode, and when you press Sync now in manual mode. It also runs on launch and every five minutes; in manual mode those only fetch, to count what is waiting.
1. Commit the workspace's changes, if the tree changed
2. Fetch the remote's branch
3. Integrate fast-forward when only the remote moved;
otherwise merge by record, node and field
4. Push this device's commits, retrying once if the
remote moved during the cycleWhen only the remote moved, the app fast-forwards and imports its records, so both machines see the same projects, workflows, and environments. When both moved, the merge below runs first. A push the host refuses for permissions makes the workspace read-only: edits still save and commit locally, the remote's commits still come in, and an explicit retry still attempts the push.
The header shows the state as an icon and a word — synced, pending, syncing, incoming, merge needed, diverged, read-only, or an error — never colour alone. Open it for what the state means, when the workspace last synced, and its last commit.
When both machines changed
APIWeave merges by record, node and field, not by line. Changes that touch different things are combined, positions take the remote's, and an edge whose node the other side deleted is dropped; the commit message lists what the merge settled that way. The result is a real merge commit with both sides as parents.
Where the same field changed differently, the workspace stops at Merge needed and nothing is pushed or imported. Review merge shows each conflicted place side by side under Your copy and Remote copy, with a pick per field or per record. Every other change from both sides is already part of the merge. Settling the last conflict commits, imports, and pushes in one step, and the decisions survive quitting the app.
Another machine
Open the workspace from git
A workspace is identified by the id in workspace.json, not by its name or its URL, so opening the same repository elsewhere gives you the same workspace.
- Open the workspace switcher at the top of the sidebar and choose Open from git….
- Paste the repository URL and choose Open workspace.
- Set the secret values the workspace references; none are in the repository.
The repository is cloned into a scratch folder and checked before anything is created: .apiweave/format.json must be there at a format version this build knows, and every file the format reads must be valid. Otherwise the open is refused, the message names the file and the problem, and nothing is left behind.
Only the repository's default branch is opened. The workspace arrives tracked in auto mode and connected to that URL, so later cycles push your commits and bring in other people's exactly as for any connected workspace.
Secret values are not in a repository, so the new workspace starts with none. Set the values its {{secrets.NAME}} references use, and replace any credential withheld as <SECRET>.
Limits
What git sync does not do yet
Knowing the edges saves a debugging session. These are the real ones in this release.
- The branch is fixed
- A workspace syncs one branch — main for one the app created, or the repository's default branch for one opened from git. There is no branch picker, and the app does not create branches or open pull requests.
- Environment inheritance is not carried
- An environment's base environment is not written to the repository. Put the variables a run needs in the environment itself.
- Local history stays separate
- A workflow's own version history in the app is not its git history. The repository records the workspace's commits; it does not replace the per-workflow revisions.
- Secret values are never in the repository
- There is no encrypted secret material in the repository to unlock. Each machine and each pipeline supplies the values its references need.
New to the canvas? Build a workflow first, then come back and put it in a repository.