gwenlake command, its shorter alias gwl, and gwenlake-train.
gwenlake
The same resources as the Python client, in noun-verb form:
--json prints what the API answered, ready for jq. gwenlake --help lists the resources, gwenlake <resource> --help the commands of one.
- A first look
- SQL and exports
- Builds and schedules
- Code
Names
A dataset is named<project>.<dataset>, with the slugs the platform shows (fleetsight.aisdk_positions), or by its id (res.dataset.…). A project is named by its slug or its id. Other resources (builds, schedules, transforms, repositories, queries) are named by id; their list commands show the ids.
Resources and commands
Destructive commands (
delete, empty) ask for confirmation; pass --yes in a script.
Builds
builds run builds a dataset and every producer upstream of it, whether its data changed or not; --target-only builds the dataset alone. With --wait, each step is printed on stderr as it settles, with its duration, and the table of the batch on stdout once it is over:
--follow (-f) prints each build’s log as it runs, and builds logs --follow prints one build’s log until it ends. builds run, retry and propagate with --wait or --follow, builds wait and builds logs --follow exit with status 1 when a build failed or was cancelled, so a script can stop there.
--dry-runasks the platform for the plan arunwould follow (the steps in order, what each one waits for, the other datasets a step rewrites) and starts nothing. It is refused where the build would be.- Several datasets give one batch each; a dataset the platform refuses does not stop the others.
retrybuilds the target of a finished build again, on the same data branch: retrying the last build of a failed batch runs the batch again.propagatebuilds again every dataset downstream of one, not the dataset itself; see Workflows.cancel --batchcancels every build of the batch still pending or running, the last steps first.listshows each target as<project>.<dataset>and each build’s duration.--projectkeeps the builds of a project’s datasets and models,--triggerthose of one kind (manual,schedule,event),--sincethose started after a date, a time or an age (2026-11-01,2026-11-01T08:00,90m,6h,3d).
Credentials
The command resolves its API key in the same order as the client:--api-key;--profile NAME, a section of the credentials file (orGWENLAKE_PROFILE);GWENLAKE_API_KEYin the environment — a.envfile in the current directory is read first, which is how a project keeps its key next to its code;- the
defaultprofile of the credentials file.
~/.gwenlake/credentials (%APPDATA%\.gwenlake\credentials on Windows), an INI file with one section per profile. gwenlake config manages it without opening an editor:
~/.gwenlake/credentials
token (an API key) or an OAuth2 client_id and client_secret (see Authentication), and may carry the endpoint it is for as base_url (or host for a bare host). hostname is the OAuth server, not the API. The file is written readable by you only.
Endpoints
gwenlake config endpoints prints this table with the endpoint in use. The endpoint is chosen, in order of precedence, by:
--base-urlon the command: a short name (--base-url atlas), a host (--base-url atlas.acme.example) or a URL;- the
GWENLAKE_BASE_URLenvironment variable; - the
base_url(orhost) key of the selected profile; api.
base_url makes a tenant one option away: gwenlake --profile acme datasets list.
A deployment serves the API under a version prefix: an API host under /v1 (https://api.gwenlake.com/v1), an Atlas application host under /api/v1 (https://atlas.gwenlake.com/api/v1, or a tenant’s own host). The command completes what is missing: a bare host gets /v1, a host with /api gets /api/v1, any other path is used as given (http://localhost:8000/v1). Since a tenant’s host may serve the API either way, gwenlake config set-profile --base-url atlas.acme.example probes both and stores the one that answers; --no-probe stores the URL as completed. A URL that answers the application’s HTML page instead of JSON is reported as such.
gwenlake-train
Finds the function decorated with @train in a project and runs it. This is what the GPU pool runs, and what you run locally to test a training.
--steps and --eval-every override the defaults set on the decorator without touching the code. See Models.