ML-Dash

Command-Line Interface (CLI)

The ml-dash CLI authenticates, queries, and manages projects and experiments on a remote server. Installed with the Python package:

bash
pip install ml-dash
ml-dash --help
CommandDescription
versionShow ml-dash version
loginAuthenticate via OAuth2 device flow
logoutClear stored token
profileShow current user
apiSend raw GraphQL queries/mutations
listList projects, experiments, or tracks
createCreate a project

All commands accept --dash-url / --api-url (defaults to stored config or https://api.dash.ml) and --help.


ml-dash version

Print the installed version.

bash
ml-dash version

ml-dash login

Authenticate using the OAuth2 device authorization flow. Displays a URL, user code, and QR code; opens a browser; polls for authorization (10-minute timeout); stores the token in the system keychain.

bash
ml-dash login [--dash-url URL] [--auth-url URL] [--no-browser]
FlagDescription
--dash-url, --api-urlML-Dash server URL
--auth-urlOAuth authorization server URL
--no-browserDon't open the browser automatically
bash
ml-dash login --dash-url https://your-server.com

After login, all commands pick up the stored token; no --api-key flag needed.


ml-dash logout

Clear the stored token from the system keychain.

bash
ml-dash logout

ml-dash profile

Show the current authenticated user. By default fetches live data from the server; --cached reads only the stored token payload.

bash
ml-dash profile [--dash-url URL] [--json] [--cached]
FlagDescription
--jsonOutput as JSON
--cachedUse cached token data instead of fetching

Displays username, user ID, name, email, remote URL, and token expiration status.

bash
ml-dash profile --json

ml-dash api

Send raw GraphQL queries or mutations.

bash
ml-dash api (--query QUERY | --mutation MUTATION) [--jq PATH] [--dash-url URL]
FlagDescription
--query, -qGraphQL query string
--mutation, -mGraphQL mutation string
--jq PATHExtract a value by dot-path (e.g. .me.username)

Notes:

  • Single quotes are auto-converted to double quotes.
  • --jq paths skip the top-level data key — use .me.username, not .data.me.username.
  • Bare bodies are auto-wrapped: me { username } becomes { me { username } }.
bash
ml-dash api --query "me { username }" --jq ".me.username"

ml-dash create

Create a new project. If the project already exists, the command exits successfully with a warning.

bash
ml-dash create -p PROJECT [-d DESCRIPTION] [--dash-url URL]
FlagDescription
-p, --projectproject or namespace/project (required). Namespace auto-resolves from the authenticated user if omitted.
-d, --descriptionProject description
bash
ml-dash create -p tom/my-project -d "Baseline experiments"

ml-dash list

List projects, experiments, or tracks with server-side pagination (50 per page; navigate with n//Space for next, p/ for previous, any other key to quit).

bash
ml-dash list [-p PROJECT] [-n NAMESPACE] [--status STATUS] [--tags TAGS]
             [--detailed] [--tracks] [--topic-filter TOPIC]
             [--dash-url URL] [-v]
FlagDescription
-p, --projectProject filter. Supports glob patterns — always quote them to prevent shell expansion
-n, --namespaceNamespace (defaults to authenticated user)
--statusFilter by COMPLETED, RUNNING, FAILED, or ARCHIVED
--tagsComma-separated tag filter
--detailedShow tags and created time
--tracksList tracks inside an experiment (requires full namespace/project/experiment path)
--topic-filterFilter tracks by topic pattern (e.g. robot/*)
-v, --verboseShow full error tracebacks

Glob patterns expand against the current namespace: tes* becomes {namespace}/tes*/*; tom/tes* becomes tom/tes*/*; fully-qualified patterns are left unchanged.

bash
# List your projects
ml-dash list

# Wildcard search (quote the pattern)
ml-dash list -p 'tom/tes*'

# Tracks inside an experiment, filtered by topic
ml-dash list --tracks -p tom/test/my-experiment --topic-filter "robot/*"

See Experiments and Metrics for working with the data these commands surface.


CI / scripting

Store the token in ~/.dash/config.json to skip login:

json
{
  "remote_url": "https://api.dash.ml",
  "api_key": "your-jwt-token"
}

If ml-dash isn't on PATH, run python -m ml_dash.cli or uv run ml-dash.