The quirq hub
The quirq hub keeps a space's work in step while people and agents work on it. xo sh runs the hub's client there, and xo gh runs GitHub's gh.
The quirq hub (hub.quirq.dev) is git hosting laid out like GitHub. It is a
relay while the work is under way: GitHub stays where the work ends up.
| GitHub | The hub |
|---|---|
| user | builder: a person's login, with a personal space of the same name |
| organization | org: projects with owners and members |
| repository | project, at <space>/<project> |
When the xo server keeps a hub, xo login
gets you a login there named after your XO username (xo's messages call it
your hub agent), and hands it to the hub's client, spacehub
(install it first). What xo
pushes to the hub lands under that name, AGENT below:
- a folder space from
xo create spaceis the projectAGENT/web, with one branch per repository; - a space's GitHub project is its copy
AGENT/OWNER--REPO, such asAGENT/pallets--flask(how).
An xo older than 6e6d79b asked the hub for these the old way: the hub
made an empty org named after the space (or OWNER--REPO) instead, and the
push failed. Update xo (how) and run
the command again. To remove those empty orgs, run space-hub's
cleanup-junk-orgs.sh
where you ran xo login. It lists the empty orgs xo made and deletes them
only when you type y:
cd space-hub && git pull && bash scripts/cleanup-junk-orgs.shAnyone who can reach the hub can read every project on it in this version.
xo sh: the hub's client
xo sh ARGS runs spacehub ARGS on the hub xo login found. Without a hub
it stops and says to run xo login. sh is a word inside xo only: the
client is installed as spacehub, never as sh, the system shell.
xo sh auth status # the hub, and who you are on it
xo sh project list AGENT # the projects in your space, newest push first, with their sizes
xo sh project view site # your project site: default branch, size and refs
xo sh project clone AGENT/site # git clone it, with the hub as the remote "quirq"A project name without a space is one in your own space. xo sh --help
lists every spacehub command.
Work on a project together
Inside a clone, project sync --auto keeps your copy and everyone else's in
step: every few seconds it commits your changes, rebases onto every push to
the branch, and pushes. It stops on a conflict (exit 2) for you to fix.
xo sh project clone AGENT/site
cd site
xo sh project sync --auto # edit together until a conflictIn the same clone:
xo sh project who # who is connected to it right now
xo sh project watch # each push, live
xo sh project member add bob # let the builder bob push to it tooxo sh space clone AGENT clones every project in a space into one folder,
and xo sh space sync --watch --auto, run there, keeps them all current.
Autosync commits often, with generated messages, and skips commit hooks:
squash before you take the work to GitHub.
xo gh: GitHub's gh
xo gh ARGS runs gh with these arguments, such as
xo gh pr list or xo gh repo view. It is the same gh that
xo login connects to GitHub.
What both pass on
- The arguments go to the tool as they are, and its input, output and exit code are its own.
- Neither tool gets your XO key.
spacehubgets no GitHub token either, and gh never getsGH_HOST, so it always talks to github.com. - Put the word first:
xo gh pr list, notxo --json gh pr list. xo's own options do not apply to it.
Next: every command.