Architecture
High-level platform (target)
OneOpen ML Studio
│
┌─────────────────┴─────────────────┐
│ │
Web Application Public API
│ │
└─────────────────┬─────────────────┘
│
Authentication Layer
│
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 Event System
Redis / Celery WebSockets
│
CPU / GPU Inference / GPU Training Workers
│
PostgreSQL|SQLite · Redis · Object Storage (local/S3/MinIO)
Today’s shipping app is a modular local FastAPI + Jinja stack (SQLite, local files, in-process training). Team and enterprise modes above are the target architecture.
Platform modes
Mode |
Auth |
Storage |
Workers |
|---|---|---|---|
Local |
None (single user) |
SQLite + filesystem |
In-process / local |
Team server |
Users, roles |
PostgreSQL, Redis, MinIO/S3 |
Celery CPU/GPU |
Enterprise |
SSO (OIDC/SAML/LDAP), audit |
HA DB + object store |
K8s autoscaling |
Organizational hierarchy (target)
Platform
└── Organization
├── Workspaces
│ ├── Projects
│ │ ├── Datasets
│ │ ├── Annotation Tasks
│ │ ├── Pipelines
│ │ ├── Training Runs
│ │ └── Models
│ └── Members
└── Organization Settings
This hierarchy is wired in the product 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 (target interface)
Adapters implement validate → prepare → train → evaluate → export → metrics for Ultralytics, PyTorch, Hugging Face, sklearn, XGBoost, and custom scripts.
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 |
Direction |
|---|---|
Frontend |
React + TypeScript (future); Jinja UI today |
Backend |
FastAPI, SQLAlchemy, Pydantic |
Local DB |
SQLite |
Server DB |
PostgreSQL + Redis + Celery |
Object storage |
Local FS → MinIO / S3 |
Deploy |
Docker Compose → Kubernetes |
See Roadmap for shipped capabilities and planned work.