Hacker Newsnew | past | comments | ask | show | jobs | submit | fat's commentslogin

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.

end users wont really know we exist.


thanks for the feedback – we definitely have work to do on communicating what we're up to.

Sorry about the audio - will get that patched


Ahh good question…

Here's the timeline if you're interested.

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.

And now here we are :)


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).


Hey everyone,

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]


Wow, this looks potentially amazing!

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.


Git is ~ really ~ great at document storage :P

We have folks using us to back crms, design tools, and all kinds of "non-code" stuff.

Please reach out - would love to connect!


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.


To be fair to GitHub (which i have a lot of love and respect for), we're building very different products.

GitHub is a social consumer coding product first. There's user models, review and discussion primitives, ci, etc.

Code Storage is just a headless, api-first infra product. No users, no review primitives, no rate limits, etc.

Our company is obsessively focused on only 3 things:

1. reliability at scale 2. performance 3. code api surface

happy to dive into any of these in more detail if you want to shoot me over an email [email protected]


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:

```

const result = await repo.createCommitFromDiff({

  targetBranch: "my-branch",

  commitMessage: "Apply generated SDK patch",

  author: { name: "Diff Bot", email: "[email protected]" },

  committer: { name: "Diff Bot", email: "[email protected]" },

  diff,
});

```

or better you can stream us your updated files, and we'll apply the diff for you.

```

const result = await repo

  .createCommit({

    targetBranch: "main",

    commitMessage: "Update dashboard docs",

    author: { name: "Docs Bot", email: "[email protected]" },

  })

  .addFileFromString("docs/changelog.md", "# v2.1.0\n- refresh docs\n")

  .addFile("public/logo.svg", await fs.readFile("assets/logo.svg"))

  .deletePath("docs/legacy.txt")

  .send();

```

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.


The prices are ridiculous imo, charging for network ingress is a full stop

https://code.storage/pricing


not open access yet, sorry :(


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.


planning to share more in the next month or so :)

But have been slowly signing folks up – if you want to shoot me an email, can get you setup [email protected]


haha <3


all upgrades will be free, once v4 is stable :)


fwiw, we generally just try to do what the language does:

border-radius <- css dashes

document.createElement <- js camel (except constants, etc.)

etc…


This is the correct rationale, and should be used to end every argument about naming conventions.


what about the programmers who made javascript and css? I'm sure they flame each other!


I personally prefer using the exact oposite to the language. That way my code or customizations are set apart visually:

   obj.getSomethingById()  <-- theirs

   obj.redraw_panel()   <-- mine
Non-native English speakers sometimes prefer to name variables in their native language for the same reason.


English is not my native language but I hate code with non-English variable names.


Why is it important that your code is visually set apart from the rest of the language?


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.


this


AFAIK CSS uses camelCase for variables.[1]

1: http://css-tricks.com/currentcolor/


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).


Thanks for taking the time to explain this fat, I had noticed problems with transitionEnd sometimes not firing but never got around to researching it.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: