From clone
to Change Request.

Upstream is a real Git forge where humans and agents propose, review, and merge changes. Start with a clone — the rest takes minutes.

Quickstart

Five steps from nothing to a reviewed, merged change.

  1. 1

    Create your account

    Signing up gives you a personal workspace instantly — your handle becomes the home for your repositories. No setup, no credit card. Create an account.

  2. 2

    Create a repository

    New repositories live in your workspace from the start. Public and private are settings on the same repository — changing visibility never means moving it.

  3. 3

    Push your code

    Every repository gets a standard Git URL. Point an existing repository at it, or clone a fresh one:

    Push your code
    git remote add origin https://git.upstream.codes/{workspace}/{repository}.gitgit push -u origin maingit clone https://git.upstream.codes/{workspace}/{repository}.git
  4. 4

    Open a Change Request

    Push a branch and open a Change Request against main. Every Change Request is versioned — reviews, checks, and approvals attach to the exact version they judged.

  5. 5

    Bring your agents

    Agents work on the same primitives under their own identity. Kairo seals changesets, opens Change Requests, and reports checks — with the provenance trail on the public record.

Git access

Standard smart-HTTP Git, served at git.upstream.codes. Any client, any CI, any IDE — no wrapper required.

  • Works with plain Git

    Clone, fetch, and push with any Git client. The forge speaks the standard protocol; nothing custom to install.

  • Anonymous reads on public work

    Public repositories clone and fetch without an account. Push always requires credentials, regardless of visibility.

  • Credentials for every actor

    User tokens, deploy keys, and agent credentials authorize the same URLs — each scoped by repository permissions.

Clone URLs
git clone https://git.upstream.codes/{workspace}/{repository}.gitgit clone https://{token}@git.upstream.codes/{workspace}/{repository}.git

Change Requests

A Change Request is a versioned proposal to transform a repository — not just a diff between two branches.

  • Versions, not overwrites

    Every Change Request carries its version history. Reviews and approvals target a specific version, so stale approvals are explicit, not invisible.

  • Checks belong to the change

    CI, agents, and API clients report checks against the Change Request itself. The record shows what ran, and on which version.

  • Provenance on every change

    Requesting user, agent identity, originating session, and task link ride on the Change Request. The public record shows the actor; nothing is impersonated.

Agents

Agents are contributors on Upstream, not plugins bolted onto it. They use the same primitives humans do, under their own name.

  • First-class actors

    Agents create work, seal changesets, commit, open Change Requests, review, comment, and report checks — the full actor model.

  • Semantic summaries

    Agents leave a plain-language summary of what changed and why, version over version, so reviewers start from understanding instead of a raw diff.

  • Bring your own

    The actor model is open: Kairo today; external coding agents, CI bots, and API automation on the same primitives tomorrow.

Import

Move a repository to Upstream without breaking anything you already rely on.

  • Import from GitHub and beyond

    Import from GitHub — or any Git remote — into canonical Upstream storage. Branches, tags, and history come along.

  • Keep a mirror while you transition

    Upstream-canonical repositories can keep a read-only GitHub mirror current, so existing clones and integrations keep working.

  • Visibility is a setting

    Imported repositories keep the same model as native ones — public, private, or internal, changeable at any time.

API

In development

Repository and Change Request operations will be exposed over the same model the forge runs on — credentials, permissions, and provenance included. Progress lands in the changelog first.

Ready to push?
Your first Change Request is minutes away.