Reference component exports
Referencing exports allows Alloy to configure and connect components dynamically using expressions. While components can work independently, theyβre more effective when one componentβs behavior and data flow depend on another componentβs exports, creating a dependency relationship.
Such references can only appear in another componentβs arguments or a configuration blockβs fields. Components canβt reference themselves.
Use references
You create references by combining the componentβs name, label, and named export with dots.
For example, you can refer to the contents of a file exported by the local.file
component labeled target
as local.file.target.content
.
Similarly, a prometheus.remote_write
component instance labeled onprem
exposes its receiver for metrics as prometheus.remote_write.onprem.receiver
.
The following example demonstrates some references.
local.file "target" {
filename = "/etc/alloy/target"
}
prometheus.scrape "default" {
targets = [{ "__address__" = local.file.target.content }]
forward_to = [prometheus.remote_write.onprem.receiver]
}
prometheus.remote_write "onprem" {
endpoint {
url = "http://prometheus:9009/api/prom/push"
}
}
In the preceding example, you created a simple pipeline by writing a few Alloy expressions.

After the value resolves, it must match the type of the attribute itβs assigned to. While you can only configure attributes using the basic Alloy types, the exports of components can use special internal Alloy types, such as Secrets or Capsules, which provide additional functionality.