Multiple machines

One workspace can hold more than one computer. This page covers how to connect them, and what does and does not travel between them — the second half is where people actually get caught.

The one thing to get right: a workspace is bound to a directory

icloser pair creates the workspace on the current working directory. That directory is the AI employee's entire world — everything it reads, writes, and runs commands in.

So run it inside your project directory:

$ cd ~/my-project $ icloser pair

If you would rather not change directory, name it with --path, and point at a gateway with --api.

⚠️ Do not run it in the folder you downloaded or unpacked the installer into. Those folders (Downloads, a temp directory, something unzipped onto the Desktop) usually hold other things too, and all of it becomes the contents of that workspace. This has actually happened: a workspace bound to the temporary folder an installer was unpacked into, with personal documents sitting in it. Newer builds refuse such a directory outright, but spelling out --path is still the easiest way to be sure.

Connecting a second computer to the same workspace

Pairing prints a join link. On the second computer, go to the directory you want it to live in and hand the link to:

$ icloser init

Both machines now belong to the same workspace, each with its own local directory — the paths do not have to match.

Moving files: push and pull

$ icloser push $ icloser pull

push reports this machine's current file state; pull restores another device's state onto this machine, with --from to choose which one.

If the directory is a git repository, push sends only the difference against HEAD instead of rebuilding the whole tree every time; --full forces a complete snapshot.

Two of pull's defaults are deliberate: conflicting files are skipped, never silently overwritten, and deletions are not applied — deleting is irreversible, so you do it yourself.

What does not travel

This is the section that catches people. The following is deliberately not synced, and has to be set up again on the new machine:

When something "doesn't work" on the new machine, it is almost always the first item: a couple of credential files did not come along. The push output already named them.

Permissions do not carry across machines

Authorization is granted per machine and is never inherited from another one. A second computer joins read-only; grant it again on that machine:

$ icloser grant read $ icloser grant write $ icloser grant exec

This is deliberate: a decision made on one machine should not speak for another.

Two machines working in the same workspace

That works. A task belongs to whichever machine claims it first, and no task runs twice. At the file level, pull skips conflicts and reports them instead of choosing for you.

Seeing what you have

$ icloser workspaces $ icloser use $ icloser agents $ icloser status

In order: every workspace on this machine ( marks the current one), switch to one of them, who is running and which workspace they are bound to, and the current workspace's identity and directory.

icloser status prints the directory the current workspace is bound to. Glance at that line before you run push — it sends that directory, not the one you happen to be standing in.