GitSync keeps a space's workflows mirrored to a GitHub repository, so your automation lives alongside your other code with real version history, pull requests, and review. Setting it up takes two parts:
Connect Tines 3B to GitHub with a GitHub App.
Turn on GitSync for a space and point it at a repository.
This guide walks through both.
Note: You'll need permission to manage the space and to create a connector in your workspace.
Why a GitHub App
Tines 3B offers a few ways to authenticate with GitHub, but GitSync steers you to the GitHub App on purpose. Compared to a personal access token or user OAuth, a GitHub App gives you webhooks that tell Tines 3B about pushes automatically, pull request tracking, and installs scoped to only the repositories you choose. That combination is what makes syncing feel live rather than manual.
Part 1: Create the GitHub App connector
Tines 3B can build the app for you from a preconfigured template, so you don't have to fill out GitHub's app form by hand.
Open the connectors screen, search for GitHub and choose the GitHub connector.
Select GitHub App as the connection type.
If you want the app to live under a GitHub organization instead of your personal account, enter the organization login (for example, my-org) in the optional GitHub organization field.
Click Create GitHub App. Tines 3B opens GitHub with a preconfigured app for you to review and create.
Review and confirm the app in GitHub. The app is created as a private app named after your workspace, described as syncing workflows between Tines 3B and your repositories.
Once the app exists, Tines 3B fills in the app ID, private key, and installation ID automatically. You don't copy or paste any credentials.
Install the app on your repositories
After the app is created, GitHub prompts you to install it. Click Install GitHub App and choose the repositories you want Tines 3B to sync with. You can install it on a single repository, several, or all of them, and change that selection later in GitHub.
When the connector shows GitHub App installed, you're done with this part. You can optionally upload a logo for the app on its GitHub settings page, since GitHub has no way to set one during creation.
What the app is allowed to do
The generated app requests only the access GitSync needs:
Contents (read and write). So Tines 3B can read and push your workflow files.
Metadata (read). Basic repository information GitHub requires.
Pull requests (read and write). So Tines 3B can open and track pull requests.
Statuses (read and write). So Tines 3B can report sync status on commits.
It also subscribes to push and pull request events, which is how Tines 3B hears about changes made on GitHub.
Configuring an existing app instead
If you already have a GitHub App, or you're on GitHub Enterprise Server, you can enter its details manually rather than creating a new one. In the connector, use the manual option and provide:
App ID. Found under About on the app's settings page.
Private key. The .pem file you generate under Private keys on the app's settings page.
Installation ID. Read from the URL after installing the app, for example the 12345678 in https://github.com/settings/installations/12345678.
Note: A couple of things to keep in mind:
The setup link Tines 3B generates is single use and expires after 10 minutes, so if it stops working, start the create flow again.
Manual entry is the right path for GitHub Enterprise Server, since the guided flow targets github.com.
Part 2: Turn on GitSync for a space
GitSync is configured per space, so each space can mirror to its own repository or its own directory within a shared one.
Open the space's settings and find the GitSync card.
Toggle GitSync on.
Enter the Repository URL. It must be an https:// URL, and it must not contain a username or password.
Optionally set a Directory. Leave it blank to sync with the repository root, or enter a path to sync this space with a subdirectory instead. Everything outside that directory, including other spaces or an existing monorepo's code, is left untouched.
Choose the Connector you created in Part 1. If your GitHub App connector doesn't yet allow the repository's host, connecting will add that host to the connector's allowed URLs, as long as you have permission to change them.
Click Connect.
Note: Two spaces can share one repository, but each must own a directory that doesn't overlap another, so they don't rewrite the same paths against each other.
Sync and keep in sync
After connecting, Tines 3B mirrors the space to the repository. Use the Sync button on the GitSync card to sync on demand. The card shows when the space last synced, when a sync is in progress, and any error from the most recent attempt.
From then on, syncing runs in both directions:
Pushes from Tines 3B. Changes you make to workflows are pushed to the repository.
Pushes from GitHub. Because the GitHub App registered a webhook when it was created, a push to the repository tells Tines 3B to pull the change back in automatically. There's nothing extra to configure.
Note: The sync is event-driven, not scheduled. When you push to the repository, GitHub notifies Tines 3B through the GitHub App's webhook, and Tines 3B pulls the change right away, usually within seconds. There's no polling interval and no fixed delay to wait out.
Requirements and good-to-knows
A few behaviors are worth knowing before you rely on it:
The default branch must be "main". GitSync requires the repository's default branch to be main. If it's something else, change it and sync again.
Protected branches are fine. If the repository only accepts pull requests to main, changes to live workflows reach the remote with the next merged pull request rather than a direct push.
Disconnecting is safe. Turning GitSync off removes the sync configuration for the space. Your workflows are not deleted.
Troubleshooting
If a sync fails, the GitSync card shows the error inline. Common causes:
The connector doesn't allow the repository's host. Reconnect so Tines 3B can widen the connector's allowed URLs, or update the connector's allowed URLs directly.
The default branch isn't "main". Set the repository's default branch to main, then sync again.
The app isn't installed on the repository. Confirm in GitHub that the GitHub App is installed on the repository you're syncing with.
Once the connector is installed and the space is connected, GitSync stays current on its own, and the Sync button is there whenever you want to push a change through right away.
