qq and xo, one command at a time

qq builds, tests and lands code the same way in every repo that has a qq file. With xo, a space is a collection of GitHub repos, from Flask and Requests to your own: create one, work in it together, and share it. Pick a command, or type one, and the terminal plays back what it printed.

qq and xoreplay
# 46 commands, replayed. Tap one below, or type it here. Type help for the list.
~ $ 

After each command, this line says what happened and where to read more.

Start with
Nothing you type runs anywhere. Recorded: a real run. Stand-in: the real xo CLI and server with made-up users on the recording machine, its address shown as xo.quirq.dev. Example: needs GitHub or the quirq hub, so written from the source.

Make your own command

Pick a task and put in your own names. Copy the commands into your shell, or play a recorded run like them.

What do you want to do?
qq fetch https://github.com/quirq-ai/innernetcd innernetqq test

The commands are made here from your names; nothing is sent anywhere. The terminal plays the recorded run closest to them, with its own names.

What is qq

A three-minute film on how qq builds, tests, lands and ships code, with sound and captions. qq runs on Linux x86_64 first; xo runs on Linux, macOS and Windows.

Use cases

Press Play and the terminal above runs the commands, one after another, and shows what each printed.

qq

  • Run a qq repo with one command

    qq fetch clones a repo that has a qq file (infra/repo.toml) and downloads the toolchains it pins. Then qq test builds and tests it.

    qq fetch https://github.com/quirq-ai/innernetqq test
    Your first build →
  • Open a pull request with one command

    qq upload pushes your branch and opens its pull request, or updates the one it has.

    qq upload
    Send a change →
  • Test a change and land it

    qq try runs the gate, qq status shows its checks, and qq land queues the change once they pass.

    qq tryqq statusqq land
    Send a change →
  • Give your team a shortcut

    qq create saves a command in the repo, so everyone who clones it can run qq hello.

    qq create hello echo "hello from innernet"qq hello
    Commands →

xo

  • Make a space from famous repos

    A space is a collection of GitHub repos. Clone Flask and Requests into ./web, and xo create space web publishes the folder as a space on the quirq hub: one branch per repo.

    xo create space web
    Create a space →
  • Add any GitHub repo to a space

    Log in, add Flask as a project straight from its GitHub URL, and connect it to the web space.

    xo login me --keyxo create project https://github.com/pallets/flaskxo connect flask web
    Projects →
  • Get a whole space on another machine

    See your projects and spaces, then clone every repo in the web space at its ref with one command.

    xo listxo install space:web
    Projects →
  • Start a Claude Code space

    See the request first with --dry-run, then create the space on XO Cloud and list your spaces.

    xo create space lab claude-code --volume-size 20 --dry-runxo create space lab claude-code --volume-size 20xo spaces
    Create a space →
  • Share a space with a teammate

    Invite alex to a copy of web, then see what alex shared with you: their api space, with Express in it. Accept it as team-api.

    xo share space:web alexxo list sharedxo accept ID --as team-api --yes
    Share →
  • List your projects on the quirq hub

    xo sh runs the hub's client, spacehub, on the hub xo login found. Here it lists sam's projects there, newest push first, with their sizes.

    xo sh project list sam
    The quirq hub →