# Technical Documentation: mikel-brostrom/boxmot
> ℹ️ **Provenance:** Hybrid Fusion: `mikel-brostrom/boxmot` (README + 2 In-Tree Chapters) · [CodeWiki Reference](https://codewiki.google/github.com/mikel-brostrom/boxmot) · Recency: Active (< 180 days)
## 1. Project Overview & Quickstart (mikel-brostrom/boxmot)
BoxMOT gives you one CLI and one Python API for running modern multi-object tracking workflows. It covers direct tracking, cached benchmark evaluation, tuning, research loops, ReID training and evaluation, and ReID export without forcing you to rebuild the detector and tracker stack for each experiment.
## Why BoxMOT
- One interface for `track`, `generate`, `eval`, `tune`, `research`, `train`, `eval-reid`, and `export`.
- Swappable trackers with shared detector and ReID plumbing.
- Benchmark-oriented workflows with reusable detections and embeddings.
- Support for both AABB and OBB tracking paths.
- Optional production-ready native C++ tracker implementations with the same metrics as the Python path, opted into via `--tracker-backend cpp` and embeddable in standalone C++ projects via CMake (see [Native C++ Integration](docs/guides/native-cpp.md)).
- Public Python API for embedding the same workflows in applications and notebooks.
## Installation
BoxMOT supports Python `3.10` through `3.13`.
```bash
pip install boxmot
boxmot --help
```
For mode-specific extras such as `yolo`, `evolve`, `research`, `onnx`, `openvino`, and `tflite`, see the [installation guide](docs/getting-started/installation.md).
## Benchmark Results
Related guides:
- [Evaluation and Postprocessing](docs/guides/evaluation.md)
- [Benchmark Workflows](docs/guides/benchmarks.md)
- [Native C++ Integration](docs/native/index.md)
## Minimal Usage
CLI:
```bash
boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost --source 0 --save --show
```
Python:
```python
import numpy as np
from boxmot.trackers import OccluBoost
tracker = OccluBoost()
# dets: (N, 6) array with [x1, y1, x2, y2, conf, cls] per detection
dets = np.array([[100, 200, 300, 400, 0.9, 0]], dtype=np.float32)
img = np.zeros((480, 640, 3), dtype=np.uint8) # current frame
# tracks: (M, 8) array with [x1, y1, x2, y2, id, conf, cls, det_ind] per track
tracks = tracker.update(dets, img)
print(tracks)
```
## Contributing
Start with [CONTRIBUTING.md](CONTRIBUTING.md) and the [contributor docs](docs/contributing/index.md).
## Contributors
## Support and Citation
- Bugs and feature requests: [GitHub Issues](https://github.com/mikel-brostrom/boxmot/issues)
- Questions and discussion: [GitHub Discussions](https://github.com/mikel-brostrom/boxmot/discussions) or [Discord](https://discord.gg/tUmFEcYU4q)
- Citation metadata: [CITATION.cff](https://github.com/mikel-brostrom/boxmot/blob/master/CITATION.cff)
- Commercial support: `box-mot@outlook.com`
## 2. In-Tree Documentation Chapters (mikel-brostrom/boxmot)
## File: README.md
BoxMOT gives you one CLI and one Python API for running modern multi-object tracking workflows. It covers direct tracking, cached benchmark evaluation, tuning, research loops, ReID training and evaluation, and ReID export without forcing you to rebuild the detector and tracker stack for each experiment.
## Why BoxMOT
- One interface for `track`, `generate`, `eval`, `tune`, `research`, `train`, `eval-reid`, and `export`.
- Swappable trackers with shared detector and ReID plumbing.
- Benchmark-oriented workflows with reusable detections and embeddings.
- Support for both AABB and OBB tracking paths.
- Optional production-ready native C++ tracker implementations with the same metrics as the Python path, opted into via `--tracker-backend cpp` and embeddable in standalone C++ projects via CMake (see [Native C++ Integration](docs/guides/native-cpp.md)).
- Public Python API for embedding the same workflows in applications and notebooks.
## Installation
BoxMOT supports Python `3.10` through `3.13`.
```bash
pip install boxmot
boxmot --help
```
For mode-specific extras such as `yolo`, `evolve`, `research`, `onnx`, `openvino`, and `tflite`, see the [installation guide](docs/getting-started/installation.md).
## Benchmark Results
Related guides:
- [Evaluation and Postprocessing](docs/guides/evaluation.md)
- [Benchmark Workflows](docs/guides/benchmarks.md)
- [Native C++ Integration](docs/native/index.md)
## Minimal Usage
CLI:
```bash
boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost --source 0 --save --show
```
Python:
```python
import numpy as np
from boxmot.trackers import OccluBoost
tracker = OccluBoost()
# dets: (N, 6) array with [x1, y1, x2, y2, conf, cls] per detection
dets = np.array([[100, 200, 300, 400, 0.9, 0]], dtype=np.float32)
img = np.zeros((480, 640, 3), dtype=np.uint8) # current frame
# tracks: (M, 8) array with [x1, y1, x2, y2, id, conf, cls, det_ind] per track
tracks = tracker.update(dets, img)
print(tracks)
```
## Contributing
Start with [CONTRIBUTING.md](CONTRIBUTING.md) and the [contributor docs](docs/contributing/index.md).
## Contributors
## Support and Citation
- Bugs and feature requests: [GitHub Issues](https://github.com/mikel-brostrom/boxmot/issues)
- Questions and discussion: [GitHub Discussions](https://github.com/mikel-brostrom/boxmot/discussions) or [Discord](https://discord.gg/tUmFEcYU4q)
- Citation metadata: [CITATION.cff](https://github.com/mikel-brostrom/boxmot/blob/master/CITATION.cff)
- Commercial support: `box-mot@outlook.com`
---
## File: docs/index.md
# Quickstart
!!! example "Quickstart"
=== "CLI"
Install BoxMOT and inspect the CLI:
```bash
pip install boxmot
boxmot --help
```
Track a video:
```bash
boxmot track --detector yolov8n --reid osnet_x0_25_msmt17 --tracker botsort --source video.mp4 --save
```
Benchmark a tracker on a built-in config:
```bash
boxmot eval --benchmark mot17 --split ablation --tracker boosttrack --verbose
```
Research tracker code changes on a built-in config:
```bash
boxmot research --benchmark mot17 --split ablation --tracker bytetrack --proposal-model openai/gpt-5.4 --max-metric-calls 24
```
=== "Python"
Use the high-level Python API:
```python
from boxmot import BoxMOT
boxmot = BoxMOT(detector="yolov8n", reid="lmbn_n_duke", tracker="boosttrack")
run = boxmot.track(source="video.mp4", save=True)
print(run)
metrics = boxmot.val(benchmark="mot17-mini")
print(metrics)
```
The high-level Python API is available directly from `boxmot`. Shared CLI and Python defaults still come from `boxmot/configs/modes.yaml` so detector, ReID, tracker, and runtime defaults stay aligned across both entry points.
Next steps:
- [Modes Overview](modes/index.md)
- [CLI Usage](usage/index.md)
- [Python API](python/index.md)
- [Configuration](config/index.md)
- [API Reference](python/index.md)
- [Trackers](trackers/index.md)
--- METRICS ---
- Files Extracted: 3
- Estimated Token Budget: ~1739 tokens
- Recency Window: Active (< 180 days)
- Canonical Reference: https://codewiki.google/github.com/mikel-brostrom/boxmot