Each route declares which sinks it fans out to (omit to inherit the default, which is all
sinks). Names map case-insensitively.

| Name | Aliases | Delivers to |
| --- | --- | --- |
| `hub` | `ws` | In-process WebSocket hub (live canvas preview). |
| `push` | `http`, `webhook` | HMAC-signed POST to `connector.push_endpoint`. |
| `nats` | `jetstream` | NATS subject. |
| `mqtt` | none | MQTT topic. |
| `storage` | `sqlite` | Local SQLite retention. |
| `clickhouse` | `ch` | ClickHouse table. |
| `postgres` | `pg`, `timescale` | Postgres / TimescaleDB hypertable. |

> **Info**
>
> **HMAC signing.** The `push` sink signs every request with the connector's `hmac_secret`
> so receivers can verify origin and integrity.