Skip to content

Artifact types

Every link on the canvas carries one of eight artifact types; this page lists what each type means, which blocks produce and accept it, its colour on the canvas and how to convert between types.

Overview

A block's inputs and outputs are typed ports. You can only link an output to an input that accepts its type; the editor refuses other links and tells you which types the input expects. The types come from the block registry (tuneline/registry.py, registry version 1.0.0).

Type Label in the app Canvas colour (light / dark) Meaning
Dataset Dataset ochre #AD6800 / #E3A24B Rows loaded from a file, a URL, a golden set or the Hugging Face Hub, before formatting.
ChatDataset Chat dataset rose #BB3B72 / #F07FB0 Rows in chat form (messages) or prompt/completion form, ready for SFT or evaluation.
PreferenceDataset Preference dataset orange #C4501C / #F0895C Prompt with chosen/rejected answers (DPO, ORPO, SimPO) or prompt/completion/label (KTO).
VisionDataset Vision dataset green #2F7D4F / #6FCA95 Chat rows with one or more images each, for vision-language models.
Model Model teal #0B7A90 / #4CC5DB A base model, optionally with a LoRA adapter, or a merged fine-tuned model.
EvalReport Eval report violet #7650CB / #B499F3 Metrics and per-example results from an evaluation.
GGUF GGUF files brown #8A5A2B / #CF9A6B Quantized GGUF files for llama.cpp, Ollama and LM Studio.
Endpoint Endpoint slate #4A5A56 / #9DB2AD A running OpenAI-compatible inference endpoint.

The colours are the --t-* tokens in web/src/index.css: handles, link lines and type badges use them, so a rose handle always means chat data. The four dataset types (Dataset, ChatDataset, PreferenceDataset, VisionDataset) are grouped as dataset types in the registry.

  • One link per input. Each input port accepts at most one link. Dropping a new link on a used input replaces the old one. An output can feed any number of inputs.
  • Required and optional inputs. A required input must be linked before the pipeline can run; optional inputs (for example the eval input of Fine-tune (SFT)) can stay empty. The Block reference marks each input.
  • Pass-through types (same_as). Some blocks work on any dataset type and give back the same type they received. Their outputs declare same_as: "<input>": the output takes the type of whatever is linked to that input. The editor resolves this from the upstream link when you connect the next block, and the validator does the same (resolve_output_types in tuneline/spec.py). If the input is not linked yet, the output's type is unknown until it is.
Block Output Takes the type of input
Clean and dedupe (data.clean) data data
Train / validation / test split (data.split) train, validation, test data
Merge datasets (data.merge) data a (link datasets of the same type to a and b)

So Load dataset → Format as chat → Split gives three ChatDataset outputs, and Load dataset → Split gives three plain Dataset outputs, which a trainer will not accept until they are formatted.

Conversions

When a link is refused, the editor suggests the block that converts between the two types:

From To Use
Dataset ChatDataset Format as chat (data.to_chat)
Dataset PreferenceDataset Format as preference pairs (data.to_preference)
Dataset VisionDataset Format as vision chat (data.to_vision)
Model GGUF Export GGUF (export.gguf)
Model Endpoint Deploy endpoint (deploy.endpoint)
GGUF Endpoint Ollama package (deploy.ollama)
Endpoint EvalReport Endpoint smoke test (deploy.smoke_test)

Two more blocks turn something into a Model without changing the type: Merge adapter (a base model plus adapter becomes one merged model) and Quality gate (passes the model on only when its rules hold). Generate synthetic data produces a ChatDataset from nothing or from an optional Dataset / ChatDataset seed.

Dataset

Rows loaded from a file, a URL, a golden set or the Hugging Face Hub, before formatting. Columns are whatever the source had; trainers do not accept this type directly.

Produced by Accepted by
Load dataset data Clean and dedupe data
Clean and dedupe data (pass-through) Format as chat data
Train / validation / test split train, validation, test (pass-through) Format as preference pairs data
Merge datasets data (pass-through) Format as vision chat data
Train / validation / test split data
Merge datasets a, b
Generate synthetic data seed (optional)

ChatDataset

Rows in chat form (a messages list of {role, content}) or prompt/completion form, ready for supervised fine-tuning or evaluation.

Produced by Accepted by
Format as chat data Fine-tune (SFT) train, eval (optional)
Generate synthetic data data Reinforcement tuning (GRPO) train
Clean and dedupe, Split, Merge datasets (pass-through) Evaluate on test set test
Prompt-injection test test
Clean and dedupe, Split, Merge datasets
Generate synthetic data seed (optional)

PreferenceDataset

A prompt with a chosen and a rejected answer (for DPO, ORPO and SimPO), or a prompt, a completion and a good/bad label (for KTO).

Produced by Accepted by
Format as preference pairs data Preference tuning (DPO / ORPO / KTO) train, eval (optional)
Clean and dedupe, Split, Merge datasets (pass-through) Clean and dedupe, Split, Merge datasets

VisionDataset

Chat rows with one or more images each, for vision-language models. Images can be Hub image columns, URLs, or files inside an uploaded ZIP.

Produced by Accepted by
Format as vision chat data Vision fine-tune (SFT) train, eval (optional)
Clean and dedupe, Split, Merge datasets (pass-through) Evaluate on test set test
Clean and dedupe, Split, Merge datasets

Model

A base model from the Hub, the same base model with a LoRA adapter, or a merged fine-tuned model. The artifact records the base model and its commit, the adapter or merged repository if any, the modality (text or vision) and the training method.

Produced by Accepted by
Base model model Fine-tune (SFT) model
Registered model model Preference tuning model
Fine-tune (SFT) model Vision fine-tune (SFT) model
Preference tuning model Reinforcement tuning (GRPO) model
Vision fine-tune (SFT) model Evaluate on test set model
Reinforcement tuning (GRPO) model Benchmarks (lm-eval) model
Quality gate model (approved model) Prompt-injection test model
Merge adapter model Quality gate model
Publish and register model Merge adapter model
Export GGUF model
Publish and register model
Deploy endpoint model

Trainers take a Model and give back a Model, so you can chain them, for example SFT followed by DPO. Deploy endpoint needs the model on the Hugging Face Hub: keep Push to Hugging Face on in the trainer, or merge or publish it first.

EvalReport

Metrics and per-example results from an evaluation: a metrics object (for example label_accuracy, and with Also score the base model also base.<metric> and delta.<metric>), the number of examples n, and up to 50 sample rows with input, expected and actual output. Reports are stored inline with the run, not as files.

Produced by Accepted by
Evaluate on test set report Quality gate report, extra_report (optional)
Benchmarks (lm-eval) report Publish and register report (optional: metrics go into the model card and registry)
Prompt-injection test report
Endpoint smoke test report

Gate rules refer to the metric names in these reports; see Evaluation and quality gates.

GGUF

Quantized GGUF files (for example q4_k_m and q8_0) made with llama.cpp, for Ollama, LM Studio and llama.cpp. The artifact lists one file per quantization and, when pushed, the Hugging Face repository that holds them.

Produced by Accepted by
Export GGUF gguf Ollama package gguf

GGUF files cannot be trained, evaluated or served by Deploy endpoint; deploy the adapter or merged model instead.

Endpoint

A running OpenAI-compatible inference endpoint: its URL (ending in /v1), the model name to send, and the provider (RunPod Serverless, Hugging Face Inference Endpoints, Modal, or Ollama on your own computer).

Produced by Accepted by
Deploy endpoint endpoint Endpoint smoke test endpoint
Ollama package endpoint

Endpoints created by a run also appear on the Deployments page; see Deployments.

Where artifacts are stored

Type Stored as Location
Dataset types Parquet file The machine that ran the step, and, when a Hugging Face token is saved, your private dataset repository <your-hf-username>/tuneline-cache at artifacts/<node key>/<port>.parquet
Model Hub repository Your Hugging Face account (adapter, merged model or published model), private by default; the base model stays where it is on the Hub
EvalReport JSON Inline in the run (artifacts.meta and the step's outputs)
GGUF .gguf files The machine that ran the step, and your Hugging Face account when Push the GGUF files is on
Endpoint URL At the provider; listed on the Deployments page

Artifact URIs use hf://model/<repo>@<revision>, hf://dataset/<repo>@<revision>/<path>, file://<path> (only valid on the machine that wrote it), inline: (data kept in the artifact record) and https://… (endpoints). See Architecture for how cached artifacts are found again.