# renagao/jev-dataops architecture

> Architecture diagram of the GitHub repository renagao/jev-dataops, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/renagao/jev-dataops
- Repository: https://github.com/renagao/jev-dataops
- Video tour (about a minute): https://gitdiagram.com/renagao/jev-dataops/video

## Overview

JEV DataOps is a self-hosted data screening, model-training, and evaluation workbench, with a separate browser-only demo. Users upload JSONL/CSV through the workbench or run batch jobs with the CLI; the runtime screens and partitions records, reports decisions, trains on retained data, and evaluates against held-out records. The map also includes domain metrics and portable training-bundle export/launch capabilities documented in the README. Relationships for unsampled subsystems are limited to documented capabilities; their internal wiring is not inferred.

Main entry points: [`jev_dataops/cli.py`](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/cli.py) (CLI), [`jev_dataops/runner.py`](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/runner.py) (Run orchestration), [`jev_dataops/server.py`](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/server.py) (HTTP service), [`jev_dataops/training_launch.py`](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training_launch.py) (Bundle validation and launch)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_workbench["Browser workbench<br/>[app.js]"]
  node_cli["CLI<br/>[cli.py]"]
  node_http["HTTP service<br/>[server.py]"]
  node_demo["Browser-only demo runtime<br/>[runtime.js]"]
end

subgraph group_pipeline["Data pipeline"]
  node_runner["Run orchestration<br/>[runner.py]"]
  node_storage[("Run and dataset store<br/>[store.py]")]
  node_screening["Screen and partition<br/>[screening.py]"]
  node_jev_client["JEV decision client<br/>[jev.py]"]
end

subgraph group_training["Training and export"]
  node_training["Train and evaluate<br/>[training.py]"]
  node_bundle_export["Training bundle export<br/>[training_export.py]"]
  node_bundle_launch["Bundle validation and launch<br/>[training_launch.py]"]
  node_distributed["Distributed SFT"]
  node_verl_rewards["verl rewards<br/>[rewards.py]"]
end

subgraph group_metrics["Domain metrics"]
  node_metric_cli["Metric commands<br/>[cli.py]"]
  node_metric_engine["Metric evaluator<br/>[domain_metrics.py]"]
  node_metric_packs["Domain metric packs"]
end

node_user(("User"))
node_jev_provider{{"JEV provider"}}
node_base_model{{"Configured base model"}}

node_user -->|"uses"| node_workbench
node_workbench -->|"calls API"| node_http
node_user -->|"runs jobs"| node_cli
node_cli -->|"starts service"| node_http
node_http -->|"dispatches runs"| node_runner
node_http -->|"reads and writes"| node_storage
node_runner -->|"screens records"| node_screening
node_runner -->|"trains and evaluates"| node_training
node_runner -->|"persists run data"| node_storage
node_screening -.->|"requests decisions"| node_jev_client
node_jev_client -.->|"sends records"| node_jev_provider
node_training -.->|"loads model"| node_base_model
node_cli -->|"screens batch"| node_screening
node_cli -->|"trains batch"| node_training
node_user -->|"uses locally"| node_demo
node_user -->|"scores predictions"| node_metric_cli
node_metric_cli -->|"evaluates metrics"| node_metric_engine
node_metric_cli -->|"loads or copies"| node_metric_packs
node_user -->|"requests export"| node_bundle_export
node_user -->|"requests launch"| node_bundle_launch
node_bundle_launch -->|"dispatches SFT"| node_distributed
node_bundle_launch -->|"bundles rewards"| node_verl_rewards

click node_workbench "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/static/app.js"
click node_cli "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/cli.py"
click node_http "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/server.py"
click node_runner "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/runner.py"
click node_storage "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/store.py"
click node_screening "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/screening.py"
click node_jev_client "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/jev.py"
click node_training "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training.py"
click node_bundle_export "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training_export.py"
click node_bundle_launch "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training_launch.py"
click node_distributed "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training_distributed.py"
click node_verl_rewards "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/rewards.py"
click node_metric_cli "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/cli.py"
click node_metric_engine "https://github.com/renagao/jev-dataops/blob/main/jev_dataops/domain_metrics.py"
click node_metric_packs "https://github.com/renagao/jev-dataops/tree/main/jev_dataops/metric_packs"
click node_demo "https://github.com/renagao/jev-dataops/blob/main/public_demo/runtime.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_workbench,node_cli,node_http,node_demo,node_user toneBlue
class node_runner,node_storage,node_screening,node_jev_client toneAmber
class node_training,node_bundle_export,node_bundle_launch,node_distributed,node_verl_rewards toneMint
class node_metric_cli,node_metric_engine,node_metric_packs toneRose
class node_jev_provider,node_base_model toneIndigo
```

## Components

### User interfaces

- [Browser workbench](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/static/app.js): `jev_dataops/static/app.js`
- [CLI](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/cli.py): `jev_dataops/cli.py`
- [HTTP service](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/server.py): `jev_dataops/server.py`
- [Browser-only demo runtime](https://github.com/renagao/jev-dataops/blob/main/public_demo/runtime.js): `public_demo/runtime.js`

### Data pipeline

- [Run orchestration](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/runner.py): `jev_dataops/runner.py`
- [Run and dataset store](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/store.py): `jev_dataops/store.py`
- [Screen and partition](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/screening.py): `jev_dataops/screening.py`
- [JEV decision client](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/jev.py): `jev_dataops/jev.py`

### Training and export

- [Train and evaluate](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training.py): `jev_dataops/training.py`
- [Training bundle export](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training_export.py): `jev_dataops/training_export.py`
- [Bundle validation and launch](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training_launch.py): `jev_dataops/training_launch.py`
- [Distributed SFT](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/training_distributed.py): `jev_dataops/training_distributed.py`
- [verl rewards](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/rewards.py): `jev_dataops/rewards.py`

### Domain metrics

- [Metric commands](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/cli.py): `jev_dataops/cli.py`
- [Metric evaluator](https://github.com/renagao/jev-dataops/blob/main/jev_dataops/domain_metrics.py): `jev_dataops/domain_metrics.py`
- [Domain metric packs](https://github.com/renagao/jev-dataops/tree/main/jev_dataops/metric_packs): `jev_dataops/metric_packs`

### Other components

- **User**
- **JEV provider**
- **Configured base model**

## Connections

- User → Browser workbench: uses
- Browser workbench → HTTP service: calls API
- User → CLI: runs jobs
- CLI → HTTP service: starts service
- HTTP service → Run orchestration: dispatches runs
- HTTP service → Run and dataset store: reads and writes
- Run orchestration → Screen and partition: screens records
- Run orchestration → Train and evaluate: trains and evaluates
- Run orchestration → Run and dataset store: persists run data
- Screen and partition → JEV decision client: requests decisions
- JEV decision client → JEV provider: sends records
- Train and evaluate → Configured base model: loads model
- CLI → Screen and partition: screens batch
- CLI → Train and evaluate: trains batch
- User → Browser-only demo runtime: uses locally
- User → Metric commands: scores predictions
- Metric commands → Metric evaluator: evaluates metrics
- Metric commands → Domain metric packs: loads or copies
- User → Training bundle export: requests export
- User → Bundle validation and launch: requests launch
- Bundle validation and launch → Distributed SFT: dispatches SFT
- Bundle validation and launch → verl rewards: bundles rewards
