Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
83876dc
chore: build against the client's job API
jwric Oct 7, 2026
711b61a
feat: add tracel jobs
jwric Oct 7, 2026
1282992
feat: tracel run replaces tracel train
jwric Oct 7, 2026
59ce52f
fix: key code versions by their packaged content
jwric Oct 7, 2026
0008da9
fix: init no longer needs a git commit
jwric Oct 7, 2026
ad50c25
fix: package source as a zip, from any workspace location
jwric Oct 7, 2026
f612152
feat: tracel run --remote queues the project as a job
jwric Oct 7, 2026
2e31dd9
feat: compare two experiments
jwric Oct 7, 2026
e464174
feat: run jobs by name with tracel run
jwric Oct 7, 2026
bde4cc8
refactor: package with ignore rules alone, without git
jwric Oct 7, 2026
f1a5fb3
fix: read only namespace and project from tracel.toml
jwric Oct 7, 2026
76d6bb2
chore: declare the Rust version the dependencies need
jwric Oct 7, 2026
aea913e
fix: binary packages use the source digest
jwric Oct 7, 2026
6d0d69f
feat: tracel run takes the job's own flags
jwric Oct 7, 2026
28c2bbc
refactor: the launcher decides when a job was stopped
jwric Oct 7, 2026
0a03e0c
refactor: the run report is the job's
jwric Oct 7, 2026
6e0b4ed
refactor: a job has no kind
jwric Oct 7, 2026
786c5a2
refactor: a job ends on its exit code, with the SDK's tracel-job
jwric Oct 14, 2026
0be2cd3
feat: a stop kills the job and what it started
jwric Oct 14, 2026
7a819e3
feat: tracel always builds in release
jwric Oct 14, 2026
4cb8f4e
feat: run and jobs follow the CLI's message style and layout
jwric Oct 14, 2026
915b2b9
test: one readable test per behavior for runs and jobs
jwric Oct 14, 2026
ecfae61
docs: the README and the reference describe runs as they are now
jwric Oct 14, 2026
9e9f5af
chore: build against tracel-client after its job reads and the SDK's …
jwric Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,340 changes: 380 additions & 960 deletions Cargo.lock

Large diffs are not rendered by default.

17 changes: 8 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ edition = "2024"
version = "0.5.1"
readme = "README.md"
license = "MIT OR Apache-2.0"
rust-version = "1.87.0"
rust-version = "1.97.0"
authors = ["Tracel Technologies Inc."]
repository = "https://github.com/tracel-ai/tracel-cli"
keywords = ["tracel", "burn", "cli"]
Expand All @@ -21,7 +21,7 @@ categories = ["command-line-interface", "development-tools"]
anyhow = "1.0.104"
toml = "0.8.23"
toml_edit = "0.22.27"
clap = { version = "4.6.4", features = ["derive", "cargo"] }
clap = { version = "4.6.4", features = ["derive", "cargo", "string"] }
derive-new = { version = "0.7.0", default-features = false }
tracing = "0.1.44"
serde = { version = "1.0.229", default-features = false, features = ["derive"] }
Expand All @@ -35,22 +35,21 @@ supports-hyperlinks = "3.2.0"
webbrowser = "1.2.4"
url = "2.5.8"
cargo_metadata = { version = "0.20.0", features = ["builder"] }
flate2 = { version = "1.1.9", default-features = false, features = ["zlib"] }
tar = { version = "0.4.46", default-features = false }
walkdir = "2"
zip = { version = "6.0.0", default-features = false, features = ["deflate-flate2-zlib-rs"] }
ignore = "0.4.30"
gix = { version = "0.77.0", default-features = false, features = [
"dirwalk",
"status",
] }
chrono = "0.4.45"
strum = { version = "0.27.2", features = ["derive"] }
jsonschema = { version = "0.58.6", default-features = false }
tempfile = "3.27.0"
ctrlc = { version = "3.5.2", features = ["termination"] }
libc = "0.2.189"
rstest = { version = "0.27.0", default-features = false }


## External Crate
tracel-client = { git = "https://github.com/tracel-ai/burn-central-client", rev = "5a618779e8b9288f51415da6af4f385194b6e950" }
tracel-client = { git = "https://github.com/tracel-ai/burn-central-client", rev = "8b909baa569effcd4bf336a1256e23be25036f01" }
tracel-job = { git = "https://github.com/tracel-ai/tracel", rev = "84d5b9a3f6c9c1fee2c3401073a50c56bdc536b4" }

## Crate
tracel-cli = { version = "0.5.0", path = "crates/tracel-cli" }
Expand Down
58 changes: 44 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ The Tracel CLI (`tracel`) works with the
and run training on compute providers. Together with the
[Tracel SDK](https://github.com/tracel-ai/tracel) in your project, it lets you:

- run your project locally and browse its experiments, metrics and logs;
- run your program's jobs, on your machine or on compute providers, and browse
their experiments, metrics and logs;
- package your code for compute providers;
- push, pull and promote models, and download artifacts and datasets.

Expand All @@ -35,7 +36,7 @@ cd tracel-cli
cargo install --path crates/tracel-cli
```

You need Rust 1.87 or later, an account on the
You need Rust 1.97 or later, an account on the
[Tracel Console](https://console.tracel.ai/), and the Tracel SDK in your Burn
project.

Expand All @@ -44,7 +45,8 @@ project.
```bash
tracel login # approve the login in your browser
tracel init # link this workspace to a Console project
tracel train # run it locally with `cargo run`
tracel run --list # list the jobs your program defines
tracel run train # run one, recording it on the Console
tracel experiments list
```

Expand Down Expand Up @@ -94,12 +96,11 @@ Tracel Console, creating the project if it doesn't exist. The link is saved in

```bash
tracel init
tracel init --owner my-org --name mnist --yes --allow-dirty
tracel init --owner my-org --name mnist --yes
tracel unlink
```

`init` needs a git commit, and offers to commit your changes. `--force` links a
workspace that is already linked to another project.
`--force` links a workspace that is already linked to another project.

### `tracel project`

Expand All @@ -112,38 +113,54 @@ tracel project list
tracel project list my-org
```

### `tracel train`
### `tracel run`

Run the workspace locally with `cargo run`. Arguments after `--` go to your
program, and its output and exit code are the command's.
Run a job your program defines, on this machine or on a compute provider. Its
input starts from the job's example, or from the input an experiment recorded
with `--like`; `-c` merges JSON files onto it, and the job's own flags or `--set`
change single values. `tracel run <job> --help` lists the job's flags. The run
is recorded on the Tracel Console when the workspace is linked and you're logged
in, and on this machine otherwise. Ctrl-C stops the job.

With `--remote`, the workspace is packaged as `tracel package` does and the job
is queued on a compute provider group once you confirm, since a job may incur
costs. `--follow` then shows its logs until it finishes. Without a job,
`tracel run` is `cargo run --release`.

```bash
tracel train -- --epochs 10
tracel run --list
tracel run train --help
tracel run train --epochs 5 --optimizer.lr 0.01
tracel run train --set epochs=5 -c base.json --like 42
tracel run train --offline
tracel run train --remote gpu --mode binary --yes --follow
tracel run -- --epochs 10
```

### `tracel package`

Upload a code version of the workspace, the code compute providers run: a
compiled binary, or the source to build there. A code version is the current
commit, so `package` offers to commit your changes first.
compiled binary, or the source to build there. Packaging the same source again
gives the same code version.

```bash
tracel package
tracel package --mode binary --target x86_64-unknown-linux-gnu --json
tracel package --mode source --allow-dirty
tracel package --mode source
```

### `tracel experiments`

Browse the project's experiments by their number, along with their metrics and
logs. `exp` is short for `experiments`.
logs, and compare two of them. `exp` is short for `experiments`.

```bash
tracel experiments list --sort created_at,desc --limit 10
tracel exp get latest
tracel exp metrics 42 --metric loss
tracel exp logs 42 --level warn --level error
tracel exp logs 42 --follow
tracel exp compare 41 42 --metric loss
```

### `tracel models`
Expand Down Expand Up @@ -181,6 +198,19 @@ tracel datasets get images
tracel datasets versions images
```

### `tracel jobs`

Browse the project's jobs on compute providers, read and follow their logs,
cancel them, and wait for them to finish.

```bash
tracel jobs list
tracel jobs get 12
tracel jobs logs 12 --follow
tracel jobs cancel 12
tracel jobs wait 12 --timeout 3600
```

## Development

```bash
Expand Down
12 changes: 8 additions & 4 deletions crates/tracel-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ path = "src/bin/tracel.rs"

[dependencies]
tracel-client.workspace = true
tracel-job = { workspace = true, features = ["cli"] }
anyhow.workspace = true
clap.workspace = true
console.workspace = true
Expand All @@ -31,13 +32,16 @@ thiserror.workspace = true
toml_edit.workspace = true
url.workspace = true
toml.workspace = true
gix.workspace = true
cargo_metadata.workspace = true
ignore.workspace = true
flate2.workspace = true
tar.workspace = true
walkdir.workspace = true
zip.workspace = true
jsonschema.workspace = true
tempfile.workspace = true
ctrlc.workspace = true

[target.'cfg(unix)'.dependencies]
libc.workspace = true

[dev-dependencies]
rstest.workspace = true
tempfile.workspace = true
Loading
Loading