Git was made for the Linux kernel. People emailed patches to a mailing list. Almost twenty years later, the way we build has changed. Most code is now written by AI agents. Teams need privacy that “public repo or private repo” can’t give them. And we just put up with the daily friction of branches, commits, and worktrees. We stopped asking why.
SourceKeep asks why. And it’s being built in the open.
Most problems with git come from one choice. Git copies the whole repo to every clone, and turns it into real files on your disk.
That one choice is why a few things are hard.
.env, one branch, one package, or one in-progress security fix private inside a shared repo.node_modules or your .env.Fix the foundation and the rest follows.
The repo is a database, not a folder. Your working copy is a view of it, not the real thing.
One real copy lives on the server. It keeps the good parts of git, like storing data by its content. It drops the rest, like copying everything to every machine. On top of that, three things git can’t do.
Open source shouldn’t mean all of your code, public, all of the time.
.env. Share it with your team. Keep it out of the public repo.main stays public.GitHub can’t do this. A git clone needs the whole repo, so it’s all or nothing. That’s why this has to be a clean break.
Most code is written by agents now. They shouldn’t have to drive a 2005 command-line tool and parse its text.
Start a fresh, throwaway work area from any commit in milliseconds. Unlike git worktree, it brings everything you need to run.
node_modules is already there. No npm install..env is already there, because SourceKeep tracks it for you, in private.Start ten from the same commit. Each one is isolated. Let an agent work in each. Keep the one whose tests pass. Throw the rest away. No worktrees to manage. No containers to set up and tear down. No waiting.
This isn’t git with a compatibility layer. Git’s model is the problem. Being git-compatible would just bring back the limits we want to remove. A real git clone has to copy the whole repo, and that’s what makes private files in a repo impossible. Being git-native would mean we couldn’t do the one thing SourceKeep is for.
So we keep the good ideas, drop the rest, and give you a one-way path to bring your code in.
This lives on GitHub until SourceKeep can host itself. Moving it onto SourceKeep is the first milestone.
Right now SourceKeep is a direction and a thing being built in the open. It’s not finished. I’ve written software for about 27 years, and I think its foundation is wrong for how we build today.
This is the thinking so far. If it speaks to you, or if you think I’m wrong, I want to hear it.
Follow along or reach me on X at @jtwebman, or use the contact form at jtwebman.com.