Imports

Import W&B, Neptune, MLflow, and TensorBoard experiment history into InstantML with local-first CLI jobs.

Open .md

Bring existing experiment history into an InstantML workspace without handing vendor credentials to InstantML servers. The instantml CLI reads source data on your machine, normalizes it into import chunks, uploads a preview first with --dry-run, and commits only after you review the result.

Choose an import path

Each source has one command. Install the matching extra before you run it.

SourceCommandInstall extra
W&B, direct from the local wandb SDKinstantml import wandb --entity ... --source-project ...instantml[wandb]
W&B, transformed JSON export fileinstantml import wandb --project my-project --input wandb.jsonnone
Neptune Exporter Parquet directoryinstantml import neptune --input ./neptune-export/datainstantml[imports] (pyarrow)
MLflow, transformed JSON export fileinstantml import mlflow --input ./mlflow-export.jsonnone
TensorBoard scalar event filesinstantml sync tensorboard ./runs --project my-projectinstantml[tensorboard]

Preview with a dry run, then commit

Authenticate once with instantml login, then run any import with --dry-run to stage the job without writing runs:

bash
instantml login
instantml import wandb \
  --project cartpole \
  --entity my-team \
  --source-project old-project \
  --dry-run

The CLI prints the job id, job status, and run, metric, and artifact counts. When they look right, rerun the same command without --dry-run to commit the import.

Manage import jobs over the API

Import jobs are also addressable over the REST API with a bearer API key that has import/write permission. Use these routes to check on or cancel a staged job:

ActionRoute
List import jobsGET /api/imports
Create an import jobPOST /api/imports/jobs
Upload staged chunksPOST /api/imports/jobs/{import_id}/chunks
Check job status, warnings, and progressGET /api/imports/jobs/{import_id}
Commit a staged jobPOST /api/imports/jobs/{import_id}/commit
Cancel a staged jobPOST /api/imports/jobs/{import_id}/cancel
W&B transformed JSON (legacy)POST /api/imports/wandb
MLflow transformed JSON (legacy)POST /api/imports/mlflow
Neptune-shaped transformed JSON (legacy)POST /api/imports/neptune

For example, check a job's status and cancel it if the preview looks wrong:

bash
curl https://api.instantml.ai/api/imports/jobs/42 \
  -H "Authorization: Bearer instantml_..."

curl -X POST https://api.instantml.ai/api/imports/jobs/42/cancel \
  -H "Authorization: Bearer instantml_..."

The legacy JSON routes accept transformed JSON payloads and remain for backward compatibility. Prefer the CLI flow: it adds dry-run readiness, warning previews, chunked uploads, real Neptune Exporter Parquet support, direct W&B export, and TensorBoard sync.

Know what importers preserve

Importers carry over the experiment-tracking spine:

  • Projects and runs.
  • Config values and params.
  • Tags and notes when present.
  • Metric history and summaries.
  • External artifact references: declared sizes, MIME types, metadata, and metadata-only artifact catalog bundles for lineage.
  • Import status and diagnostics.

Importers write artifact references only β€” they never copy source artifact bytes into InstantML-hosted storage. Imported references appear in the raw run artifact list and in the versioned Artifacts catalog, and they participate in lineage, but downloads stay unavailable until you upload the actual bytes with the SDK.

Understand limits

Imports count against the same project, run, metric-point, and metadata/operational-storage plan limits as SDK writes. Accepted chunks count as retained operational storage, and each job has a 2 GiB staged-payload ceiling, so abandoned dry-run jobs cannot consume unbounded space. Storage-heavy migrations should use Premium or custom terms before separately uploading retained artifact bytes.

Respect compatibility boundaries

Importers do not claim full vendor parity for W&B sweeps, reports, or launch, full Neptune namespace semantics, TensorBoard media, or server-side hosted vendor credential pulls. Source credentials stay local.

Next steps