# Command: pull

**URL:** https://guildai.org/t/command-pull/97
**Category:** Commands
**Created:** [June 10, 2020, 12:21am UTC](https://guildai.org/t/command-pull/97 "2020-06-10T00:21:57Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![guildai](https://yyz1.discourse-cdn.com/flex031/user_avatar/guildai.org/guildai/32/103_2.png) [@guildai](https://guildai.org/u/guildai)
#### Post date: [June 10, 2020, 12:21am UTC](https://guildai.org/t/command-pull/97/1 "2020-06-10T00:21:57Z")

</div>

### Usage

```command
guild pull [OPTIONS] REMOTE [RUN...]

```

Copy one or more runs from a remote location.

`RUN` must be the complete run ID of the remote run.

**NOTE:** Guild does not currently support listing remote runs. To pull specific runs, query the remote server for the full run ID of each run you want to pull.

You may alternatively use `--all` to pull all remote runs. If `--all` is specified, `RUN` arguments cannot be specified.

`--verbose` is always enabled when `--all` is specified.

`REMOTE` must be define in `~/.guild/config.yml`. See REMOTES below for more information.

By default Guild will prompt you before copying. If you want to apply the changes without being prompted, use the `--yes` option.

### Specify Runs

You may use one or more `RUN` arguments to indicate which runs apply to the command. `RUN` may be a run ID, a run ID prefix, or a one-based index corresponding to a run returned by the list command.

Indexes may also be specified in ranges in the form `START:END` where `START` is the start index and `END` is the end index. Either `START` or `END` may be omitted. If `START` is omitted, all runs up to `END` are selected. If `END` id omitted, all runs from `START` on are selected. If both `START` and `END` are omitted (i.e. the `:` char is used by itself) all runs are selected.

### Filter by Operation

Runs may be filtered by operation using `--operation`. A run is only included if any part of its full operation name, including the package and model name, matches the value.

Use `--operation` multiple times to include more runs.

### Filter by Label

Use `--label` to only include runs with labels containing a specified value. To select runs that do not contain a label, specify a dash ‘-’ for `VAL`.

Use `--label` multiple times to include more runs.

### Filter by Tag

Use `--tag` to only include runs with a specified tag. Tags must match completely and are case sensitive.

Use `--tag` multiple times to include more runs.

### Filter by Marked and Unmarked

Use `--marked` to only include marked runs.

Use `--unmarked` to only include unmarked runs. This option may not be used with `--marked`.

### Filter by Expression

Use `--filter` to limit runs that match a filter expressions. Filter expressions compare run attributes, flag values, or scalars to target values. They may include multiple expressions with logical operators.

For example, to match runs with flag `batch-size` equal to 100 that have `loss` less than 0.8, use:

```
--filter 'batch-size = 10 and loss < 0.8'

```

**IMPORTANT:** You must quote EXPR if it contains spaces or characters that the shell uses (e.g. ‘\<’ or ‘\>’).

Target values may be numbers, strings or lists containing numbers and strings. Strings that contain spaces must be quoted, otherwise a target string values does not require quotes. Lists are defined using square braces where each item is separated by a comma.

Comparisons may use the following operators: ‘=’, ‘!=’ (or ‘\<\>’), ‘\<’, ‘\<=’, ‘\>’, ‘\>=’. Text comparisons may use ‘contains’ to test for case-insensitive string membership. A value may be tested for membership or not in a list using ‘in’ or ‘not in’ respectively. An value may be tested for undefined using ‘is undefined’ or defined using ‘is not undefined’.

Logical operators include ‘or’ and ‘and’. An expression may be negated by preceding it with ‘not’. Parentheses may be used to control the order of precedence when expressions are evaluated.

If a value reference matches more than one type of run information (e.g. a flag is named ‘label’, which is also a run attribute), the value is read in order of run attribute, then flag value, then scalar. To disambiguate the reference, use a prefix `attr:`, `flag:`, or `scalar:` as needed. For example, to filter using a flag value named ‘label’, use ‘flag:label’.

Other examples:

`operation = train and acc > 0.9`  
`operation = train and (acc > 0.9 or loss < 0.3)`  
`batch-size = 100 or batch-size = 200`  
`batch-size in [100,200]`  
`batch-size not in [400,800]`  
`batch-size is undefined`  
`batch-size is not undefined`  
`label contains best and operation not in [test,deploy]`  
`status in [error,terminated]`

**NOTE:** Comments and tags are not supported in filter expressions at this time. Use `--comment` and `--tag` options along with filter expressions to further refine a selection.

### Filter by Run Start Time

Use `--started` to limit runs to those that have started within a specified time range.

**IMPORTANT:** You must quote RANGE values that contain spaces. For example, to filter runs started within the last hour, use the option:

```
--started 'last hour'

```

You can specify a time range using several different forms:

`after DATETIME`  
`before DATETIME`  
`between DATETIME and DATETIME`  
`last N minutes|hours|days`  
`today|yesterday`  
`this week|month|year`  
`last week|month|year`  
`N days|weeks|months|years ago`

`DATETIME` may be specified as a date in the format `YY-MM-DD` (the leading `YY-` may be omitted) or as a time in the format `HH:MM` (24 hour clock). A date and time may be specified together as `DATE TIME`.

When using `between DATETIME and DATETIME`, values for `DATETIME` may be specified in either order.

When specifying values like `minutes` and `hours` the trailing `s` may be omitted to improve readability. You may also use `min` instead of `minutes` and `hr` instead of `hours`.

Examples:

`after 7-1`  
`after 9:00`  
`between 1-1 and 4-30`  
`between 10:00 and 15:00`  
`last 30 min`  
`last 6 hours`  
`today`  
`this week`  
`last month`  
`3 weeks ago`

### Filter by Source Code Digest

To show runs for a specific source code digest, use `-g` or `--digest` with a complete or partial digest value.

### Filter by Run Status

Runs may also be filtered by specifying one or more status filters: `--running`, `--completed`, `--error`, and `--terminated`. These may be used together to include runs that match any of the filters. For example to only include runs that were either terminated or exited with an error, use `--terminated --error`, or the short form `-Set`.

You may combine more than one status character with `-S` to expand the filter. For example, `-Set` shows only runs with terminated or error status.

Status filters are applied before `RUN` indexes are resolved. For example, a run index of `1` is the latest run that matches the status filters.

### Remotes

Remotes are non-local systems that Guild can interact with. They are defined in `~/.guild/config.yml` under the `remotes` section.

For a list of supported remotes, see [https://guild.ai/remotes/](https://guild.ai/remotes/).

### Options

| | |
| --- | --- |
| `-F, --filter EXPR` | Filter runs using a filter expression. See Filter by Expression above for details. |
| `-Fo, --operation VAL` | Filter runs with operations matching `VAL`. |
| `-Fl, --label VAL` | Filter runs with labels matching VAL. To show unlabeled runs, use --unlabeled. |
| `-Fu, --unlabeled` | Filter runs without labels. |
| `-Ft, --tag TAG` | Filter runs with TAG. |
| `-Fc, --comment VAL` | Filter runs with comments matching VAL. |
| `-Fm, --marked` | Filter marked runs. |
| `-Fn, --unmarked` | Filter unmarked runs. |
| `-Fs, --started RANGE` | Filter runs started within RANGE. See above for valid time ranges. |
| `-Fd, --digest VAL` | Filter runs with a matching source code digest. |
| `-Sr, --running / --not-running` | Filter runs that are still running. |
| `-Sc, --completed / --not-completed` | Filter completed runs. |
| `-Se, --error / --not-error` | Filter runs that exited with an error. |
| `-St, --terminated / --not-terminated` | Filter runs terminated by the user. |
| `-Sp, --pending / --not-pending` | Filter pending runs. |
| `-Ss, --staged / --not-staged` | Filter staged runs. |
| `-d, --delete` | Delete local files missing on remote. |
| `-y, --yes` | Do not prompt before copying. |
| `--help` | Show this message and exit. |

Guild AI version 0.9.0
