Skip to main content

Local experiment tracking with model versioning - self-hosted W&B alternative with Artifacts

Reason this release was yanked:

Post-release issues were found in 0.7.1 (CI, dependency metadata, and cross-platform test fixes). Please use 0.7.2 instead.

Project description

Runicorn

English | 简体中文

PyPI version Python 3.10+ License: MIT

Runicorn logo

Local-first experiment tracking for teams and individuals who keep ML runs on their own machines or GPU servers.

Runicorn combines a Python SDK, Web UI, Remote Viewer, and optional Windows desktop build into one workflow. It is designed for people who want experiment tracking without pushing runs into a SaaS platform, mirroring remote run folders back to a laptop, or rewriting an existing training stack from scratch.

If your experiments run on remote Linux boxes, Runicorn can start a lightweight Viewer on the remote machine and tunnel it over SSH, so you inspect runs directly where they live.

Documentation Site

Runicorn experiments view


Why Runicorn

  • Data stays under your control: runs, logs, assets, and settings remain on storage you control
  • Remote Viewer without file sync: inspect remote GPU-server experiments over SSH instead of copying run folders back first
  • Low-friction adoption: start with rn.init(...) and run.log(...), while keeping compatibility with print(), Python logging, torchvision MetricLogger, ImageNet meters, TensorBoard, and tensorboardX
  • Real experiment context: store config metadata, dataset references, pretrained references, code snapshots, and archived outputs alongside scalar metrics
  • Rich local UI: path tree, compare mode, assets repository, recycle bin, import/export, GPU telemetry, and remote session management

Who It's For

Good fit

  • You train locally or on your own servers and want experiment tracking without SaaS lock-in
  • You often switch between a local workstation and remote GPU machines
  • You want metrics, logs, code context, and experiment assets tied to the same run
  • You already have training code and want an incremental adoption path instead of a large rewrite

Not a good fit

  • You need a hosted collaboration platform, cloud dashboards, or team permissions out of the box
  • You only want a minimal CSV logger and do not care about browsing runs later
  • Your workflow depends on a managed online ecosystem rather than local or self-controlled infrastructure

Quick Start

Install Runicorn:

pip install -U runicorn

Log your first run:

import runicorn as rn

run = rn.init(
    path="cv/resnet50/baseline",
    alias="trial-01",
    capture_console=True,
)

for epoch in range(1, 11):
    train_loss = 1.0 / epoch
    val_acc = 0.70 + epoch * 0.02
    run.log({"train_loss": train_loss, "val_acc": val_acc})

run.summary({"notes": "first stable run"})
run.finish()

Open the viewer:

runicorn viewer

Then visit http://127.0.0.1:23300.


What Makes It Different

Workflow Common friction Runicorn
Manual local folders + scripts Metrics, logs, configs, and outputs drift apart Keeps run history, summary, logs, and assets tied to one run
Remote SSH + tail + ad-hoc plotting Slow to inspect, hard to compare, easy to lose context Remote Viewer gives a structured UI over SSH without a sync-first loop
Hosted experiment tracker Requires internet/service trust and external storage Keeps experiment data local and under your storage boundary

Remote Viewer

Runicorn is strongest when training happens on remote GPU servers.

With Remote Viewer, you can connect over SSH, choose the remote Python environment, start a remote Viewer session, and inspect remote runs through your local browser or desktop app.

No local mirror. No manual sync step. No waiting for large run folders to copy.

runicorn viewer
# Open the Remote page -> connect over SSH -> choose environment -> start session
Old sync-heavy workflow Remote Viewer
Wait time Minutes to hours Seconds
Local storage copy Required Not required
Experiment inspection Delayed Direct over SSH

Logging Compatibility

Runicorn is built to fit into training code that already exists.

If your loop already uses torchvision-style metric logging, you can often start by replacing one import:

from runicorn.log_compat.torchvision import MetricLogger as MetricLogger

Runicorn also provides compatibility helpers for:

  • runicorn.log_compat.imagenet
  • runicorn.log_compat.tensorboard
  • runicorn.log_compat.tensorboardX

You can also capture print() output and Python logging, but the main value here is structured metric compatibility that turns existing training signals into real experiment curves.


Assets and Run Context

Runicorn does not stop at scalar metrics. You can also record the surrounding context that makes runs understandable later:

  • config metadata
  • dataset references
  • pretrained model references
  • code snapshots
  • archived output files
  • cross-run asset browsing and preview

Use run.log_config(...), run.log_dataset(...), and run.log_pretrained(...) inside a run to attach reusable training context directly to the experiment record.


Documentation


License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

runicorn-0.7.1.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

runicorn-0.7.1-py3-none-any.whl (1.7 MB view details)

Uploaded Python 3

File details

Details for the file runicorn-0.7.1.tar.gz.

File metadata

  • Download URL: runicorn-0.7.1.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for runicorn-0.7.1.tar.gz
Algorithm Hash digest
SHA256 dc265f880136da2c7ac72b25088d6f58f1dd30f5c75e1cf1d7683f69fcfd0dea
MD5 9fe7ac7c670f8d80f531fd0693af4e46
BLAKE2b-256 68c7b0abc082ac6ac068695d72ccddab131600cc9a10afc7d5577a5d25117d43

See more details on using hashes here.

File details

Details for the file runicorn-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: runicorn-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for runicorn-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 51cd40d19ad0583425704c0ababfef679d5d5560e2812a0b92bd6da82cf687cb
MD5 0405c729a23e8b2cdf5678dfc674c334
BLAKE2b-256 53d3981525d144511db02aed3dc7ca51193700cb7f5317a56eae6280ec20d098

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page