gitstalk
Docs: Quickstart

Quickstart: your first bean in a minute

Six short steps from nothing to a change landed on your own repository. Each step shows what the screen looks like.

live Everything on this page works on the hosted service today.

  1. Sign up

    Open Sign up. Create the account with a passkey and a handle, or continue with an email address and the six-digit code we send (it works for 10 minutes). A new email address then asks for a handle.

    Sign up

    Create your account. No password.

    Create account with a passkeyPick a handle; fingerprint, face or device PIN.
    Continue with emailWe send a six-digit code; a new address then chooses a handle.
    Either way you end up with a handle such as @ada. A passkey is offered after an email sign-up.
  2. Create a repository

    Choose New repository from Home. The TypeScript starter has a test every bean must pass, so your first push is checked for real.

    NamePart of the clone URL.
    ada / notes-api
    VisibilityWho can read it.
    Private
    Start withA small library with tests and a check.
    TypeScript starter
    Readyada / notes-apiCreate repository
    Choose the TypeScript starter, an empty repository (a README and nothing else), or import a public git URL. An import's default branch becomes the stalk. Visibility defaults to private.

    Already have a project on your machine? Ask your agent instead: with the plugin, /gitstalk:new notes-api creates the repository (private), connects it as origin and pushes your work as the first bean. Without an agent, git push to a new address creates it too, once setup has connected git. See Repositories.

  3. Connect your agent and git

    Install the plugin in Claude Code or Codex. Your browser opens once to approve the session.

    Claude Code: paste in your terminal
    claude plugin marketplace add coop-collective/gitstalk-plugin && claude plugin install gitstalk@gitstalk && claude mcp login plugin:gitstalk:gitstalk
    Codex: paste in your terminal
    codex plugin marketplace add coop-collective/gitstalk-plugin && codex plugin add gitstalk@gitstalk && codex mcp login gitstalk
    Any MCP client: add as a remote (HTTP) server
    https://mcp.gitstalk.io/mcp

    Then connect git on this machine. In Claude Code:

    Claude Code
    /gitstalk:setup <owner>/<repo>

    It finds your SSH keys or makes one, opens a Gitstalk tab for you to approve it, then clones the repository or points your clone at it. In Codex, ask it to run the setup script (setup.sh, or setup.ps1 on Windows).

    Add this SSH key to @ada?Sent by /gitstalk:setup from ada-laptop.
    ssh-ed25519
    FingerprintCheck it matches your terminal.
    SHA256:3q1x...e9Kc
    CodeBQXM-TWDKMust match your terminal.Add key
    You approve once per machine (or choose Deny), and can remove the key later in Settings. A key added here can push beans to your repositories. Only the public key is stored.

    Later, every repository page has a Code button above its files. Its Agent tab has the same lines for Claude Code, Codex, Cursor, Gemini CLI and other MCP clients, set up for that repository; its Clone tab has the clone URL and commands. See The Code button.

    stalk ▾Code ▾
    Claude CodePaste in your terminal.
    … && claude "/gitstalk:setup ada/notes-api"
    The Code button's Agent tab: one line installs the plugin and connects git to this repository.
  4. Push a bean

    A bean is a branch named bean/<name>. Start from the sprout, change something, and push with -o wait to hold the push until the verdict.

    Terminal
    git switch -c work origin/sprout
    git commit -am "Add a truncate helper"
    git push -o wait origin HEAD:refs/heads/bean/add-truncate
    $ git push -o wait origin HEAD:refs/heads/bean/add-truncate
    remote: gitstalk: new bean add-truncate received at 3f9c2ab: "Add a truncate helper"
    remote: gitstalk: pre-land check started: your change is merged onto the sprout and the whole suite runs on that tree
    remote: gitstalk: LANDED: add-truncate passed its pre-land check and is on the sprout as 3f9c2ab
    remote: gitstalk:   it moves to the stalk once CI validates the sprout; git fetch origin sprout stalk
    remote: gitstalk:   web: https://gitstalk.io/ada/notes-api/changes/add-truncate
    The push waits for the pre-land check and prints the verdict as remote: lines.

    The stalk moves a little later, when CI validates the sprout. The bean's status ref then gets the line gitstalk: validated: on the stalk at <sha>, and the History tab moves the commit from On the sprout, not validated yet to The stalk.

  5. See it in the app

    Open the repository and its Changes tab. It lists beans in three groups, Open, Landed and Parked, and the page updates live.

    ada / notes-api private
    add-truncate@ada, just nowin check
    A bean in check sits under Open. Once it lands it moves to Landed and reads on the sprout, then on the stalk after validation. Open one to see its journey and diff. The number on the tab counts beans in check, red or waiting.
    bean/add-truncateon the sprout@ada
    Push 1 from @ada: 3f9c2ab
    Pre-land check green on the merged tree (14.0 s)
    Landed on the sprout as 3f9c2ab
    The journey adds a line for each step. When CI validates the sprout it adds Validated: on the stalk at ....
  6. Ask your agent to do it

    The plugin teaches your agent this flow, so you can skip the commands. Try:

    Chat
    Add a truncate helper to ada/notes-api with a test. Push it as a bean and tell me whether it landed.

    If a bean goes red, the push tells the agent which tests failed and which landed beans it collided with. See Concepts.

What you will see on Home

Get started2 of 3 done
Connect an agent session
Create or import a repository
Push a first bean
Home lists these three first steps until they are done, then your repositories, repositories shared with you, recent activity, invitations waiting for an answer, and your connected agent sessions.

Invitations to other people's repositories appear on Home with the answer buttons. Connected agents show under Your sessions, newest first; each can be disconnected in Settings.

Next steps