Core ideas
If you’ve used Airflow, n8n or a notebook-based pipeline, some of OvalBee will feel familiar and some of it will not. This page is the short version of what’s different. Each section links to the concept page with the details.
1. A flow is a process, not a script
A flow is a graph of nodes on a canvas. It describes how work moves through your team: images arrive, get labeled, get reviewed, feed a training run, get scored.
What a flow is not is a one-shot program you press “Run” on. There’s no button that executes the whole graph from start to finish. Instead, each node runs on its own terms:
- you run it from the canvas,
- a node upstream of it finishes and passes the turn along,
- its schedule comes due, or
- a person finishes a batch in the annotation tool and the work moves on.
Loops are allowed and common. Rejected annotations go back to the labeling pool, a new model version triggers another evaluation, hard examples go back into training. A flow keeps working for weeks, and the canvas always shows its current state.
2. Nodes do the work
A node is one step: import images, split a dataset, train a detector, compare two models, open a labeling queue. You place nodes from the Node Library, fill in their inputs in the sidebar and run them.
Most nodes run as containers on the platform’s compute, and training or inference nodes get a GPU automatically. Every run is recorded with its inputs, outputs, logs and artifacts, so you can always see what a node did last Tuesday and why it failed.
3. Edges say when, references say what
This is the idea people coming from other tools miss most often.
An edge between two nodes means “run this one after that one succeeds”. It carries no data.
Data reaches a node through its inputs. An input either holds a value you typed or picked, or it references an output of another node — for example, “the dataset produced by the Train/val split node”. When the node runs, OvalBee resolves the reference to that node’s latest output.
Keeping the two apart is what makes loops, branches and shared datasets manageable: Evaluate can use the validation split without being wired next to it, and a single output can feed ten nodes without ten arrows. Edges can also be purely visual, for drawing a loop that should never trigger anything.
4. Data lives in versioned datasets
Images, videos, annotations, models and reports are assets. A dataset is a named set of assets, and it has versions. When a node writes a result into a dataset it created, a rerun adds a new version instead of overwriting the old one, so earlier results stay available.
A node input can follow a dataset’s latest version or be pinned to one exact version. Class names and tags come from an ontology, a versioned vocabulary that datasets and models are pinned to.
Datasets and versions · Assets and annotations · Ontologies
5. People work inside the flow
Labeling and review are nodes too. A Labeling node takes images from a pool dataset and hands them to labelers in batches. The buttons labelers press in the annotation tool — To review, Skip, Needs expert — are datasets you connected, so every decision moves the image to the next stage of the graph. Reviewers, experts and automated quality checks are more nodes in the same chain.
Domain experts don’t need to touch the graph at all: they open Labeling in the sidebar, see their tasks and start working.
6. Every result is traceable
Trained models land in the model registry with their metrics, class list, training dataset and training report. Evaluation nodes attach their results to the model version they scored. Reports open right from the node that produced them. The Activity page lists every run across the workspace, and each flow keeps a version history you can restore.
Models and deployments · Reports
Where things live in the app
Ready to try it? The Quickstart takes about ten minutes.