Skip to content

connections ​

A connection is a system that you declare one time, under a name, in a file beside the config. Components refer to it by that name. The connection holds what the system is: brokers, urls, credentials. The component holds what the pipeline wants from the system: a topic, a group, a subject, a table. There is no inline form. A component names a connection, or it does not build.

One kind serves both directions. For example, a kafka connection serves a kafka input and a kafka output. kayak checks the kind as well as the name. kayak refuses to delete a connection that a pipeline uses.

Credentials are secrets. A connection holds the ${NAME} template, never the value. See secrets. Connections tells how kayak finds the file, what an edit does to a pipeline that runs, and why file is a connection.

kafka ​

A kafka cluster.

fieldtypedescription
brokersstringrequiredThe brokers, as a list with commas, for example localhost:9092. You can use ${NAME} secret references.

nats ​

A nats server, or a cluster of nats servers.

fieldtypedescription
urlsstringrequiredThe url of the server, for example nats://localhost:4222. You can use ${NAME} secret references.

postgres ​

A postgres database and the role that kayak connects as. The output or the input sets the table.

fieldtypedescription
hoststringrequiredThe hostname of the server, for example localhost.
databasestringrequiredThe database to connect to.
userstringrequiredThe role to connect as.
passwordstringrequiredThe password of the role. Use a ${NAME} secret reference for this value.
portintegeroptionalThe port of the server. The default is 5432.

clickhouse ​

A ClickHouse server and the user that kayak connects as. kayak uses the HTTP interface of the server. The output or the input sets the table.

fieldtypedescription
urlstringrequiredThe url of the HTTP interface, for example http://localhost:8123 for the server in docker-compose.yaml, or https://<host>:8443 for ClickHouse Cloud.
databasestringrequiredThe database to use. The database must exist. The output makes tables. It does not make databases.
userstringrequiredThe user to connect as.
passwordstringrequiredThe password of the user. Use a ${NAME} secret reference for this value.
allow_httpbooleanoptionalPermit an http:// url with no TLS. The default is false. The credentials go with every request, as plain text. Use it only for a local server, for example the server in docker-compose.yaml.

file ​

A directory on the filesystem of the server. A file output writes under it, to a path relative to this directory.

The directory must be inside the --data-dir of the server. kayak checks this when it builds the output. A server started without --data-dir has no file output.

fieldtypedescription
rootstringrequiredThe directory that file outputs write under, for example ./out/events. It must be inside the --data-dir of the server. If the directory does not exist, kayak makes it.

s3 ​

A bucket on an S3-compatible object store, and its credentials. An s3 output writes under a prefix in the bucket.

There is no limit like --data-dir for a bucket. The credentials set what kayak can write. Give kayak a key that can write only to this bucket.

Set endpoint for rustfs, minio or another S3-compatible server. Without endpoint, kayak uses AWS S3 in region.

fieldtypedescription
bucketstringrequiredThe bucket to write to. The bucket must exist. The output makes objects. It does not make buckets.
access_key_idstringrequiredThe access key id. Use a ${NAME} secret reference for this value.
secret_access_keystringrequiredThe secret access key. Use a ${NAME} secret reference for this value.
allow_httpbooleanoptionalPermit an http:// endpoint with no TLS. The default is false. The credentials then go over the network as plain text. Use it only for a local server, for example the rustfs in docker-compose.yaml.
endpointstringoptionalThe url of an S3-compatible server, for example http://localhost:9000 for the rustfs in docker-compose.yaml. Leave it out to use AWS S3 in region.
regionstringoptionalThe region of the bucket. The default is us-east-1. S3-compatible servers with no regions accept this value.

mqtt ​

An mqtt broker.

The connection uses plain TCP. TLS is not available.

fieldtypedescription
hoststringrequiredThe hostname of the broker, for example localhost.
passwordstringoptionalThe password of the user. Use a ${NAME} secret reference for this value.
portintegeroptionalThe port of the broker. The default is 1883.
usernamestringoptionalThe username, if the broker requires one. Set username and password together, or set neither.

redis ​

A redis server, or a server that uses the same protocol.

kayak uses the pub/sub commands SUBSCRIBE and PUBLISH. It does not use the key-value store. Thus, a redis input has the same delivery guarantees as a nats input.

fieldtypedescription
urlstringrequiredThe url of the server, for example redis://localhost:6379 or redis://:${REDIS_PASSWORD}@localhost:6379/0. You can use ${NAME} secret references.

opcua ​

An OPC UA server. The connection holds the endpoint. The opcua input selects the nodes to read.

The session is not signed and not encrypted. kayak connects with the security policy None, as an anonymous user or with a username and password. The credentials go over the network as plain text. Use this connection only on a network that you trust.

When a session opens, the OPC UA client writes two errors about a missing application instance certificate to the log. This is not a fault. A session with no encryption needs no certificate.

fieldtypedescription
endpointstringrequiredThe url of the endpoint, for example opc.tcp://localhost:50000. You can use ${NAME} secret references. kayak connects directly to this url. It does not ask the server for its list of endpoints first. Thus, a server behind docker, NAT or a load balancer works when this url is correct.
passwordstringoptionalThe password of the user. Use a ${NAME} secret reference for this value.
usernamestringoptionalThe username, if the server requires one. Set username and password together, or set neither. Without them, the session is anonymous.

indu ​

An Indu Cloud deployment: the API and ingest endpoints, and the API key.

The indu output and the indu input use the same connection. The output writes streams through /ingest/v1/streams. The input reads sensors and streams through /api/v1. Make the key in Indu, on the /keys page or with indud apps register --kind kayak. Give the key a role in Indu.

fieldtypedescription
urlstringrequiredThe origin of the deployment, for example https://app.acme.indu.cloud. The ingest endpoint is /ingest/v1/… under this url, unless you set ingest_url.
api_keystringrequiredThe API key (indu.ak.…), as a ${NAME} secret reference.
ingest_urlstringoptionalThe origin of /ingest/v1/… when it is not under url, for example https://ingest.acme.indu.cloud. A single-server installation serves ingest on its own host.

tidepool ​

A Tidepool server and its ingest token. The tidepool output sets the table. You declare the tables in the Tidepool project. kayak does not make them.

fieldtypedescription
urlstringrequiredThe url of the server, for example http://localhost:7070.
allow_httpbooleanoptionalPermit an http:// url with no TLS when token is set. The default is false. The token goes with every batch, as plain text. Without a token, an http:// url is always permitted.
tokenstringoptionalThe ingest token, as a ${NAME} secret reference. Use the TIDEPOOL_INGEST_TOKEN of the server, or its admin token. Leave it out for a server with open ingest.

reference tables generated from the config schemas — just docs