Skip to main content

Install and get started with the CLI

How to install and get started with the Domino CLI

Run your code

run [--direct][--wait][--no-sync][--tier][--local] <file> [args…​] “run” copies all files in your project folder to the cloud, where it executes the specified file with any arguments you have specified, unless you have specified the --local flag. Use domino sync before domino run <script> if receiving an error like “blob file not found”. The optional --wait flag runs your script synchronously, that is, the command does not return until your job finishes. The optional --direct flag lets you run a shell command directly on the Domino machines. The optional --no-sync flag runs the latest version of code on the server, without uploading any local changes on your computer. The optional --tier flag lets you select a specific hardware tier to execute the specified file on. The optional --local flag lets you run your script on your local machine. The optional --title flag lets you supply a title for the run. Local runs are useful if your desired compute environment is not immediately available, but you would like to record your results in Domino. When a local run is invoked, Domino commits a snapshot of project files to the server and then runs the given command (for example, python main.py) on the local machine. When the command has finished running, Domino detects results that have been produced and commits those back to the server, tracking them as “results” of the run as though the command ran on the server. Viewing the “Results” for Run #16 brings up a page showing the output of the main.py where colleagues can view and discuss the output. Examples

Projects

Create a new Project

create [projectName] create creates a new Project by making a new folder on your computer and telling the Domino server about your new Project. Optionally, you can specify the name of the Project. If you don’t specify a name, Domino asks you for one. To create a Project on behalf of an organization you belong to, use the --owner flag. Examples

Create a Project in a directory that already has files

init [projectName] init creates a new Domino Project inside your current folder. This is useful if you already have a working folder and you’d like to convert it to a Domino Project. While the “create” command creates a new folder inside your current directory, init initializes a Project from your current folder. The --owner flag can be used to set an organization you belong to as the Project owner.
init does not upload any of your files. You’ll have to use upload or run after you run init.
Examples

Get a Project from the server onto your computer for the first time

get [username]/projectName get finds an existing Project on the server and copies it to your computer. This is useful to get a project you created on a different computer or to get a Project that someone else created, and you are collaborating on. If you are getting someone else’s Project, specify their username and the Project name. If you are getting one of your own Projects, you can omit the username. Examples

Connect a folder to an existing Project

restore restore connects your current directory to an existing Domino Project on the server. Restore looks for evidence of a Project name inside .domino/config.json. If it doesn’t find such a file, it prompts you for the name of an existing Project to use. This is particularly useful if you are using Domino and Git to track the same folder. If you clone a Project with Git, Git has likely ignored the hidden files that identify it as a Domino Project. So you can run git clone and then domino restore to re-connect the folder to its Domino Project. Example

Files

Synchronize the files on your computer with the server

sync sync synchronizes the Project folder on your computer with the Project stored on the server. This is equivalent to running a download followed by an upload. Example
If sync fails with an error like “too many open files” on Projects with many files, consider using a .noLock file.

Download the latest version of your files

download download downloads the latest copy of your files from the cloud into your current project folder. If you have made changes that conflict with changes in the cloud, you see both versions of the conflicting file side-by-side. There are two reasons files in the cloud might change: first, your collaborators on a Project might make changes; second, you might have executed a run that produced new output files. Example

Upload your files without starting a run

upload [-m "message"] upload uploads your current project folder contents to the cloud, but does not begin a new run. The optional message flag lets you record a message, which is displayed when browsing past commits on the Code tab of your project.
When using the CLI to upload more than 1000 files at once, a timeout error might occur during the upload process. To avoid this, upload smaller batches of files.
Example

Datasets

The following Dataset CLI actions may cause you to exceed your quota threshold if your admin has created one. See Dataset quotas for more information.

Upload folder to a Dataset

Upload all the files in a folder from your local machine to an existing dataset.
This command overwrites existing files unless you use the ‑‑fileUploadSetting option.
Syntax:
The optional fileUploadSetting flag handles path collisions:
  • Ignore: If a file already exists in the Dataset, ignore the new file.
  • Overwrite: If a file already exists in the Dataset, overwrite the existing file with the new file.
  • Rename: If a file already exists in the Dataset, append _1 to the uploaded filename. For example, if /Users/myUser/data/file.txt already exists then the newly uploaded file becomes /Users/myUser/data/file_1.txt.
The optional targetRelativePath flag enables uploading to a subdirectory in the Dataset:
  • <destination path>: This is the path, relative to the root directory of the Dataset, where files are uploaded. Note that other users with access to the Dataset can alter the file structure, which may require you to modify the destination path accordingly. If targetRelativePath is not specified, files are uploaded to the root directory of the Dataset.
fileUploadSetting, targetRelativePath, and their values are case-sensitive.
Example:
You can take advantage of the Datasets parallel upload capability, which allows for configurable chunk sizes and multi-threading. The two tuning parameters are:
  1. DOMINO_UPLOAD_CHUNK_BYTES (Default: 3145728 (3 MB)): This configures the chunk size. Larger chunks mean less chunk setup overhead. For a fast network, the setup overhead is a larger percentage of the overall time needed to upload a chunk.
  2. DOMINO_UPLOAD_THREADS (Default: 8): This configures the number of parallel threads for multi-threaded uploads and parallel chunk uploads. The number of threads is proportional to the number of cores in your operating system.
Set the Environment variable for Linux:
Set the Environment variable for Windows (Powershell):

Create a snapshot

Use the following command to create a snapshot that is visible and populated after the backend finishes copying the files in the Dataset.
Do not modify the files in the Dataset until the snapshot is done.
Syntax:

Create a Dataset from a snapshot

Use the following command to create a Dataset from a snapshot where <snapshot-integer> maps to a valid snapshot number in the Dataset.
The new Dataset can take time to populate.
Syntax:

Get help

help help prints out a list of commands you can run, with information about each one, similar to this page. Examples domino help domino help run

Get the version of your CLI

version version outputs your CLI version. Examples domino --version
Last modified on August 4, 2026