Know exactly what produced your model.
SynthGraph captures the provenance of synthetic-data experiments, connecting generation parameters, datasets, training runs, and evaluation results into a reproducible research history.
Built for computer-vision researchers. Designed to work with the tools you already use.
- 01Generationgenerator, parameters, seed
- 02Dataset versionreferenced, not uploaded
- 03Training runconfiguration and inputs
- 04Evaluation resultmetrics tied to their source
Illustrative data. Shown to explain the provenance model, not a benchmark or customer result.
The problem
Synthetic-data experiments are easy to run.
Hard to reconstruct.
A generation can take hours of compute. The configuration that produced it may live in a script, a notebook, a simulator, a local file, an experiment tracker, or someone’s memory.
Today
- 01Generatehours of compute
- 02Save config somewherescript · notebook · simulator UIlink not recorded
- 03Train modelseparate machine, separate repo
- 04Log metrics elsewhereexperiment trackerlink not recorded
- 05Compare spreadsheetshand-copied numberslink not recorded
- 06Months later“What exactly did we run?”
With SynthGraph
- 01Generationgenerator · parameters · seedrecorded relationship
- 02DatasetVersionreferenced by exact versionrecorded relationship
- 03TrainingRunconfiguration · inputsrecorded relationship
- 04EvaluationResultmetric, tied to its source
The same work, with the connections between steps written down at the moment they exist — rather than reconstructed from memory months later.
Capture once
Artefacts with no relationship
Code, assets, a generator, a dataset folder, a metrics dashboard, a page of notes. Each one exists. None of them points at the others.
- Scattered
- Structured
- Connected
- Reproducible
What it does
Capture once. Derive everything else.
Provenance is recorded at the point where the information still exists. Everything downstream — search, comparison, reproduction — reads from that same record.
- 01
Capture
Record generation parameters, seeds, generator versions, asset references and code metadata at the moment the run happens.
- 02
Version
Reference exact dataset and asset versions without moving the underlying data out of the storage it already lives in.
- 03
Connect
Link generations, dataset versions, training runs and evaluation results into a single directed history.
- 04
Search
Find experiments by project, generator, time, metadata or the parameters that actually matter to the question you are asking.
- 05
Compare
Inspect the differences between two experiments — configuration, inputs and results side by side.
- 06
Reproduce
Generate a reproduction manifest showing what is known, what is referenced externally, and what is missing.
Lineage
See the experiment, not just the metric.
A metric tells you what happened. Lineage helps you understand why.
- 01
Generation
The run that produced data: generator and version, parameters, seed, referenced asset versions, code version.
- 02
DatasetVersion
A specific version of a logical dataset, identified by reference and version rather than by folder name.
- 03
TrainingRun
The training configuration and the exact dataset versions it consumed.
- 04
EvaluationResult
The metric, attached to the run that produced it and, through it, to everything upstream.
Illustrative data. Shown to explain the provenance model, not a benchmark or customer result.
Integration
Keep your workflow. Add provenance.
SynthGraph does not ask researchers to move their work into another platform. The Python SDK sits inside the workflow they already have.
Tools you keep
- Blendergenerator
- Unitygenerator
- Omniversegenerator
- Custom Pythongenerator
- PyTorchtraining
- W&Btracking
- Gitcode version
- Storagedatasets
What the call becomes
- 01Python processyour script, notebook or job
- 02SynthGraph SDKtyped models, retries, idempotency
- 03HTTPS / JSONauthenticated request
- 04SynthGraph APIserver-side validation
- 05Provenance storagerecords, versions, relationships
from synthgraph import SynthGraphClient, Generator, Reproducibility client = SynthGraphClient( api_key="...",) generation = client.generations.create( experiment_id="experiment_123", name="Rainy Scene Generation", generator=Generator( name="blender", version="4.2.0", ), parameters={ "weather": "rain", "occlusion": 0.30, "camera_distance": 12, }, reproducibility=Reproducibility( seed=42, ),)The generator still runs where it always ran. What changes is that the parameters, the seed and the generator version are now written down next to the result they produced.
Storage
Your datasets stay where they already live.
SynthGraph primarily manages metadata, provenance and references. Large generated datasets can remain in the researcher’s filesystem, lab storage, or object storage.
SynthGraph stores
- Metadata
- Lineage relationships
- Dataset and asset versions
- References and checksums
You keep
- Images and video
- Rendered sequences
- Full datasets
- Whatever your storage already holds
The particles in these graphs represent recorded relationships between records — not the transfer of dataset bytes. Nothing in a provenance record requires the underlying data to move.
Dataset versioning
A dataset is not a single thing. It has history.
A logical dataset can evolve. SynthGraph records the exact DatasetVersion used by a generation, training run or evaluation, so historical lineage stays meaningful after the dataset moves on.
- Generation Aproducedrain_dataset:v1
- Generation Bproducedrain_dataset:v3
- Training runconsumedrain_dataset:v1 + v3
- Evaluationran againstrain_dataset:v3
Illustrative data. Shown to explain the provenance model, not a benchmark or customer result.
Asset versioning
The scene matters. So do the assets.
Generations can reference exact asset versions rather than merely recording an asset name. A run that used vehicle-model:v7 stays distinguishable from one that used v2, long after the file on disk has been replaced.
vehicle-model
- v1
- v2
- v7referenced
forest-texture
- v1
- v4referenced
Geometry in this scene is generated procedurally from primitives. No third-party models or textures are used.
Search
Stop searching through old scripts. Search the experiment history.
Experiments are queryable by project, generator, time, metadata and the parameters recorded on the run itself.
synthgraph · experiments
Illustrative UIQuery
- generator:blender
- weather:rain
- occlusion > 0.30
0 of 3 filters applied
Results
4 experiments
- EXP-00142Rainy Wildlife DetectionmAP 0.724
- generator
- Blender 4.2
- seed
- 42
- occlusion
- 0.32
- dataset
- rain_dataset:v7
- EXP-00131Rainy Wildlife DetectionmAP 0.748
- generator
- Blender 4.2
- seed
- 7
- occlusion
- 0.45
- dataset
- rain_dataset:v8
- EXP-00118Rainy Wildlife DetectionmAP 0.691
- generator
- Blender 4.1
- seed
- 19
- occlusion
- 0.27
- dataset
- rain_dataset:v5
- EXP-00097Clear Wildlife DetectionmAP 0.802
- generator
- Blender 4.1
- seed
- 3
- occlusion
- 0.31
- dataset
- clear_dataset:v2
Illustrative data. Shown to explain the provenance model, not a benchmark or customer result.
Comparison
Compare experiments by what changed.
Two experiments, aligned field by field. The differences are marked so the configuration change and the result change are visible together.
EXP-00142 vs EXP-00131
3 fields differ
| Parameter | Experiment A | Experiment B |
|---|---|---|
| Generator | Blender 4.2 | Blender 4.2 |
| Seed | 42 | 42 |
| Weather | rain | rain |
| Occlusion | 0.30 | 0.45changed |
| Camera distance | 12 | 12 |
| Dataset | rain_dataset:v7 | rain_dataset:v8changed |
| Asset: vehicle-model | v7 | v7 |
| Epochs | 50 | 50 |
| mAP | 0.724 | 0.748changed |
A comparison shows which recorded fields differ and which results differ. It does not establish that one caused the other — two runs can differ in a parameter and a metric without the parameter being responsible. SynthGraph’s job is to make the differences inspectable; the inference stays with the researcher.
Illustrative data. Shown to explain the provenance model, not a benchmark or customer result.
Interface
Every experiment, with its history attached.
Projects hold experiments. An experiment holds the generations and training runs that belong to it, and the evaluation results they produced.
Recent experiments
Rainy Scene Generation
Generation
- Generator
- Blender 4.2.0
- Seed
- 42
- weather
- rain
- occlusion
- 0.30
- camera_distance
- 12
Assets
- vehicle-model
- v7
- forest-texture
- v4
Dataset
- Version
- rain_dataset:v7
- Reference
- s3://research/rain-v7
- Frames
- 24,000
Training
- Model
- YOLO
- Framework
- PyTorch
- Epochs
- 50
Evaluation
- mAP
- 0.724
- Precision
- 0.78
- Recall
- 0.69
Illustrative interface preview using demo data. Not a screenshot of a shipped application, and not a customer result.
Reproduction
Reproduction should start with evidence.
A reproduction manifest gathers the recorded configuration, code and version information, seeds, assets, dataset references and missing dependencies needed to reconstruct an experiment.
{ "generation": { "generator": "blender", "version": "4.2.0", "seed": 42, "parameters": { "weather": "rain", "occlusion": 0.30, "camera_distance": 12 } }, "assets": [ { "name": "vehicle-model", "version": "v7" }, { "name": "forest-texture", "version": "v4" } ], "dataset": { "version": "v7", "uri": "s3://research/rain-v7", "checksum": "sha256:9c1f…e40b" }, "code": { "commit": "8f3a2b1", "branch": "rain-sweep" }, "missing": [ "external CUDA environment", "GPU driver version" ]}What the manifest asserts
These are the recorded facts: this generator at this version, these parameters, this seed, these asset versions, this dataset reference, this commit.
What it does not assert
That re-running will produce identical output. Where a dependency was external or unrecorded, the manifest says so. SynthGraph makes the dependencies and the known provenance explicit — it does not guarantee exact reproduction.
Failures
Failed experiments are still evidence.
A generation that failed halfway through still tells you which parameters you have already tried and what happened when you did. Failed runs keep their provenance and stay part of the experiment history rather than disappearing from it.
- GEN-004817status: failed
renderer exited at frame 812
- Blender 4.2.0
- seed 19
- occlusion 0.62
provenance preserved
- GEN-004821status: completed
24,000 frames written
- Blender 4.2.0
- seed 42
- occlusion 0.30
provenance preserved
Record lifecycle
Once a run starts, its inputs stop moving.
A provenance record is only useful if it still describes what actually ran. When a generation moves out of PENDING, the fields that define the run are fixed; only operational fields keep changing.
Successful run
- PENDINGeditable
- RUNNINGinputs frozen
- COMPLETEDinputs frozen
Failed run
- PENDINGeditable
- RUNNINGinputs frozen
- FAILEDinputs frozen
Frozen at RUNNING
- generator and version
- parameters
- seed
- code version
- environment metadata
- input DatasetVersions
- AssetVersions
Still changes
- status
- timestamps
- completion metadata
- error detail
Parameter space
Look at the runs you have already done.
Recorded experiments can be plotted against the parameters they varied. It is a way of reading experiment history — seeing where a sweep has been dense and where it has not.
This is a visualisation of search and comparison over past runs. SynthGraph does not propose parameters, run sweeps on your behalf, or optimise anything. Choosing the next experiment stays a research decision.
Illustrative data. Shown to explain the provenance model, not a benchmark or customer result.
Who it is for
Built around how research actually happens.
SynthGraph is designed for computer-vision research groups working with synthetic data — not for a generic enterprise workflow.
PhD researchers
Keep experiments traceable while working toward papers, theses and reproducibility supplements — including the runs that did not make it into the results table.
Postdoctoral researchers
Manage repeated experiments across long projects without relying on scattered notes, folder names and scripts that have since been edited.
Research labs
Preserve experiment knowledge across projects, machines and researchers, so a run stays legible after the person who ran it has moved on.
Research engineers
Connect generation infrastructure to downstream training and evaluation, and give the rest of the lab a consistent record of what produced what.
Developers
A Python SDK, not another platform you have to live inside.
The SDK is the primary integration surface. It wraps the generator and training code you already run, and sends structured records to the API.
Architecture
- Existing tools
- SynthGraph SDK
- HTTPS / JSON
- SynthGraph API
- Provenance storage
The SDK is in early development and is being integrated against real research workflows during the pilot. It is not a finished v1.0 release, and the surface is still changing.
Design principles
Typed models
Generators, parameters, reproducibility and references are typed rather than free-form dictionaries.
Canonical contract
One provenance shape across every generator and training framework.
Flexible metadata
Arbitrary domain metadata alongside the fields the model defines.
Safe retries
Network failures during a long sweep should not corrupt a record.
Idempotency
Repeating a call does not create a duplicate run.
Backend validation
The server, not the client, decides what a valid record is.
Configurable endpoint
Point the SDK at a hosted or self-controlled deployment.
Minimal instrumentation
A small number of calls around code you do not have to restructure.
Storage neutrality
References describe where data lives; SynthGraph does not require a particular provider.
Platform independence
One provenance model. Many research environments.
A generation from Blender, a generation from a custom C++ simulator and a generation from a Python script produce the same kind of record. That is what makes them comparable years later.
Roadmap
- v1.0Private pilot
Manual capture
The SDK is called explicitly from your own generation and training code.
- v1.1Planned
Tool integrations
Thinner wrappers for common generators and training frameworks.
- v1.2Roadmap
Automatic instrumentation
Capture that requires little or no explicit instrumentation in the research code.
Items marked planned or roadmap are not available today.
Security and privacy
Research provenance without unnecessary data collection.
The system is designed to hold as little as it needs to. Most of what makes an experiment reproducible is metadata — and metadata is what SynthGraph stores.
Transport security
API traffic is served over HTTPS/TLS.
Server-side authorization
Access decisions are made by the API, not by the client.
Protected API keys
Keys are treated as credentials and are not written to logs.
No secrets in logs
Structured logging excludes credential material.
Data minimisation
Provenance records hold metadata and references rather than the datasets themselves.
Ownership boundaries
Records belong to a user and a project, and access follows that boundary.
Deployment choice
Cloud-hosted or local/self-controlled deployment, with the same provenance model.
Migration-backed persistence
Schema changes are applied through versioned migrations.
On compliance claims
SynthGraph is designed with privacy and security requirements in mind. Formal legal compliance claims require appropriate legal review, and this site does not make them. You will not find certification badges here, because there are none to show yet.
Deployment
Cloud when you need it. Control when you need it.
SynthGraph is designed to support cloud-hosted and local/self-controlled deployments while preserving the same core provenance concepts.
SynthGraph SDK
one client, one configurable endpoint
Cloud deployment
A hosted API, so a lab can start recording provenance without operating a service.
- Managed API
- No infrastructure to run
- Shared across a group
Self-controlled deployment
The same provenance model, deployed where the institution’s requirements say it has to live.
- Runs in your environment
- Data stays inside your boundary
- Same SDK, different endpoint
Deployment targets are described in terms of where the service runs, not in terms of a specific cloud provider. That choice is not finalised.
Your next experiment should leave a trail.
SynthGraph is currently available through a limited research pilot. Request a demo to see how provenance fits into your existing workflow.
SynthGraph is being developed with a small number of research workflows before broader access.