# Write a custom component

Control / script

A variant of [Run a script](https://meridian.online/operations/run-a-script).

Supply code that the tool runs as one of its own building blocks, such as a reader, writer, learner, loss function or materialisation.

Page: <https://meridian.online/operations/run-a-script/write-custom-component>

## Status

Not built yet.

arcform does not do this yet; it would live in how a Protocol runs. [Its place on the roadmap](https://meridian.online/roadmap#run-a-script)

## What other tools call it

Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).

- Apache NiFi: [`InvokeScriptedProcessor`](https://nifi.apache.org/components/org.apache.nifi.processors.script.InvokeScriptedProcessor/) (read 2026-09-27)
- Apache NiFi: [`ScriptedReader`](https://nifi.apache.org/components/org.apache.nifi.record.script.ScriptedReader/) (read 2026-09-27)
- Apache NiFi: [`ScriptedRecordSetWriter`](https://nifi.apache.org/components/org.apache.nifi.record.script.ScriptedRecordSetWriter/) (read 2026-09-27)
- Apache NiFi: [`ScriptedRecordSink`](https://nifi.apache.org/components/org.apache.nifi.record.sink.script.ScriptedRecordSink/) (read 2026-09-27)
- RapidMiner Studio: [`Python Forecaster`](https://docs.rapidminer.com/latest/studio/operators/modeling/python_forecaster.html) (read 2026-09-27)
- RapidMiner Studio: [`Python Learner`](https://docs.rapidminer.com/latest/studio/operators/modeling/python_learner.html) (read 2026-09-27)
- SQLMesh: [`Custom materializations`](https://github.com/SQLMesh/sqlmesh/blob/23b237cea7218cc8f338b89c14f0957394a0003b/docs/guides/custom_materializations.md) (read 2026-09-27)
- VisiData: [`define-command`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/pyobj.py#L304) (read 2026-09-23)
- Yggdrasil Decision Forests: [`BinaryClassificationLoss`](https://github.com/google/yggdrasil-decision-forests/blob/0a54b57c95ff0cf42ecf0310ace0513a4f32cb65/yggdrasil_decision_forests/port/python/ydf/learner/custom_loss.py) (read 2026-09-27)
- Yggdrasil Decision Forests: [`MultiClassificationLoss`](https://github.com/google/yggdrasil-decision-forests/blob/0a54b57c95ff0cf42ecf0310ace0513a4f32cb65/yggdrasil_decision_forests/port/python/ydf/learner/custom_loss.py) (read 2026-09-27)
- Yggdrasil Decision Forests: [`RegressionLoss`](https://github.com/google/yggdrasil-decision-forests/blob/0a54b57c95ff0cf42ecf0310ace0513a4f32cb65/yggdrasil_decision_forests/port/python/ydf/learner/custom_loss.py) (read 2026-09-27)
