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 on a given machine they are one client wearing two faces. 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 app's "Remember me" writes the same store. |
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. The workhorse. |
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. |
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 — where the console would ask you to confirm, the CLI wants
-f instead. -p, --project <name> overrides the active project for one command.