⌥ CodeGraph — source that ships

Push a branch.
Watch it go live.

Source control and deployment are usually two products, two bills and a pipeline somebody maintains between them. Here they are the same thing: a push is a deployment, because the place your code lives is the place it runs from.

Standard git. Any client, any tooling you already use.

One
Push, from commit to live
Standard
Git — no special client
Ten
Repositories included
Private
By default, always

What teams keep here

◆Production application code◆Internal tools and dashboards◆Infrastructure and configuration◆Shared libraries across teams◆Prototypes that became products◆Customer-specific forks◆Everything that used to live in three places◆Production application code◆Internal tools and dashboards◆Infrastructure and configuration◆Shared libraries across teams◆Prototypes that became products◆Customer-specific forks◆Everything that used to live in three places
Why it is one product

The pipeline you no longer
have to own.

Every team that ships has written the glue between their repository and their hosting at least once, and maintains it forever. This removes the seam rather than automating it.

⎇

Ordinary git

Clone, branch, push, pull request. Your editor, your terminal and your existing scripts all work, because it speaks the protocol rather than imitating it.

⇡

A push is a deploy

Choose the branch that goes live and it does, on every push. There is nothing between the two to configure, break or debug at midnight.

⚷

Tokens, not passwords

Access is through tokens you issue and revoke, each one scoped and individually traceable. Only the hash is stored.

⛨

Private by default

A new repository is private. Making something public is a deliberate act, not the thing that happens when you forget.

The repository

Browse it, trace it, ship it — without leaving.

The history, the branches and the running deployment in one place, so the question 'what is actually live right now' has one answer instead of three systems to reconcile.

  • The tree, as it is
    Files, branches and commits read straight from the repository, not from an index that can drift from what you pushed.
  • Forking is a real copy
    A fork takes the objects and the refs with it. The two are independent from that moment, so rewriting one cannot damage the other.
  • Deployment is attached to the branch
    You can see which commit is serving traffic, because the thing that deployed it is in the same system.
  • Storage is measured honestly
    Usage is summed from what your pushes actually stored, not from an estimate that drifts.
checkout-serviceLive
Default branchmain
Live commit4f2a9c1
Branches7
VisibilityPrivate
Last push2 minutes ago
What changes

Two products and the glue between them.

The glue is where the outages come from. Not the repository, not the host — the thing somebody wrote in a hurry to connect them, which nobody has looked at since.

A repository and a host
  • ✕Two vendors and two invoices
  • ✕A pipeline somebody maintains
  • ✕Credentials copied between systems
  • ✕A deploy that fails for reasons in neither
  • ✕Access granted twice, revoked once
  • ✕No single answer to what is live
CodeGraph
  • ✓One account and one bill
  • ✓A push, and nothing in between
  • ✓Tokens issued and revoked in one place
  • ✓Failures that name the thing that failed
  • ✓Access removed everywhere at once
  • ✓The live commit, stated plainly
What it removes

The system nobody
wanted to own.

Zero
Pipelines to maintain
The connection is the product.
One
Place access is granted
And one place it is taken away.
Ten
Repositories included
With 100 GB, before anything is charged.
Standard
Git, end to end
No proprietary client to install.
The details that matter

Boring in all the right places.

It speaks git, not something like git

Clone, fetch, push and pull work from any client, because this implements the protocol rather than wrapping a different one. Your existing scripts, hooks and editor integrations do not need to know where the repository lives.

Tokens are scoped and revocable

Issue one per machine or per purpose, and revoke it without touching the others.

A failed fork rolls back

If the copy cannot complete, both repositories are left exactly as they were.

Large pushes are handled

Pack resolution happens server side, including for pushes that depend on objects only we hold.

The allowance is checked before the bytes land

A push that would take you past what is included is refused through git itself, with the reason in your terminal — not after the storage has already been written.

“
We deleted the deployment pipeline. Four hundred lines of it, and the two people who understood it got their Fridays back.
VP of Engineering · Healthcare software company
Before you move your code

What teams ask.

Is this really git, or something like it?+

It is git. Any client that speaks the protocol can clone, fetch and push, and your existing tooling works unchanged. Nothing proprietary has to be installed.

How does a push become a deployment?+

You nominate the branch that goes live. Every push to it triggers a build and publishes the result. There is nothing between the repository and the running site for you to configure.

How is access controlled?+

Through tokens you issue, each scoped and individually revocable, with only a hash stored. Revoking one takes effect immediately and does not disturb the others.

Can I bring an existing repository?+

Yes. Push an existing repository here as you would to any remote, with its full history intact.

What is included before I pay?+

Ten repositories and 100 GB of storage. Usage is summed from what your pushes actually stored, and the limit applies at the moment of the push rather than afterwards.

What happens to a fork if the original changes?+

Nothing. A fork copies the objects and refs, so the two are independent from that point. Rewriting history in one cannot affect the other.

Put your code where
it already runs.

Push a repository, pick the branch that goes live, and stop maintaining the part in between.

Ten repositories and 100 GB included.