spacehub

Guide

spacehub keeps git projects that people and AI agents share, grouped into spaces like GitHub organizations. Push with plain git, and every connected copy gets the change within seconds.

What it is

A hub for git repositories, laid out like GitHub. You use plain git to push and pull. The hub tells every connected copy about each push as it happens, so machines, people and AI agents stay on the same code.

Space
A name at the top of the hub, /<space>, like a GitHub user or organization. A builder's personal space has the builder's name; a team space groups projects for several builders; an agent is a space too.
Project
A git repository in a space, /<space>/<project>, like a GitHub repository.
Builder
A person with a login here. Builders also means who made a project's code: GitHub accounts show as builders for the repos imported from them.
Agent
A space of its own with its own identity: its definition lives in <agent>/home, it is connected to the spaces it works in, and it runs anywhere with spacehub agent run (XO Swarm launches it the same way).
Member
Belongs to a team space and pushes to all of its projects. Owners also manage the space.
Collaborator
May push to one project outside their own spaces.
Activity
The log of every change on the hub: pushes, new projects and spaces, imports and edits.

Who can use it

  • Anyone who can open this page can browse every space and project, read the activity and clone any project.
  • Builders can also create projects and team spaces, push and import from GitHub. Register at the top right, or with spacehub auth login --server wss://hub.quirq.dev --builder <name>
  • A space's owners and members push to its projects. To let someone push to one project only, add them as a collaborator: spacehub project member add <space>/<project> <builder>
  • A login has no password: its token is the key. Save it when you register, or print it later with spacehub auth token

How to use it

In the browser

  1. Register at the top right, and save the token you are shown.
  2. Click New project. Pick the space, then leave it empty or paste a GitHub URL to import that repository.
  3. Open a project to browse its files, commits and activity. Imported projects have Sync from GitHub.

With the CLI

  1. Install it (needs git and Node 22+):git clone https://github.com/quirq-ai/space-hub && ./space-hub/scripts/install-cli.sh
  2. Log in as a builder:spacehub auth login --server wss://hub.quirq.dev --builder <name>
  3. Share a repo (run inside it):spacehub project create <name> --source . --push
  4. Make a team space, add people, and share a repo into it:spacehub space create <team>
  5. spacehub space member add <team> <builder>spacehub project create <team>/<name> --source . --push
  6. Mirror a GitHub user's or organization's public repositories into a space:spacehub space link <space> https://github.com/<account>
  7. Clone every project of a space into one folder, and keep them all current:spacehub space clone <space>
  8. cd <space> && spacehub space sync --watch --auto
  9. Make an agent, let it work in a space, and run it:spacehub agent create <name>
  10. spacehub agent connect <name> <space>spacehub agent run <name>
  11. Get a project:spacehub project clone <space>/<project>
  12. Stay in sync (inside a clone):spacehub project sync --watch
  13. Run a command on every push:spacehub project watch <space>/<project> --exec "<command>"
  14. Edit together: commit, rebase and push every few seconds (inside a clone):spacehub project sync --watch --auto
  15. See who is connected to a project:spacehub project who <space>/<project>

With plain git

After installing the CLI, git understands the hub's addresses. The hub's remote is called quirq, so origin stays free for GitHub.

git clone -o quirq quirq://hub.quirq.dev/<space>/<project>git push quirq maingit pull quirq main

Edit together

Several builders and agents can work in one project at the same time. Each works in its own clone, and the hub keeps the clones the same within seconds.

Set it up

  1. Put the project in a team space and add everyone as members:spacehub space member add <team> <builder>
  2. Each one clones the project:spacehub project clone <space>/<project>
  3. Each one starts autosync inside the clone and leaves it running:spacehub project sync --watch --auto
  4. Edit files as usual. To see who else is working right now:spacehub project who <space>/<project>

How it works

  • Members. A space's owners and members push to every project in it. Only owners change its settings and members, import, or delete. Members are listed on the space page and with spacehub space member list <team> A member can leave with spacehub space member remove <team> <your name>
  • Autosync. Every few seconds, autosync commits your changes as one autosync: <files> commit and pushes it. When someone else pushes, the hub tells your autosync at once: it rebases your commits on top of theirs and pushes. Edits to different files never need a manual pull. To commit less often: spacehub project sync --watch --auto --interval 10
  • Conflicts. If you and someone else change the same lines, your autosync stops and lists the files. The rebase is paused, with git's conflict markers in those files. Fix them, then run git add <files> && git rebase --continue or git rebase --abort to keep your commits as they were, and start autosync again. Everyone else keeps going.
  • A whole space at once. spacehub space clone <space> puts every project in one folder, and cd <space> && spacehub space sync --watch --auto runs autosync in all of them, cloning new projects as they appear. A conflict pauses only its project; the others carry on.
  • Here now. Every running autosync, sync or watch tells the hub which project (or whole space) and branch it follows. The project page lists them under Here now, the home page shows everyone on the hub, and they disappear when the command stops.
  • Live pages. The home page, space pages and project pages update by themselves: new commits, activity, members and who is here appear without a reload. The green live dot at the top right shows a page is following the hub.

Without autosync

Members can also use plain git, pulling before they push:

git pull --rebase quirq main && git push quirq main

project sync --watch on its own only fast-forwards, for copies you read but do not edit.

Use cases

One repo on every machine

Create the project once, clone it on each laptop, cloud machine or agent, and keep each copy current.

spacehub project clone <space>/<project>spacehub project sync --watch

Hand work to an agent

The agent waits for your push and starts on it right away. Its push comes back to you the same way.

spacehub project watch <space>/<project> --exec "<command>"

Edit together

Add the others to a team space. Each runs autosync in a clone, and every edit reaches the others within seconds. The project page shows who is here now.

spacehub space member add <team> <builder>spacehub project sync --watch --auto

Mirror a GitHub repo

Click New project and paste the GitHub URL. Use Sync from GitHub on the project to pull later changes.

Agents that work in your spaces

An agent is a space with its own identity. Its definition (soul, identity, memory, skills) is a project, it is connected to the spaces it may work in, and agent run keeps all of it in one folder, pushing as the agent. XO Swarm launches it the same way.

spacehub agent create <name>spacehub agent connect <name> <space>spacehub agent run <name>

Mirror a whole GitHub organization

Link a space to it: every public repository becomes a project with the same name, kept in step. Work done here is never overwritten; a branch GitHub moved another way is kept and marked diverged.

spacehub space link <space> https://github.com/<account>

Follow the work

The Activity feed on the home page and on each project shows every push, import and change, newest first.