Command Line Interface¶
Run the core algorithms on GeoTIFF stacks straight from the terminal, with no Python code. Useful for shell scripts, cron jobs and HPC schedulers. Each command reads and writes files block by block, so inputs can be larger than memory.
Basic Usage¶
The CLI is structured around subcommands for each algorithm. You can invoke the CLI using the zeit command (if installed via pip) or by executing the python module directly:
python -m zeit.cli <algorithm> ...)
To run a command on a whole folder of tiles, on this computer and on others of the local network, see Many tiles, on this and other computers.
To get general help or see the list of available commands:
1. LandTrendr (landtrendr)¶
The landtrendr command processes a multi-band GeoTIFF representing a time series of a single spectral index (e.g., NBR, NDVI) and extracts spatial change events.
Syntax¶
Positional Arguments¶
| Argument | Type | Description |
|---|---|---|
input |
filepath |
Path to the input multi-band GeoTIFF. Each band must represent a single year, in chronological order. |
output_dir |
dirpath |
Directory where the resulting event maps (Year of Detection, Magnitude, Duration) will be saved. |
Configuration Options¶
| Option | Type | Default | Description |
|---|---|---|---|
--start-year |
int |
read from the file | The calendar year of the first band. By default the years are read from the band descriptions (e.g. yr1985), as zeit.load_raster does; pass it for stacks whose bands are not named by year. |
--max-segments |
int |
6 |
The maximum number of line segments the algorithm can fit per pixel. |
--jobs |
int |
-1 |
Number of CPU cores to use for parallel processing. -1 uses all available cores. |
--chunk-size |
int |
512 |
Size of the image chunks (in pixels) processed simultaneously to manage RAM. |
--save-vertices |
flag |
False |
If provided, saves the raw multi-band GeoTIFF containing all fitted vertices. |
--no-data-value |
float |
the raster's NoData, or 0 |
Value marking a missing year. By default the raster's NoData value, or 0 for integer stacks without one (how Earth Engine exports masked pixels). NaN is always missing. |
Event Extraction Options¶
These options control how specific change events are extracted from the temporal trajectory:
| Option | Type | Default | Description |
|---|---|---|---|
--event-type |
str |
loss |
Type of event to segment for and map. Choices: loss (value decreases) or gain (value increases). It sets both LandTrendr's direction and the events extracted. |
--sort-by |
str |
greatest |
How to select the event if multiple occur. Choices: greatest, newest, fastest, longest, dsnr. |
--min-mag |
float |
0.0 |
Filter out events with a magnitude lower than this threshold. |
--min-dur |
int |
1 |
Filter out events shorter than this duration in years. |
--pre-val-thresh |
float |
0.0 |
Filter out events if the starting value was already below this threshold. |
--output-scale |
float |
1.0 |
Scale factor applied to the output. Useful for converting scaled integers back to floats (e.g., 0.0001). |
--prefix |
str |
lt_event |
Prefix added to all output file names. |
End-to-End Example¶
Run LandTrendr on a 30-year NBR stack, extracting the greatest vegetation loss, using all CPU cores, and converting the output back to floating point (assuming NBR was scaled by 10000):
zeit landtrendr ./data/nbr_stack_1990_2020.tif ./results \
--start-year 1990 \
--max-segments 6 \
--event-type loss \
--sort-by greatest \
--output-scale 0.0001 \
--jobs -1
2. Continuous Change Detection (ccdc)¶
The ccdc command runs zeit.ccdc on a dense, multi-band, multi-date GeoTIFF, reading it block by block, and writes each pixel's segments as GeoTIFFs. Values must be surface reflectance × 10,000, bands ordered Blue, Green, Red, NIR, SWIR1, SWIR2 [, thermal].
Syntax¶
Positional Arguments¶
| Argument | Type | Description |
|---|---|---|
input |
filepath |
Path to the input GeoTIFF. Either its bands are named date_band (2020-01-15_blue, 2020-01-15_green, …, as zeit.save_raster writes a (time, band, y, x) cube), and the dates are read from them; or it is interleaved by date (Date1-Band1, Date1-Band2, …, Date2-Band1, …) without such names, with --dates-file and --num-bands. |
output_dir |
dirpath |
Directory where the segment rasters will be saved. |
Configuration Options¶
| Option | Type | Default | Description |
|---|---|---|---|
--dates-file |
str |
None | Text file with one date per line, an ISO date (2020-01-15) or a Python ordinal day (737439), for a stack without dates in its band names. |
--num-bands |
int |
6 |
With --dates-file: the number of bands per date in a stack interleaved by date, including the QA band. |
--qa-band |
int |
-1 |
The zero-based index, among the bands of each date, of a band of Fmask codes (0 clear, 1 water, 2 shadow, 3 snow, 4 cloud, 255 no observation). It is not used as a spectral band. -1: no QA band, every observation is clear. |
--max-segments |
int |
6 |
The maximum number of segments to retain per pixel. |
--conse |
int |
6 |
Consecutive anomalous observations that confirm a break (conseq_anom), as in the original CCDC. |
--chunk-size |
int |
512 |
Size of the image blocks (in pixels) processed at once. |
--jobs |
int |
-1 |
Number of CPU threads. -1 uses all cores but one. |
--cold |
flag |
False |
Deprecated: the same as --conse 6, now the default. |
--prefix |
str |
ccdc |
Prefix added to all output GeoTIFF files. |
Outputs¶
| File | Bands | Content |
|---|---|---|
<prefix>_t_start.tif, <prefix>_t_end.tif |
one per segment | First and last date of each segment, as decimal years (NaN past the last segment). |
<prefix>_t_break.tif |
one per segment | Date of the break that ended each segment, as a decimal year (NaN: no break). |
<prefix>_n_segments.tif |
1 | Number of segments per pixel. |
<prefix>_rmse.tif |
one per segment and band (1_blue, …) |
RMSE of each band's fit. |
<prefix>_coefs.tif |
one per segment, band and coefficient (1_blue_a0, 1_blue_c1, …) |
The harmonic coefficients a0, c1, a1, b1, a2, b2, a3, b3 (see zeit.ccdc). |
In a stack interleaved by date, the bands are named b1, b2, … (1_b1_a0, …).
End-to-End Example¶
Run CCDC on a stack written by zeit.save_raster, whose 7th band of each date (index 6) holds the Fmask codes:
The same on a stack interleaved by date, with 6 spectral bands and 1 QA band per date, and the dates in a text file:
zeit ccdc ./data/dense_stack.tif ./results \
--dates-file ./data/dates.txt \
--num-bands 7 \
--qa-band 6
3. BFAST Monitor (bfast-monitor)¶
The bfast-monitor command runs zeit.bfast_monitor on a multi-band GeoTIFF where every band is one equally-spaced observation (e.g. a 16-day composite), reading it block by block. Time is regular, as in R's ts: observation i is at start_time + i / frequency. Both are read from the band dates (descriptions such as 2020-01-15, as zeit.save_raster writes them); give --start-time and --frequency for a stack without dates. See the BFAST Monitor tutorial for the full method background.
The four time-series commands (bfast-monitor, bfast-lite, bfast, mann-kendall) write one GeoTIFF, <output_dir>/<prefix>.tif, with one float32 band per metric, named after it.
Syntax¶
Positional Arguments¶
| Argument | Type | Description |
|---|---|---|
input |
filepath |
Path to the input multi-band GeoTIFF. Each band is one equally-spaced time step. |
output_dir |
dirpath |
Directory where the single output GeoTIFF (7 bands, see below) will be saved. |
Configuration Options¶
| Option | Type | Default | Description |
|---|---|---|---|
--monitor-start-time |
float or date |
(required) | When monitoring begins, as a decimal year (2019.0) or a date (2019-01-01): the boundary between the stable "history" and "monitoring" periods. |
--start-time |
float |
from the band dates | The series' start time (e.g. 2015.0). |
--frequency |
int |
from the band dates | Observations per year (e.g. 23 for 16-day composites). |
--order |
int |
3 |
Harmonic order for the seasonal regressors. |
--h |
float |
0.25 |
MOSUM window size, as a fraction of history length. Must be one of 0.25, 0.5, 1.0. |
--period |
int |
10 |
Monitoring period parameter. Must be one of 2, 4, 6, 8, 10. |
--alpha |
float |
0.05 |
Significance level for the monitoring boundary. |
--min-valid |
int |
10 |
Minimum valid (non-NaN) history observations per pixel. |
--chunk-size |
int |
512 |
Size of the image chunks to process simultaneously. |
--jobs |
int |
-1 |
Number of CPU cores to use. -1 uses all available cores. |
--prefix |
str |
bfast_monitor |
Filename (without extension) for the output GeoTIFF. |
Output bands (in order): breakpoint, breakpoint_idx, magnitude, sigma, n_history, has_break, valid (see zeit.bfast_monitor).
End-to-End Example¶
zeit bfast-monitor ./data/ndvi_16day_stack.tif ./results \
--monitor-start-time 2019-01-01 \
--jobs -1
# A stack without dates in its band names: give the time axis
zeit bfast-monitor ./data/ndvi_16day_stack.tif ./results \
--start-time 2015.0 --frequency 23 --monitor-start-time 2019.0
4. BFAST Lite (bfast-lite)¶
The bfast-lite command runs zeit.bfast_lite: it retrospectively segments the whole series into an optimal number of pieces in a single pass - the modern, non-iterative alternative to classic bfast. Input and time axis as for bfast-monitor. See the BFAST Lite tutorial.
Syntax¶
Configuration Options¶
| Option | Type | Default | Description |
|---|---|---|---|
--start-time |
float |
from the band dates | The series' start time (e.g. 2010.0). |
--frequency |
int |
from the band dates | Observations per year. |
--order |
int |
3 |
Harmonic order. |
--h |
float |
0.15 |
Minimum segment size, as a fraction of the series length. |
--max-breaks-output |
int |
5 |
Maximum number of breakpoints to report per pixel (max_breaks in Python). |
--min-valid |
int |
20 |
Minimum valid observations per pixel. |
--chunk-size |
int |
512 |
Size of the image chunks to process simultaneously. |
--jobs |
int |
-1 |
Number of CPU cores to use. |
--prefix |
str |
bfast_lite |
Filename (without extension) for the output GeoTIFF. |
Output bands: n_breaks, rss, lwz, n_valid, valid, breakpoint_idx_1..N (see zeit.bfast_lite).
End-to-End Example¶
5. Classic BFAST (bfast)¶
The bfast command runs zeit.bfast, the original iterative bfast() algorithm: an STL seasonal seed followed by alternating trend/season segmented regressions, distinguishing trend breaks from seasonal (phenological) breaks. Input and time axis as for bfast-monitor. See the BFAST tutorial for the full method background, scope notes, and R cross-validation results.
Syntax¶
Configuration Options¶
| Option | Type | Default | Description |
|---|---|---|---|
--start-time |
float |
from the band dates | The series' start time (e.g. 2000.0). |
--frequency |
int |
from the band dates | Observations per year. Requires more than 2 * frequency total observations. |
--order |
int |
3 |
Harmonic order for the season sub-model. |
--h |
float |
0.15 |
Minimum segment size (both trend and season), as a fraction of valid observations. |
--max-breaks-trend |
int |
5 |
Maximum number of trend breakpoints to report per pixel. |
--max-breaks-season |
int |
5 |
Maximum number of season breakpoints to report per pixel. |
--max-iter |
int |
10 |
Maximum trend/season re-estimation iterations. |
--level |
float |
0.05 |
Significance threshold for the preliminary structural-stability pre-check. |
--min-valid |
int |
20 |
Minimum valid observations per pixel. |
--chunk-size |
int |
512 |
Size of the image chunks to process simultaneously. |
--jobs |
int |
-1 |
Number of CPU cores to use. |
--prefix |
str |
bfast |
Filename (without extension) for the output GeoTIFF. |
Output bands: n_trend_breaks, n_season_breaks, magnitude, break_time, n_iter, n_valid, valid, trend_breakpoint_idx_1..N, season_breakpoint_idx_1..N (see zeit.bfast).
End-to-End Example¶
6. Mann-Kendall Trend Test (mann-kendall)¶
The mann-kendall command runs zeit.mann_kendall, the pixel-wise Mann-Kendall trend test and Theil-Sen slope estimator, across a multi-band GeoTIFF (one band per observation - typically one annual composite per band). No dates are needed. See the Mann-Kendall tutorial.
Syntax¶
Configuration Options¶
| Option | Type | Default | Description |
|---|---|---|---|
--method |
str |
hamed_rao |
Trend test variant. Choices: original, hamed_rao (autocorrelation-corrected, recommended), yue_wang, seasonal. |
--alpha |
float |
0.05 |
Significance level. |
--lag |
int |
None | First significant lags for the autocorrelation correction (hamed_rao/yue_wang only). Defaults to the full series length. |
--period |
int |
1 |
Season slots for --method seasonal (e.g. 23 for MODIS 16-day cycles), letting a raw sub-annual series be tested directly. |
--min-valid |
int |
4 |
Minimum valid observations per pixel. |
--chunk-size |
int |
512 |
Size of the image chunks to process simultaneously. |
--jobs |
int |
-1 |
Number of CPU cores to use. |
--prefix |
str |
mann_kendall |
Filename (without extension) for the output GeoTIFF. |
Output bands: trend, h, p, z, tau, s, var_s, slope, intercept. slope/intercept are per time step (per band), so one observation per year gives a directly interpretable per-year trend.
End-to-End Example¶
7. Minimum Mapping Unit Filter (mmu-filter)¶
The mmu-filter command applies a spatial Minimum Mapping Unit (MMU) filter to a single-band raster - typically a disturbance-year map from landtrendr - removing isolated pixel groups smaller than a given size to reduce "salt and pepper" noise.
Syntax¶
Positional Arguments¶
| Argument | Type | Description |
|---|---|---|
input |
filepath |
Path to the input single-band GeoTIFF (e.g. a landtrendr year-of-detection map). |
output |
filepath |
Path to save the filtered GeoTIFF. |
Configuration Options¶
| Option | Type | Default | Description |
|---|---|---|---|
--mmu-pixels |
int |
11 |
Minimum connected-patch size, in pixels. Smaller patches are zeroed out (treated as the raster's nodata/background value). |
End-to-End Example¶
The other cube functions¶
phenology, smooth, tmask, twdtw, snic, classify, som, coded and bandpass-adjust run the Python function of the same name on any raster load_raster reads, with the dates in the band names (as save_raster writes them, yr1985, 2020-01-15 or 2020-01-15_red for a time × band stack). They share the same syntax and options, and write <output_dir>/<prefix>.tif, one band per map (or per date), computed block by block in one pass:
| Option | Type | Default | Description |
|---|---|---|---|
--chunk-size |
int |
512 |
Size of the image chunks to process at once. |
--jobs |
int |
-1 |
Number of CPU cores to use. |
--prefix |
str |
the command | Name of the output file, without extension. |
8. Phenology (phenology)¶
zeit.phenology: one band per metric (and year). See the phenology tutorial.
| Option | Type | Default | Description |
|---|---|---|---|
--curve |
str |
beck |
beck, elmore, gu, klos, zhang, ag or dl. |
--method |
str |
threshold |
threshold, derivative, gu or klosterman. |
--weights |
filepath |
None | A raster of observation weights in [0, 1] on the input's grid and dates (e.g. written from zeit.qc_sentinel2_scl). |
--not-annual |
flag | Metrics per season instead of per calendar year. | |
--max-seasons |
int |
years | Seasons to report. |
--whittaker-lambda |
float |
10 |
Whittaker smoothing before the fit. |
zeit phenology ./data/s2_ndvi_2019_2023.tif ./results --curve elmore --weights ./data/s2_weights.tif
9. Smoothing (smooth)¶
zeit.smooth: the smoothed series, same dates and type.
| Option | Type | Default | Description |
|---|---|---|---|
--method |
str |
whittaker |
whittaker (uneven dates, gaps filled) or savgol. |
--lmbda |
float |
10 |
Whittaker: smoothness. |
--weights |
filepath |
None | Whittaker: a raster of observation weights in [0, 1]. |
--window, --polyorder |
int |
5, 2 |
Savitzky-Golay: window length and polynomial order. |
10. Cloud and shadow screening (tmask)¶
zeit.tmask on a (time, band) stack (bands named date_band): one band per date, 1 clear, 0 cloud, shadow or no data.
| Option | Type | Default | Description |
|---|---|---|---|
--green, --swir |
str |
green, swir1 |
Names of the green and SWIR-1 bands. |
--scale |
float |
10000 |
Reflectance scale of the stack (1 for 0-1 floats). |
11. TWDTW classification (twdtw)¶
zeit.twdtw: bands label, distance and one distance per pattern. The patterns come from a CSV with the columns pattern, date and one value column (or one column per band, named as the input's bands):
| Option | Type | Default | Description |
|---|---|---|---|
--patterns |
filepath |
required | The CSV of patterns. |
--band |
str |
None | A multi-band input with one-band patterns: the band to classify. |
--steepness, --midpoint |
float |
0.1, 50 |
The logistic time weight (midpoint in days). |
--max-elapsed |
float |
None | Never match observations farther apart than this many days. |
--no-cycle |
flag | Measure elapsed time between the dates, not between days of the year. |
12. SNIC segmentation (snic)¶
zeit.snic: the segment labels (the input is read into memory). --polygons also writes <prefix>.gpkg, the segments as polygons with their means.
| Option | Type | Default | Description |
|---|---|---|---|
--spacing |
float |
10 |
Pixels between seeds. |
--compactness |
float |
0.5 |
Larger: more regular segments (in data units). |
--grid |
str |
rectangular |
rectangular, diamond, hexagonal or random. |
--polygons |
flag | Also write the polygons. |
13. Classification (classify)¶
zeit.train_classifier and zeit.classify in one call: a random forest trained on sample points (each band, or date and band, a feature) classifies every pixel. Bands label (and each class's probability with --probability).
| Option | Type | Default | Description |
|---|---|---|---|
--samples |
filepath |
None | Vector file of points with their class. |
--label |
str |
class |
Column of the samples holding the class. |
--model |
filepath |
None | With --samples: where to save the trained model (joblib). Without: a saved model to classify with. |
--probability |
flag | Also write each class's probability. |
zeit classify ./data/s2_2022.tif ./results --samples ./data/samples.gpkg --model ./results/rf.joblib
zeit classify ./data/s2_2023.tif ./results_2023 --model ./results/rf.joblib # the same model, next year
14. SOM clustering (som)¶
zeit.som: bands label and distance, and <prefix>_prototypes.csv with one row per neuron (neuron, its grid position i/j, n_pixels, then the prototype, one column per date or date and band).
| Option | Type | Default | Description |
|---|---|---|---|
--x, --y |
int |
3, 3 |
Neurons of the grid. |
--sample |
int |
50000 |
Pixels to train on, at random (0 for all). |
--algorithm |
str |
online |
online or batch. |
--sigma, --learning-rate |
float |
1.0, 0.5 |
Initial neighbourhood radius and learning rate. |
--seed |
int |
42 |
Random seed. |
15. Bandpass adjustment (bandpass-adjust)¶
zeit.bandpass_adjust: the reflectance series with its Sentinel-2 dates on Landsat 8's OLI bands (HLS's bandpass step only), as <output_dir>/<prefix>.tif with the input's bands and type. A GeoTIFF does not say which sensor took each date, so --sensor does.
| Option | Type | Default | Description |
|---|---|---|---|
--sensor |
str ... |
required | The sensor of every date (sentinel-2a, S2B, landsat-8...), or one per date. |
--etm |
str |
None | rma or ols: also take Landsat 5/7 dates to OLI (Roy et al. 2016). |
--scale |
float |
auto | Reflectance scale of the stack: 10000 for integers or values above 2, else 1. |
16. Embeddings (embeddings)¶
zeit.load_embeddings: download the yearly embeddings of a foundation model over a region into one GeoTIFF, <output_dir>/<prefix>.tif, one band per year and dimension (2024_A00, 2024_A01...), which zeit.load_raster reads back as a (time, band, y, x) cube that remembers which embeddings it holds. Unlike the other commands it takes no input raster: the region is given by --bbox or --region.
| Option | Type | Default | Description |
|---|---|---|---|
--source |
str |
required | tessera or alphaearth. |
--bbox |
4 float |
None | West, south, east, north in longitude and latitude. |
--region |
filepath |
None | Vector file of the region; cells outside its polygons are NoData. |
--years |
str |
all | Years, e.g. 2018 2020 or 2018-2024. |
--crs, --res |
str, float |
the region's UTM zone, 10 | Output CRS and cell size. |
--version, --variant, --depth |
v1.1 |
TESSERA: dataset version and variant; the first DEPTH dimensions of a v2 store. |
|
--backend |
str |
source.coop |
AlphaEarth: the open COGs or gee (Earth Engine). |
--store |
filepath |
None | A local copy of the product to read instead of the public one. |
--cache-dir |
filepath |
~/.cache/zeit/embeddings |
Where downloads are kept. |
--prefix |
str |
the source | Name of the output file. |
zeit embeddings ./results --source tessera --bbox -63.0 -10.0 -62.9 -9.9 --years 2018-2024
zeit classify ./results/tessera.tif ./results --samples ./data/samples.gpkg # every year and dimension a feature
Many tiles, on this and other computers¶
17. Many tiles, here and on other computers¶
Every command that reads one raster (landtrendr, ccdc, bfast-monitor, bfast-lite, bfast, mann-kendall, phenology, smooth, tmask, twdtw, snic, classify, som, coded, bandpass-adjust) also runs on a whole folder of tiles, with the same options, writing <output_dir>/<tile name>/ per tile. Add --helpers and the computers of the local network running zeit worker process tiles too. The Python form is zeit.run_tiles; the tutorial, with what limits the speed, is Many tiles on several computers.
zeit landtrendr nbr_tiles/ lt_out/ --tiles # every tile, on this computer
zeit landtrendr nbr_tiles/ lt_out/ --helpers # here and on the helpers
zeit landtrendr nbr_tiles/ lt_out/ --helpers --no-local # only on the helpers; this computer stays free
zeit landtrendr nbr_tiles/ lt_out/ --helpers --local-cores 4 # here with 4 cores, and on the helpers
zeit landtrendr "nbr_tiles/LT_2*.tif" lt_out/ --tiles # a quoted glob instead of a folder
zeit landtrendr urls.txt lt_out/ --helpers # URLs, one per line: each computer downloads its tiles
| Option | Type | Default | Description |
|---|---|---|---|
--tiles |
flag |
False |
The input is a folder of tiles (its .tif files) or a quoted glob: run every tile. |
--helpers |
flag |
False |
Also send tiles to the helpers of this computer's group (implies --tiles). |
--no-local |
flag |
False |
With --helpers: process nothing here, only hand out the tiles and collect the results. |
--local-cores |
int |
--jobs |
Cores for the tiles processed here (all but one by default). Each helper uses the cores it lends. |
--port |
int |
47801 |
TCP port the helpers connect to. |
- Resumable. Finished tiles are kept: running the same command again processes only the others. Running it with other options into the same output folder is refused rather than mixing results.
- Where the helpers read the tiles. From shared storage (a NAS) when they see the same file, otherwise this computer sends it (a file stored without compression goes as a lossless ZSTD copy); a helper keeps the tiles it received (20 GB by default), so another run does not send them again. Given a
.txtfile of URLs, each computer downloads the tiles it processes. Tiles built from STAC or Earth Engine on each computer:zeit.stac_tiles,zeit.gee_tiles(Python). - Where the results go. A helper that sees the output folder too (a NAS) writes into it; otherwise it sends them back.
- Progress. One line with the tiles done, the computers at work, the network rate and the time left; the helpers that join or leave; a tile that fails (tried again elsewhere, given up after two failures and listed at the end, with exit code 1).
- Files used by every tile (
--patternsoftwdtw,--dates-fileofccdc,--modelofclassify,--trainingofcoded) are sent to the helpers. Options naming a file of one raster (--weights,--samples) cannot be used with many tiles.
18. Lending a computer (zeit worker)¶
Run on each computer that helps. It waits for a computer of its group that runs tiles, processes the tiles it gets with all the cores it lends, and waits again, until Ctrl+C. The first time, it joins the group with the code shown by zeit helpers invite.
zeit worker --join K7QM-2XDP # the first time
zeit worker # from then on
zeit worker --cores 6 # lend only 6 cores
zeit worker --map "Z:\=/mnt/nas" # the NAS the coordinator sees as Z:\ is /mnt/nas here
| Option | Type | Default | Description |
|---|---|---|---|
--join |
str |
None | The invitation code, the first time only. |
--cores |
int |
all but one | Cores to lend. |
--connect |
HOST[:PORT] |
None | The coordinator's address, when broadcasts do not reach it (another subnet, a VPN). |
--map |
SRC=DST |
None | A shared folder mounted elsewhere here (repeatable). Mapped Windows drives are sent as UNC paths (\\nas\tiles), which Windows helpers read without a map. |
--cache-dir |
dirpath |
the user's cache folder | Where received tiles are kept. |
--cache-gb |
float |
20 |
Space the kept tiles may take. |
A helper only opens outgoing connections (no firewall rule on it) and only runs zeit's own commands. Both computers need the same zeit version; a helper with another one is told which to install. It keeps the computer from sleeping while it works.
19. The group (zeit helpers)¶
| Command | What it does |
|---|---|
zeit helpers invite [--minutes 10] |
Shows a code (such as K7QM-2XDP) with which other computers join this computer's group, while it runs. Any computer of the group can then run tiles with the others' help. |
zeit helpers list [--seconds 5] |
The helpers waiting for work on the local network: name, address, cores, zeit version. Busy helpers do not show. |
zeit helpers firewall |
On Windows, creates the inbound rules (TCP 47801 and UDP 47800, from the local subnet only), asking for administrator rights once. Needed on the computer that runs tiles, not on the helpers. |
zeit helpers leave |
Takes this computer out of its group (forgets the group's secret). |
Note on AI Tools (Deep Learning)¶
Currently, the AI tools (zeit.ai) are not exposed via the CLI.
Why?
Deep learning architectures (like UTAE, TempCNN, or Siamese Networks) require highly specific initializations based on your dataset (e.g., number of input bands, number of target classes, path to pre-trained .pth weights, and GPU allocation strategies). These configurations are too complex and dynamic to be safely passed as simple terminal arguments.
To use the AI tools, use the Python API: zeit.ai.samples, train and predict go from a cube and labelled samples to a map in three calls, and the models can be trained with a loop of your own.