We're actually meant to be less of a consumer product than i think you mean by this (but i may have misunderstood).
We're more targeting enterprise as storage infrastructure provider – selling directly to platforms who generate a bunch of code and need a place to put it.
3 years ago we started building a direct competitor to GitHub with the theory that you need to build code storage, code review and CI to truly compete.
We spent about a year prototyping this all out, raised some money, and then started building this for real [tm].
Code storage felt like a HUGE moat for GitHub. Most of our competitors in the code review space:
- graphite
- linear
- (now cognition)
- etc
All built directly on GitHub's apis – but we wanted to go down to the metal (something wrong with us).
A year and half into doing this, a few folks reached out and asked how we were scaling git… i waved my hands around a bunch and explained how hard of a distributed systems problem scaling git was… explained git three-phase commits, etc.
Fast forward a few more months, and we started standing up single tenant clusters of our infra for a few different codegen companies that also needed storage solutions.
pretty much - low friction git* repos for massively parallelized agentic use.
(can think of it kinda like what stripe does for payments… headless git infra, where you get an api key, and store / create as many repos as your customers need).
Wow, you scooped us! we weren’t really expecting to launch here just yet, but happy to answer any questions y’all have :)
First, Pierre is building code storage for machines -- think GitHub’s infrastructure layer, but API-first and tuned for LLMs.
What does that actually mean? We’ve spent the last 18+ months speed running GitHubs infrastructure (with a lot of help from early GitHub folks)… this is Github’s spoke architecture with a few modern twists + object store for cold storage.
Up until this point, GitHub is the only team that’s built a truly scalable git cluster (gitlab, bitbucket, etc. are all enterprise plays, with different tradeoffs).
Code.Storage is meant to be massively scalable… and we’ll be doing a larger post on what that means, and the scale we’re already doing soon hopefully :)
On top of this, we’ve invested a TON of time into our API layer – we have all the things you’d expect, list files, create branch, commit, etc. – with some new api’s that agents have found helpful: grep, glob based archive, ephemeral branches (git namespaces), etc.
Right now we’re in private beta – but happy to do my best to answer any questions in the short term (and if you’re working on anything that might benefit from code storage or storing code like artifacts – please reach out to [email protected]
I've been look for a way to use Git for smaller, high volume document storage - think something like Google docs where every doc is a repo and every change is a commit - but also, where the vast majority of docs age out and are effectively archived and not used, but still need to be available.
This looks like it technically, I just wonder how well the pricing scales for that case of docs that might never be read again...
For cost we put repositories into cold storage once they are not read for a week. This helps long term costs stay pretty minimal. You can also delete repositories via the API if you’d prefer.
It would be nice to see a side-by-side comparison with Github on pricing and features. We are using github and creating hundreds of repos everyday without any issues (except for the occassional API outages that Github has). Curious to see your take on where Pierre is better.
Understood. I am looking for a side-by-side comparison focused on your feature set, not Github's. You answered it partially by calling out your focus areas. Github API reliability has been iffy for us, so it would be good to quantify the difference we can expect to get with you.
Sure – our API is built specifically for common LLM workflows. Here's a great example.
LLMs are often used for changing code. If an LLM creates a patch that touches 10 files, you need to take the following steps to save that patchfile on GitHub using their rest API.
.
1. Get the base branch SHA
2. Create a new branch (ref)
3. Create blobs (one per file… 10 blobs!)
4. Create a tree containing those 10 file changes
5. Create a commit
6. Update the branch ref to point to the new commit
7. Pull the GitHub api until it stops returning 422's (an eventual consistency issue when GitHub is under high load)
.
About 15 total requests…
With code.storage you just post the complete diff:
On top of ergonomics, we have first class APIs for git notes, grep, get archive (include/exclude by blob), and other filesystem behavior that is exceeding helpful when working with LLMs.
sadge, thoughts on when live? This is very good idea I can even imagine right now how good it could feel, if it's what I expect, that will be very good.
When someone, particularly a beginner, is reading the code and come across, say, an unfamiliar function name, then they know straight away whether to look for it in the language docs or a definition somewhere else in the code. Not essential, but handy.
I guess that only works for really simple project. Once you bring in third party libraries, your own common library, your own multiple layers of abstraction, this naming convention means almost nothing. It pays the price of annoying programmers who are already familiar with the code for not-so useful short term benefit of the very early beginner.
Surely there are better ways to deal with this problem. Different languages have different solutions for this, but completely breaking the naming conventions doesn't seem like the way to go.
That's a really bad thing in my eyes. Why teach a beginner that consistency is something that does not exist?
Also, non-english variables are an abomination! I've worked with code with some finnish variables. Not only is it harder to grok, it's actively distracting.
I'll probably write up something at length about this decision when/if it happens… but this is the current thinking:
CSS transitions are just total shit to deal with in javascript.
What people often don't realize is that there is an event for transitionEnd in javascript – but this isn't always fired in a reliable way – only when a transition successfully ends (which isn't all the time).
This is incredibly problematic because often really important functionality is tied to the completion of transitions.
Because these functions never finish, sometimes you're left with dead dom nodes or weird incomplete states.
What's more, there isn't a performance benefit to using css transitions – the benefit is that they were suppose to be make transitions easier and provide a nice separation of style from logic – but they end up being incredibly more difficult and because of the necessary fallback logic, the styles end up leaking back into your logic anyways. It's a pain in the neck :/
With bootstrap we really just want to give everyone the most reliable product we can, and css transitions just aren't that.
Also, from what I hear, the spec is basically dead in the water – and a reliable cancel event isn't in the works (unless this has changed in the last month or so)… which is more of a reason to consider alternatives.
Most likely we will end up going with some sort of combination. CSS transitions when we don't need a reliable "complete" event – and css transitions when we don't really care (though this case is becoming more infrequent).
We're more targeting enterprise as storage infrastructure provider – selling directly to platforms who generate a bunch of code and need a place to put it.
end users wont really know we exist.