---
title: Standalone Usage
description: 'Use LitLogger in any Python process without Lightning. For new code, the'
canonical: 'https://lightning.ai/docs/litlogger/stable/guides/standalone'
---
# Standalone Usage {#standalone-usage}

Use LitLogger in any Python process without Lightning. For new code, the
recommended standalone workflow is the dict-style
[`Experiment`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment) API returned by
[`litlogger.init()`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.init.init).

![Comparing experiment metrics in a table](https://pl-bolts-doc-images.s3.us-east-2.amazonaws.com/litlogger/experiment_comparison_table.png)

## Using the Experiment API {#using-the-experiment-api}

```python
import litlogger
from litlogger import File

experiment = litlogger.init(name="my-experiment")

experiment["model"] = "resnet50"
experiment["lr"] = "0.001"

for step in range(100):
    experiment["train/loss"].append(1.0 / (step + 1), step=step)
    experiment["train/accuracy"].append(step / 100.0, step=step)

experiment["config"] = File("config.yaml")
experiment.finalize()
```

The new standalone API covers:

- Setting metadata with `experiment["key"] = "value"`
- Logging metrics with [`append`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.series.Series.append) and
  [`extend`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.series.Series.extend)
- Logging artifacts, media, and models through file-like wrappers
- Retrieving logged data through [`metadata`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment.metadata),
  [`metrics`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment.metrics), and
  [`artifacts`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment.artifacts)

## Metric Logging {#metric-logging}

```python
experiment["loss"].append(0.5, step=0)
experiment["loss"].extend([0.4, 0.3, 0.2], start_step=1)
```

## Metadata {#metadata}

Metadata can be provided at initialization time or added later:

```python
experiment = litlogger.init(
    name="training-run",
    metadata={"dataset": "imagenet"},
)

experiment["optimizer"] = "adamw"
```

## Files, Media, and Models {#files-media-and-models}

```python
from litlogger import File, Image, Model, Text, Video

experiment["config"] = File("config.yaml")
experiment["preview"] = Image("sample.png")
experiment["notes"] = Text("training summary")
experiment["rollout"] = Video("preview.mp4")
experiment["checkpoint"] = Model("checkpoint.ckpt")
```

## Resume by Name {#resume-by-name}

Initializing with the same name reconnects to the same experiment.

```python
experiment = litlogger.init(name="my-experiment")
experiment["train/loss"].append(0.2, step=100)
experiment.finalize()
```

## Runtime Views {#runtime-views}

Use [`metadata`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment.metadata),
[`metrics`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment.metrics),
[`artifacts`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment.artifacts), and
[`url`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment.url) to inspect the current run state.

```python
print(experiment.metadata)
print(experiment.metrics)
print(experiment.artifacts)
print(experiment.url)
```

## Legacy Module-Level API {#legacy-module-level-api}

The older module-level API is still available for compatibility through
[`log_metrics`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.log_metrics), [`log_file`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.log_file),
[`log_metadata`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.log_metadata), and [`finalize`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.finalize):

```python
import litlogger

litlogger.init(name="legacy-script")
litlogger.log_metrics({"loss": 0.5}, step=0)
litlogger.log_file("config.yaml")
litlogger.log_metadata({"model": "resnet50"})
litlogger.finalize()
```

This API is useful for existing scripts, but the dict-style [`Experiment`](/docs/litlogger/2026.08.28/api-reference/api.md#litlogger.experiment.Experiment) API is the primary
user-facing workflow.

## Operational Options {#operational-options}

Common standalone options:

- `teamspace=...` to select a teamspace explicitly
- `save_logs=True` to capture terminal output as `console_output.txt`
- `light_color=...` and `dark_color=...` to override chart colors
- `store_step=False` or `store_created_at=True` to control tracker data

## Related Docs {#related-docs}

- [Quickstart](/docs/litlogger/2026.08.28/tutorials/quickstart.md)
- [Files, Media, Models](/docs/litlogger/2026.08.28/tutorials/file_media_model.md)
- [Workflows](/docs/litlogger/2026.08.28/guides/workflows.md)

---

**Navigation**

- Parent: [Guides](/docs/litlogger/2026.08.28/guides.md)
