Using the CLI and Commands
The CLI is the same engine as the app. One parser, one executor, one config directory are shared so the two never differ, and they identify to the server as one client per machine. The app's Console panel runs these same verbs; there you drop the cambium prefix and just type the verb.
Naming files
Anything that takes a path accepts two forms:
- Filesystem path, resolved against your working directory. A leading
./, ../ or an absolute path forces this reading — ./Assets/player.fbx. - Repository path, project-rooted, written with a leading
// — //Assets/player.fbx addresses that file in the active project no matter where you are on disk.
A bare Assets/player.fbx is treated as a filesystem path. A path can be a file or a folder; a folder means everything under it, the same as selecting that folder in the tree.
Session and connection
| Command | Effect |
|---|
login [--server HOST:PORT] [--user @handle] [--remember] | Authenticates. The password is prompted, or read from CAMBIUM_PASSWORD. The first connection to a server triggers the fingerprint prompt. --remember stores a device-bound token, valid 90 days, in the shared config directory, the same effect as clicking "Remember me" in the desktop app. |
logout | Drops this device's session and revokes its remember-token. |
trust --fingerprint <fp> | Pins a server's fingerprint without the prompt, for when an admin hands it to you. |
whoami | Prints the server, your handle, the device, and the active project and workspace. |
Projects and workspaces
| Command | Effect |
|---|
projects | Lists the projects you are a member of. |
link <project> <folder> | Maps a project to a local workspace folder. |
use <project> | Sets the active project. Stored per machine, not per shell. |
Looking around
| Command | Default target | Effect |
|---|
status [<path>...] | Whole workspace | Your pending changelist plus every file's status. |
locks [<path>...] | Whole project | Who holds which locks, and on which device. |
Building a changelist
| Command | Default target | Effect |
|---|
checkout <path>... | Every modified-without-checkout file | Locks files for editing. Scoped to you on this device. All-or-nothing: ask for twelve paths where one is taken and you get none of them, plus the conflicts. |
add [<path>...] | Every "not added" file | Marks local-only files to be created on the next submit. |
delete <path>... | None — required | Marks files or folders for delete and removes the local copy. Refuses if you give it no target. |
revert [<path>...] [-f] | Whole changelist | Undo a pending change: discards edits, un-marks adds and deletes, releases checkouts. Needs -f when it would throw away real work. |
Submitting and syncing
| Command | Default target | Effect |
|---|
submit [<path>...] -m "message" | Whole changelist | Submits as a new revision. With a path, only the changes under it. |
pull [<path>...] [-f] | Whole workspace | Downloads the latest. Needs -f before overwriting local changes. |
rollback <path> <revision> [-f] | — | Sets the server's head for a file back to the content from that revision, recorded as a new revision. |
cambium checkout ./Assets/player.fbx
# …work…
cambium submit ./Assets/player.fbx -m "adding blocking animations"
Administration
These are thin wrappers over the server's admin endpoints. Handles are @handles; the parser tidies up stray @s.
| Command | Effect |
|---|
unlock -f <path>... | Force-releases someone else's lock and alerts them. -f is mandatory. |
adduser @handle <password> | Creates a user, or reinstates a disabled handle. |
deluser @handle | Disables a user and drops their sessions. Not the owner, not yourself. |
password @handle <password> | Resets a password. Your own handle needs the current one; any other is an admin reset. |
setrole @handle <member|admin> | Changes a role. The owner's role is fixed and you cannot change your own. |
assignmember @handle <project> | Adds a user to a project roster. |
removemember @handle <project> | Removes them again. |
addproject <name> | Creates an empty project. |
delproject <project> [-f] | Deletes a project and everything in it. With a terminal the CLI asks you to type the project name; -f is what you use instead where it cannot prompt — the desktop console, a pipe, CI. |
backups | Lists every backup on the server: file name, the project and revision count it holds, and when it was taken. |
backupproject <project> | Archives a project as it stands into the server's Backups folder. |
addproject <name> <backup> | Creates a project from a backup rather than empty, taking the backup's file name as backups lists it. Always a new project — nothing existing is touched. |
Scripting
--json works on every verb, with documented exit codes.- Non-interactive auth reads
CAMBIUM_SERVER, CAMBIUM_USER and CAMBIUM_PASSWORD. - A non-interactive run never prompts and hangs. When the desktop console would ask you to confirm, the CLI wants
-f instead. -p, --project <name> overrides the active project for one command.