Skip to content
Source

Switch from GitHub

Your team works on GitHub today: repositories, Actions, secrets, branch protection, and maybe coding agents that use your own token. You want to move to TanStack Source, one step at a time, without breaking the way you work.

Do the steps in this order. Each step works on its own, so you can stop after any step and continue later.

The same things, by their names here

On GitHubOn TanStack Source
ghsrc, with the same commands and flags. See Install and set up the CLI.
GitHub Actions in .github/workflows/*.ymlTypeScript workflows in .source/workflows/*.ts. src ci convert writes them.
Actions secretsCI secrets, with one value for each trust level
Actions variablesCI variables. See CI variables.
A .env file that you send aroundThe vault. See Keep private files out of git.
A bucket or CDN for the images and videos of your siteAssets, next to the repository. See Assets.
Branch protectionBranch rules
An agent with your tokenAn agent session, with its own token for one repository
A review or triage agent in GitHub ActionsThe software factory, which runs its agents on the forge

Organizations, teams, roles, issues, pull requests, reviews and labels work as they do on GitHub. So do these:

1. Import the repository

Import from GitHub copies the git history, and every issue and pull request with their numbers. You need a GitHub token, and the import takes a few minutes for 2,000 items.

If outside people keep using GitHub, sync with GitHub after the import. New issues, pull requests and comments on GitHub then come here, and your team's replies go to GitHub.

If your repositories are in a GitHub organization that you own, import the whole organization. It brings the name, the profile and the image of the organization, and the repositories that you pick.

2. Move your clones

Install src and log in. Then, in each clone:

git remote set-url origin https://gitflare.t-zlak97.workers.dev/<owner>/<repo>.git
alias gh=src

Your git and gh habits stay the same.

3. Move CI

src ci convert

It converts each workflow in .github/workflows/, and marks each part that it cannot convert with // TODO(convert). Move from GitHub Actions walks you through the TODOs, the secrets and the first run.

4. Protect the default branch

Add a branch rule that requires a pull request and your checks before a merge. See Branch rules.

5. Bring the team and the agents

  1. Bring your team: make the organization and invite people. If you imported the organization, its members who had signed in here with GitHub got an invitation already.
  2. Connect your coding agent: give each agent a session in place of your token.
  3. Connect over MCP or use the REST API for your tools and bots.

6. Move your pull request agents to the factory

On GitHub, an agent that reviews pull requests usually runs in GitHub Actions. This has two problems:

  • The workflow and the prompt are files in the repository. Anyone can read them, and a pull request can change them.
  • A pull request from a fork gets no secrets, so the agent cannot call its model there.

The software factory runs its agents on the forge:

  • The settings and the prompts are on the forge. A custom agent file comes from the vault, or from the default branch only, never from a pull request.
  • The model and its key stay on the forge. The sandbox of the agent gets no model key and no forge token.
  • A pull request from a fork gets the same audit, value check and review as any other.

You do not need to convert your agent workflows. The security audit, Architecture and PR impact are on by default. Turn on the other agents that you want. Then read the Factory panel on your next pull request.

Done

Your code, issues, pull requests, CI and team are on TanStack Source. Each agent works with its own token, and no merge reaches the default branch without a person.

What works in another way

The import:

  • It is a copy. Issues and pull requests that are opened on GitHub after the import starts come over only when you sync with GitHub.
  • People from GitHub have no account here. They show as their GitHub login, with a link to their GitHub profile.
  • Not copied: reactions, milestones, projects, and the draft state of pull requests. A draft from GitHub comes over ready for review. To make it a draft again, run src pr ready <number> --undo.

Git and CI:

  • Git goes over HTTPS only. There is no SSH.
  • Large files: a file can be up to 128 MiB. If both branches of a pull request change a file over 8 MiB, the forge shows a conflict, and you merge that file on your machine.
  • Not in CI yet: releases, service containers such as Postgres, and the GitHub GraphQL API. Keep those workflows on GitHub for now.