Skip to main content

Distribution

Distribution happens on the agent. The finished document goes from the renderer to the delivery channel without passing through Rynko, which is what lets a report contain data that is not allowed to leave your network.

Channels

ChannelTransportTypical use
EmailSMTPRecipient lists, attachments
Microsoft TeamsIncoming webhookPosting to a channel
SlackIncoming webhookPosting to a channel
File shareLocal or mounted filesystemDropping into a network share for another system to collect

Configuring a channel

Create the channel in Reporting → Channels → New. Credentials can be supplied two ways.

In agent.yaml — the simplest, and the right choice when the agent host is already managed by configuration management:

distribution:
smtp:
host: smtp.company.com
port: 587
secure: true
user: [email protected]
password: ${SMTP_PASS}
from: [email protected]
fromName: "Rynko Reports"

teams:
webhookUrl: ${TEAMS_WEBHOOK_URL}

slack:
webhookUrl: ${SLACK_WEBHOOK_URL}

filesystem:
basePath: /shared/reports
createSubfolders: true

Pushed from the webapp — enter the credential in the UI and Rynko encrypts it to the target agent's public key before sending. Rynko cannot read it in transit or at rest, and it is decrypted only on the agent. Use this when you would rather not edit files on the agent host.

Test channel sends a test message so you find out about a wrong password now rather than at 06:00 on Monday.

Attaching distribution to a run

Distribution can be set at three levels, most specific winning:

  1. Report — the default for every run
  2. Schedule — overrides the report default for that schedule
  3. Run — a one-off override when triggering manually

This is what lets one report serve a weekly summary to a wide list and a daily version to a small one.

Email

Subject and body support token substitution, so a message can describe the run it is carrying:

Subject: Monthly Sales — {{report.name}} — {{run.completedAt}}

The {{report.name}} report for {{params.region}} is attached.

Rows: {{run.rowCount}}
Generated: {{run.completedAt}}

Tokens cover report metadata, run metadata, and the parameter values the run was given.

Filenames are configurable per report and accept the same tokens, so attachments arrive as sales-apac-2026-09.xlsx rather than report.xlsx.

Teams and Slack

Both post a message to a channel via an incoming webhook. Because a webhook post cannot carry a file, the message includes a run link — a signed, expiring URL that fetches the document from the agent on demand.

This means the document itself still never passes through Rynko: the recipient clicks the link, and the agent serves the file.

File share

Writes the document to a filesystem path, which may be a mounted network share. With createSubfolders: true the agent organises output into subfolders rather than flattening everything into one directory.

This is the channel to use when another system collects the reports — an SFTP pickup, a document management system, or a batch process watching a directory.

Failures

A distribution failure does not discard the run. The document is generated and stored on the agent regardless, the run is recorded with the delivery error, and you can download the document from run history or retry the delivery.

Delivery errors surface as in-app notifications so a silently failing schedule does not stay silent.