Quick Start
Install Pluto and authenticate. Use eitherpluto login (stores a token in your system keyring — recommended for interactive workstations) or export PLUTO_API_KEY (recommended for CI / containers / non-interactive jobs):
wandb.log() call now also logs to Pluto. No PLUTO_PROJECT env var needed — the shim picks up the project= kwarg from wandb.init().
Configuration
Authentication
Either of the following is sufficient — the hook checks both:
If neither is present, the shim logs a one-time warning pointing at
pluto login / PLUTO_API_KEY and wandb runs unmodified.
Project Name
Resolved in this order (first match wins):Optional Environment Variables
Supported Operations
The compatibility layer monkey-patcheswandb.init() so the returned Run object dual-logs every supported call. Unsupported methods still work normally on wandb via attribute fallthrough — they just don’t dual-log to Pluto.
Initialization
wandb.init() completes fully before any Pluto code runs. pluto.init() runs in a thread with a 10s timeout — if the Pluto server is unreachable, the run silently falls back to wandb-only. Tag assignments on the wandb run sync to Pluto on every assignment.
Metric Logging
Numeric values, lists of numbers, and the wandb media types below are forwarded to Pluto. The
data dict you pass into wandb.log() is never mutated.
Media Logging
Lists of media at the same step (
wandb.log({"gens": [wandb.Image(a), wandb.Image(b)]})) are forwarded as a multi-sample group. The Pluto UI renders these with a per-card ◀ i / N ▶ nav — see Images: Multi-Sample Logging.
Artifacts and Saved Files
Reference entries (S3 URLs, etc.) inside
wandb.Artifact are skipped — Pluto stores files directly. Artifact versions and aliases are not translated; Pluto has no equivalent.
Finish
wandb.finish() triggers pluto.finish() as well. Pluto’s teardown has a 5s timeout so it never blocks wandb’s cleanup. If pluto.init() failed earlier, the run stays wandb-only and finish() is a no-op on the Pluto side.
Not Supported
These wandb features run normally on wandb but do not dual-log to Pluto:Post-Sunset Mode
When you’re ready to stop sending data to wandb, set the kill switch:WANDB_API_KEY can also hold a Pluto API token, so a user fully migrating from wandb can swap a single env var value:
wandb.* calls are intercepted and redirected to Pluto without any code changes.