Metadata-Version: 2.4
Name: omnitrack
Version: 0.1.0
Summary: Unified logging and experiment tracking for research workflows
Project-URL: Homepage, https://github.com/lars-quaedvlieg/omnitrack
Project-URL: Issues, https://github.com/lars-quaedvlieg/omnitrack/issues
Author-email: Lars Quaedvlieg <larsquaedvlieg@outlook.com>
License: MIT
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: hydra-core>=1.3.2
Requires-Dist: numpy<2
Requires-Dist: psutil>=7.1.0
Requires-Dist: rich>=14.1.0
Requires-Dist: torch>=2.8.0
Requires-Dist: wandb>=0.22.0
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: build; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Description-Content-Type: text/markdown

# Omnitrack 🚀

Unified logging and experiment tracking for ML research.  
Log once → sync everywhere (console, JSONL, W&B, …).

## Features
- 📊 Multi-sink logging (`ConsoleSink`, `JSONLSink`, `WandbSink`)
- 🌲 Hierarchical config & tags
- 🚀 Beautiful Rich-based console
- 🔌 Extensible sink interface
- ⚡ Efficient: batch logging, manual refresh

## Quickstart

```bash
pip install omnitrack
```

```python
from omnitrack import LogSession, record, step, push_config, set_tags
from omnitrack.sinks.console import ConsoleSink

with LogSession(sinks=[ConsoleSink()]):
    push_config({"lr": 1e-3, "batch_size": 64})
    set_tags(env="demo")

    for e in range(3):
        step("epoch")
        for b in range(10):
            step("batch")
            record(step_name="batch", loss=0.1, acc=0.9)
```

## Demo

Run the built-in demo:

```bash
omnitrack demo --jsonl logs/demo.jsonl
```