Work here. GitHub stays in sync.
tanstack / store
In sync with GitHub- Code
- Issues
- Pull requests
- CI
- Assets
- Factory
- Settings
- .sourceci: start the test job warm2 days ago
- docsdocs: the batch API5 days ago
- internalSharedOnly in the vault: writers1 week ago
- srcfix(store): flush batches before notifying listeners3 hours ago
- .envPersonalOnly you1 month ago
- README.mddocs: the batch API5 days ago
- package.jsonchore: release 0.8.22 days ago
Today
kdomi opened #812 on GitHub
Came here in seconds
tanner reviewed #7
Posted to GitHub as tanner
review on #7
No findings. Stays only here
test passed on #7
Warm start: the install took 0 s
launch/hero.mp4, version 3
Served from the repository
Works with what you use now
- Any git client
- GitHub import
- Two-way GitHub sync
- gh commands in src
- Claude Code
- Cursor
- Any MCP client
- REST API
01 / GitHub sync
Keep GitHub. Sync it both ways.
Import a repository from GitHub with its issues and pull requests, then turn on sync. GitHub stays the public front door. Your team reads, reviews and merges here.
- New issues, pull requests and comments on GitHub come here in seconds, through a webhook and a catch-up every 5 minutes.
- On items from GitHub, what a person does here goes to GitHub first, with their own GitHub account: comments, reviews, labels, closes and merges.
- Agent comments and reviews stay here, with an "Only here" mark. Agents never post on GitHub.
- Plain git over HTTPS, and a
srcCLI with the commands ofgh.
From GitHub: kdomi opened issue #812
Webhook, in seconds
From GitHub: 3 commits on
mainFast-forward only
To GitHub: tanner reviewed #7
As tanner, with tanner’s GitHub token
To GitHub: tanner merged #7
On GitHub, with GitHub’s checks
Only here: triage commented on #812
Only here. Agents never post on GitHub
02 / Private files
Private docs and keys, in the repo, never in git
Keep the runbook, the draft and the .env next to the code. The vault keeps them encrypted at their paths, and src vault pull writes them into any clone.
- The code view shows vault files next to the files of git, only to the people who may read them.
- Keep a file for yourself, or share it with a role: readers, writers or admins. Agents never get personal files.
- Vault files never enter a commit or a clone, so nobody reads them from the git history.
src vault pull03 / Assets
Your images and videos, hosted with the repo
Each repository has an Assets tab for the files of your site, your docs or a launch. They stay out of git, so a clone stays small, and each file gets a URL you can put on a page.
- Each upload adds a version, and you can make an older version current again.
- A versioned URL is cached for a year. The plain URL always serves the current version.
- A private repository can make its assets public and keep its code private.
- Upload in the browser, with
src asset, or through REST and MCP.
04 / Agent factory
Agents on every pull request, built in
The factory audits, reviews and fixes pull requests, fixes failing CI, and triages and reproduces issues. The model and its keys stay on the forge, so agents work on pull requests from forks too.
- Before you read the diff, each pull request answers four questions: is it safe, is it useful, does it fix its issue, and does it conflict?
- When CI fails, an agent reproduces the failure, fixes the cause and pushes the fix, never by weakening a test.
- The factory never approves. Settings, prompts and keys stay with admins, and a pull request cannot change them.
- The security audit, Architecture and PR impact are on by default. Each other agent is off until an admin turns it on. Use Workers AI, or your own key for Anthropic, OpenAI and 6 other providers.
- Watch each agent run live, the way you watch a CI log. The Agents tab lists every run, and a failed run says why.
05 / Safe CI
CI with no secret inside the job
Jobs run in sandboxed containers. A container reaches only the forge and the https hosts you allow, and the forge adds credentials as requests leave. No token or key is ever inside.
- A job gets a placeholder for each secret. The forge swaps it only in requests to the hosts of that secret.
- A pull request from a fork runs after a writer approves it, with the untrusted values of each secret.
- Hidden checks: tests that only admins can see. An agent cannot tune its code to a test it cannot read.
- Every job has limits: 50,000 outbound requests, and one hour per check.
- testpassed in 2m 14s
- typecheckpassed in 48s
- agent-evals (hidden, admins only)passed in 4m 02s
Requests out of the sandbox
- git fetch from the forge allowed: the job token is added on the way out
- api.anthropic.com allowed: your API key is added from the vault
- paste.example.net blocked: not on the allowlist
06 / Fast CI
Jobs start warm, not from zero
On GitHub, each job sets up its tools, restores a cache and installs your packages again. Here, a job with the same lockfile mounts the install of an earlier job, and those steps take 0 s.
- A job runs on 4 vCPU by default, the same as a GitHub runner.
- Caches restore in parallel parts, compressed with zstd.
- Workflows are typed TypeScript.
src ci runruns a job on your machine, andsrc ci convertmoves your GitHub Actions workflows.
- Set up Node (warm start)0 s
- Install dependencies (warm start)0 s
- Typecheck48 s
- Test2m 14s
Log of Install dependencies
Taken from the warm start that a job of commit 4b1e9c2 packed. This step did not run.
Source vs GitHub
Everything you keep from GitHub. And what it can’t do.
Keep your repositories in sync with GitHub, and work here. On GitHub, a coding agent usually works with your keys, so as far as GitHub knows, it is you. Source gives every agent an identity of its own and keeps the decisions with people.
The GitHub column describes the usual setup: a coding agent on your machine that works with your personal access token or SSH key, and agents on pull requests that run in GitHub Actions with the repository’s secrets.
Also built in
And everything you expect from a forge
Agent sessions
Each agent gets its own token for one repository, capped at your role, and pushes only to its own branches. Revoke a session, and it stops at once.
One agents.md
Every repository serves the instructions of your account or organization, its AGENTS.md or CLAUDE.md, and its skills, over HTTP and MCP.
Screening
An AI model reads posts from people without write access first. Spam is rejected, and suspected prompt injections wait for a maintainer.
Skills
A SKILL.md folder gets a new version on each push, and public ones list themselves in the marketplace. There is no publish step.
Plain git over HTTPS
Clone, fetch and push with any git client, shallow clones included.
Import from GitHub
Bring your repositories, or a whole GitHub organization that you own, with their issues and pull requests. Any public git URL works too.
Pull requests and reviews
Line comments, pending reviews, approvals, conflict detection, merges, and a diff for thousands of files with renames.
Live issues
Markdown with a preview, new comments the moment they are posted, and assignees who each get a note on what to do.
Forks
A fork stores only its own objects, and pull requests work across repositories.
Git LFS
Files up to 100 MiB each, with download rules for each path.
Organizations
Owners and members, and collaborators with read, write or admin roles.
Push protection
Pushes that add .env files or known secret formats are refused.
Under the hood
One Worker. One Durable Object per repository.
Source runs entirely on Cloudflare. Each repository is a Durable Object that keeps its git objects, issues, pull requests and vault together. A git engine written in TypeScript serves every clone and push.
Bring one repository. Keep GitHub in sync.
Create an account, import a repository from GitHub, turn on sync, and turn on your first agent.