Experiment tracking

A drop-in replacement for W&B and Neptune

Open source experiment tracking that keeps up at scale. Dual-log from W&B or Neptune, validate, then switch.

5B+ metric points ingested, zero dropped

"Trainy removed the stress from neptune.ai being taken off the market. They stepped up, built Pluto, and raced to feature parity, and we are working with them as they build the first AI-native experiment tracker."

Geoffrey Négiar

Geoffrey Négiar

Co-Founder @ The Forecasting Company

The Forecasting Company

Safe migration with dual-logging, without touching your training code

Our compatibility layers for W&B and Neptune Scale let you dual-log to both platforms simultaneously so you can validate Pluto against real production usage before committing.

$ pip install pluto-ml

$ pluto login  # or: export PLUTO_API_KEY=mlpi_xxx


import wandb  # Your existing wandb code works unchanged


with wandb.init(project="my-project", config=config) as run:

    # Training code here

    run.log({"accuracy": 0.9, "loss": 0.1})

Install pluto-ml and authenticate. Dual-logging activates automatically: every wandb.log() call also logs to Pluto, with zero code changes.

Always open source

Never get locked out again. Self-host Pluto on your own servers with full source access. No vendor can sunset your experiment tracking.

Run forking

Fork a run, branch a new experiment

Branch from any step of an existing run to explore training variations without starting from scratch. Try a new learning rate from a mid-training checkpoint, and stop burning GPUs on runs that will not converge.

import pluto


run = pluto.init(

    name="lr-sweep-v2",

    fork_run_id="MMP-42",  # parent run

    fork_step=500,  # branch point

    config={"lr": 0.001},  # override

)


for step in range(500, 1000):

    run.log({"loss": 0.4})

MMP-42original runlr-sweep-v2

forked from MMP-42 at step 500

claude code

> Compare train/loss across runs 100, 101, and 102. Which performed best?


pluto · compare_runs(metric="train/loss", runs=[100, 101, 102])


Run 102 has the lowest final loss

(0.118 vs 0.142 and 0.151) and converged ~2x faster.

Connect Pluto over the Model Context Protocol with one command, then ask in plain language.

AI-native via MCP

Query your runs from your AI assistant

Pluto's MCP integration lets tools like Claude Code read your metrics, logs, and files, so you can debug a run by asking. Compare experiments in natural language and surface the issue without leaving your editor.

Sandbox

Built for researchers who live in their dashboards

Explore an example project: every run logs 100k+ data points, including losses, gradient norms, and activations across layers.

Sub-second

Filter runs, compare metrics, and drill into any step in the live example without waiting, even with 100M+ data points in the project.

Every metric

Overlay losses, gradient norms, and activations across layers, then scroll and zoom into any step to see exactly where a run diverged.

Live

No signup and nothing to install. It is the real Pluto dashboard with real runs, open in your browser so you can click through every chart yourself.

Simple, predictable pricing

Start hosted for free, or self-host the open source. Pro adds generous caps with no metered surprises: no per-hour billing, no ingestion meters.

Free

Hosted

$0

Up to 2 seats

2 GB storage

W&B and Neptune-compatible API

Community support

Start free

Pro

Hosted, managed

Most popular
$250per seat / month

Up to 10 seats

10B data points/month

10 TB storage

Unlimited tracked hours

Run forking

Priority support

Start free trial

Enterprise

Larger teams

Custom

More than 10 seats

Custom data and storage limits

SSO and audit logs

Single-tenant or on-prem

Dedicated support and SLA

Contact us

Free for academics. Sign up with your .edu email.

Sign up

Prefer your own servers? Pluto is open source and free to self-host, and no vendor can ever sunset it.

Self-host guide

Migrate to Pluto today.

5B+ metric points stored with zero dropped. Dual-log alongside W&B or Neptune, validate on real runs, then switch.

Live example with 100M+ data points