Data layout

All persistent state lives under the data directory (default ~/.oneopen).

Directory tree

~/.oneopen/
├── oneopen.db                 # SQLite
├── projects/
│   └── <project_id>/
│       └── images/            # managed uploads (UUID filenames)
├── uploads/                   # fallback upload paths
├── exports/                   # YOLO zips, COCO JSON, …
├── models/
│   ├── registered/            # copied custom weights
│   ├── runs/                  # Ultralytics / LibreYOLO training runs
│   └── sam_vit_b_01ec64.pth   # optional SAM checkpoint
└── training_jobs/
    └── <job_id>.json          # train job status / metrics

Custom project location values replace projects/<id>/ for that project’s image storage.

SQLite tables (overview)

Table

Contents

projects

Name, type, location, timestamps

label_classes

Per-project classes and colors

images

Filename, filepath, size, split, annotated flag

annotations

Geometry JSON, type, confidence, source

dataset_versions

Version metadata + pipeline configs

registered_models

Custom weight registry

Backup

To back up a machine:

  1. Stop oneopen serve if a train job is running.

  2. Copy the entire ONEOPEN_DATA_DIR tree (DB + files together).

Restoring requires the same relative layout so filepath columns still resolve.

Disk use

Training runs and exported zips grow quickly. Prune models/runs/ and exports/ periodically if space is tight. Project images under managed locations are deleted with the project when applicable; in-place import locations are left intact.