Architecture
High-level platform
OneOpen ML Studio
│
┌─────────────────┴─────────────────┐
│ │
Web Application Public API
│ │
└─────────────────┬─────────────────┘
│
Authentication Layer
(Local: optional / off)
(Team/Enterprise: required)
│
FastAPI API Layer
│
┌───────────────────────┼───────────────────────┐
│ │ │
Identity & Access Data Lifecycle ML Lifecycle
│ │ │
Orgs / Workspaces Projects / Datasets Training
Users / Roles Annotation / Review Experiments
Permissions Validation / Versions Model Registry
Transform / Export Deployment export
│
Workflow Engine
│
┌─────────────┴─────────────┐
│ │
Background Jobs Events (planned)
In-process or WebSockets / cursors
Redis / Celery
│
CPU / GPU Inference / GPU Training Workers
│
PostgreSQL|SQLite · Redis · Object Storage (local/S3/MinIO)
Shipped today: modular FastAPI + Jinja UI; Local (SQLite, local files, in-process train); Team/Enterprise modes with /setup, Postgres/Redis/MinIO via Compose, Celery workers when Redis is configured, visual pipeline editor, experiments, model registry.
Still planned: full SSO login handshake, realtime WebSockets/cursors, HA operators beyond the K8s starter.
Platform modes
Mode |
Auth |
Storage |
Workers |
|---|---|---|---|
Local |
None by default (single workstation) |
SQLite + filesystem |
In-process |
Team |
Users, roles, sessions, API tokens |
PostgreSQL, Redis, MinIO/S3 (Compose) |
Celery when Redis set |
Enterprise |
Team auth + SSO config stubs, audit |
Same + K8s starter |
Same; handshake not fully wired |
Set with ONEOPEN_DEPLOYMENT_MODE=local|team|enterprise.
Organizational hierarchy
Platform
└── Organization
├── Workspaces
│ ├── Projects
│ │ ├── Datasets
│ │ ├── Annotation Tasks
│ │ ├── Pipelines
│ │ ├── Training Runs
│ │ └── Models
│ └── Members
└── Organization Settings
This hierarchy is wired today: projects require a parent workspace; Local mode uses Personal → Default workspace.
Universal dataset schema (direction)
Internal samples are framework-neutral (not YOLO/COCO-native). Export adapters convert to Ultralytics, COCO, Hugging Face, etc.
Conceptual sample:
{
"sample_id": "sample_000123",
"modality": "image",
"task": {"type": "object_detection", "schema_version": "1.0"},
"source": {"uri": "…", "checksum": "sha256-…", "mime_type": "image/jpeg"},
"annotations": [],
"predictions": [],
"metadata": {},
"lineage": {"dataset_version": "v5", "transformations": []}
}
Plugin surfaces (target)
oneopen.datasource · importer · annotation · model · auto_labeler
oneopen.validator · transform · augmentation · splitter · exporter
oneopen.trainer · evaluator · metric · visualization · notification
Training adapters
Shipped adapters cover Ultralytics, LibreYOLO, Torchvision, sklearn, Hugging Face prepare, and modality packaging. Broader frameworks (XGBoost, Detectron2, MMDetection, spaCy, …) are direction — see Principles.
Suggested modular backend layout (evolution)
oneopen_ml_studio/
├── api/ identity/ projects/ data_sources/ datasets/
├── annotations/ reviews/ pipelines/
├── training/ experiments/ models/ active_learning/
├── plugins/ notifications/ audit/ storage/ workers/
└── common/
Start as a modular monolith; split services only when scale requires it.
Technology direction
Layer |
Today |
Direction |
|---|---|---|
Frontend |
Jinja + CSS + vanilla JS |
React + TypeScript (future) |
Backend |
FastAPI, SQLAlchemy, Pydantic |
Same |
Local DB |
SQLite |
— |
Server DB |
PostgreSQL + Redis + Celery |
Same |
Object storage |
Local FS; MinIO / S3 when configured |
Same |
Deploy |
|
Deeper HA operators |
See Roadmap for shipped capabilities and planned work.