Sign in once
cor login
cor repo list
Sign in with your email and a one-time code. Production is the default, and your account is remembered across project folders. Account commands start sign-in automatically when needed in an interactive terminal. Use cor login --status to check your account and cor logout to revoke this CLI session.
For a self-hosted portal, add --portal https://YOUR_HOST. Scripts can start with cor login --email EMAIL --json, then set COR_PORTAL_CODE to the emailed code and repeat cor login --json. Commands without a login exit with instructions instead of waiting for input.
Import from your computer
With a Corotation portal account, open a terminal in your project folder. The repository does not need to exist on the server.
cor update
cor repo import my-project
Enter your email and the sign-in code delivered to your inbox. The CLI creates the hosted repository, registers this computer, and uploads your current files as an isolated session. Review and complete it:
cor session diff
cor session end
cor work
Before later work, start another session with cor session start "Next changes".
For a self-hosted portal, add --portal https://YOUR_PORTAL. If this
folder already has a Corotation connection, inspect it with cor repo info. To import a separate copy, add --output ../hosted-project
and continue from that new folder. The original connection and history stay intact.
Imports copy current files using your ignore rules, not existing Git or Corotation history.
For scripts, pass --email you@example.com --yes --json. The first run
returns email_code_required; repeat with the emailed code in
COR_PORTAL_CODE. Use --resend if the code expires.
Repository device keys remain under .laplace; account sign-in state is stored privately outside the project.
The following instructions apply when administering a sync server directly.
Choose a current machine
Pick a machine reachable by both teammates, with durable local storage and enough space for project history. It can be a spare computer, a workstation, or a server you control. One current node represents one shared project.
mkdir -p ~/corotation-current
cd ~/corotation-current
cor current
The default listener is [::]:8787, with an IPv4 fallback if IPv6
is unavailable. Data lives in .laplace/current. To choose another
location, run cor current --data /path/to/storage and keep
using that location for server maintenance commands.
Connections use encrypted SSH directly. There is no separate HTTP listener or shared password. Current prints its SSH host fingerprint; each teammate verifies it once.
Connect the first project
Authorize your workstation's public key on current. On its first start, current authorizes the first conventional local public key if available; remote workstations need their own keys added:
cor keys add /path/to/your-key.pub
On your workstation, open your existing game project and connect. Use a real address reachable from your machine:
cor remote add YOUR_SERVER:8787
cor work
Compare the prompted SSH fingerprint with current's output. Corotation remembers
the host pin and authenticates with your ssh-agent or conventional local key.
Use --identity /path/to/key to choose a key, and
ssh-add to unlock encrypted keys.
The first worker uploads the project’s non-ignored files. Leave it running until the first exchange completes before inviting a teammate to catch up.
Remember this device
Approve your SSH key once. Corotation saves a separate device identity and uses it for future commands and reconnects. Your personal key stays in your password manager.
cor devices login
cor work
New connections enroll automatically. Saved identities work in other folders on this machine and remain private under ~/.config/laplace/identities. Each key is restricted to one repository; changes and sessions are still attributed to you.
cor devices
cor devices revoke FINGERPRINT
cor devices logout
Use cor devices login --renew to replace a lost or revoked device key. Revoking your personal key on current also disables its devices. Upgrade current first to enable saved identities.
Bring in a teammate
Have your teammate give you their public .pub key, then authorize
it on current:
cor keys add teammate.pub --person alice --name "Alice"
Give them the server address and host fingerprint. They keep their private key
on their own machine. An empty directory can connect with the same
remote add and work commands.
If they already have the project with corotation.json, they can
simply run:
cor work
Matching existing files are adopted on first join. Different existing files are preserved as conflicts, so use an empty folder when you want an unambiguous copy of current.
Share corotation.json, not .laplace/. Each machine
needs its own client state, credentials, chunk cache, and recovery records.
Manage remote addresses
cor remote add studio ssh://YOUR_HOST:8787
cor remote list
cor remote use studio
Use --local on remote add to keep an address only on
your machine. Local settings override shared settings. Use
--offline if you need to save an address before current is
reachable; identity is checked when connecting.
remote use selects an address for the same repository.
To change repositories, use cor repo switch.
Switch repositories
cor repo switch
cor repo switch my-project --yes
Stop cor work and run the switch from the project root. The interactive command lists repositories from your account, using the production portal by default. You can also give a repository name or ID, a configured remote name, or an SSH URL. Use --portal https://YOUR_HOST for self-hosting.
The target’s current files download before your folder changes. Your entire previous workspace—including ignored files, local changes, and unfinished session state—moves to a private sibling backup. Its path and a command to resume it are printed when the switch finishes. No old files are uploaded to the selected repository. Run cor work to work there. Selecting the same repository preserves the current files and session.
Scripts must specify a repository and --yes; --json returns the selected repository and backup path. If a replacement is interrupted, run cor repo switch --recover before continuing. Linked Git worktrees and submodules remain usable in the backup, with their Git paths updated automatically. Server data folders cannot be switched in place.
Your daily routine
Start cor work in your project, then use your normal tools.
The command discovers project settings from parent directories, including when
you start from src/.
Use cor status or cor conflicts from another
terminal while the worker runs. Stop the worker before sync or
resolve, because only one writing client process may own a
workspace at a time.
Keep current running for the team to exchange changes, and schedule your own independent backups. Current is a foreground command; Corotation does not currently install a system service or login daemon.
Revoke access
cor keys list
cor keys remove SHA256:...
Revocation applies to new requests on existing connections. Already admitted requests may finish. All authorized keys have project read/write access; session ownership is tied to the key, so use a separate key for each person.
Scripted setup and upgrades
cor remote add YOUR_SERVER:8787 --identity /path/to/key --host-key SHA256:...
Corotation keeps its host pins in .laplace/local.json, independently
of OpenSSH's known_hosts. SSH config aliases, certificates,
shells, and forwarding are not supported.
When upgrading from token authentication, finish open sessions first and upgrade both ends. Re-add each remote with its SSH address; the same current data directory preserves repository identity and history. Legacy sessions remain readable but their old author labels cannot grant SSH ownership.
Know who is who
cor keys add alice-laptop.pub --person alice
cor keys assign SHA256:... alice
cor team rename alice "Alice Chen"
A person can have several SSH keys. Name a key once on current; session authors still come from authentication. Existing keys work without a name, and revoking a key preserves its history.
cor whoami
cor team --web
The dashboard shows people, authorized and revoked keys, accepted changes, and sessions. Select a person to filter their history. Expand a change for file previews and its session review command. It is a private local snapshot fetched over SSH; rerun to refresh. No web server or additional login is needed.
Use cor team in a terminal or
cor team --json from an agent. Counts start when accounting
is enabled and cover accepted packages, including work outside sessions. They
do not represent online presence or bandwidth usage. See the
team command reference for
paging and exports.
Several projects, one server
cor repo --data .laplace/current create my-game
cor repo --data .laplace/current create another-project
cor keys --repo my-game add teammate.pub --person alice
cor remote add ssh://YOUR_SERVER:8787/my-game
cor work
Repository names select isolated projects on the same address and SSH port.
Files, chunk storage, sessions, checks, baselines, and access lists are
separate. Creation copies default's current team once, or takes explicit
--key FILE.pub flags. Later membership changes stay in the chosen
repository.
Discover accessible projects with
cor repo list --remote ssh://YOUR_SERVER:8787. Bare server
URLs keep using the original default repository, so existing data
does not need to move. Use a separate local folder for each project.