The shared stage. Everyone, person or agent, joins your live show on the rig they already run.
txrx stands in front of the roads you already run - SRT, NDI, Dante, AES67, mesh and MoQ - and hands a stream from one to the next. It invents no transport. Each road keeps its own rules.
Recovery stays on its road.
A packet lost on SRT is recovered by SRT. The seam sees it once, or not at all.
Missing media stays missing.
An audio road never gains video at the seam. A late object is dropped, not replaced.
The stream keeps its name.
str_818 goes in and str_818 comes out, whatever road it rides.
Thirty crossings. One running now.
Rows send, columns receive. The grid steps through every crossing on its own. Pick a tile to hold it.
Stand on one road. Read its board.
Every road it hands off to, every road that hands off to it, and what each crossing keeps.
What moved. What stopped.
Every total is the sum of the rows under it. Pick a road to filter. Open any stream to read its receipt.
| stream | crossing | class | state | seconds | moved |
|---|
One stream, across the seam.
The receipt names the roads, what crossed, what stayed behind, and how much moved. It names no person.
Send on your road. Receive on theirs.
Pick the road you send on and the road they receive on. The shared stage. Everyone, person or agent, joins your live show on the rig they already run. Each side gets the address its own road expects, and the seam hands the stream across.
make the name to see both addresses.
Send once. Every road receives.
Send one stream on your road. Pick every road that should receive it. Each receiving side gets the address its own road expects, and each crossing keeps what that road can carry.
Any road in. One meter for all of it.
Every stream is counted at the seam, the same way on every road: seconds across and megabytes moved. Turn a road off to see it leave the total.
| road | streams | seconds | moved | rate |
|---|---|---|---|---|
| one meter | see pricing |
Lost on a road. Recovered on that road.
Pick the road you send on and drop some packets. The road recovers them its own way, before the seam. The seam hands each packet across once. What the road cannot recover stays missing.
Keep the crossing clean.
Watch source loss, recovery on the road and what actually crosses the seam. Choose a road and a loss pattern.
One path stops. The stream stays named.
Replay a primary-road loss and watch the standby carry the next packet. No duplicate crossing, no second stream.
See what crosses. See what drops.
Follow one example stream from source road to receiving road. The seam counts what passes; source loss, local recovery and missed deadlines stay distinct.
What survives the seam?
Choose two of the six roads and the distance. Read the media boundary and an example glass-to-glass budget before adding the local ask to the bench.
Choose the roads.
Read the deadline.
Set a sending road, receiving road and distance. See the example glass-to-glass budget, road recovery and what the seam keeps. Nothing is scheduled or transmitted here.
One signal.
Two roads.
Rehearse a primary and fallback road across the same seam. A second road may cover an interruption; it cannot change the media, clock or deadline the receiving side needs.
Three calls. Every road.
Open a stream, read its crossings, fetch its receipt. The same calls cover every road txrx stands in front of.
Told what it loses. Before it sends.
An agent names the road it has, the road on the far side, and what must survive the crossing. txrx answers before a byte moves: what the crossing keeps, what it drops, and whether that breaks the ask.
One toll per crossing. Any road in.
txrx charges for the crossing, not the road. Every road pays $0.002 per crossing-minute, counted at the seam. Any free allowance is set at launch.
| line | price |
|---|---|
| Toll per crossingOne rate for every road in: SRT, NDI, Dante, AES67, mesh, MoQ, WHIP, RTMP and bridges. | $0.002 / crossing-min |
| Free allowanceFree crossing-minutes each month, if any. | set at launch |
| Per ingestNo separate charge for bringing a stream in. It is part of the toll. | $0 · in the toll |
| Viewer deliveryNot charged here. txrx moves streams in and across; playback to viewers is priced on the playback side. | not charged here |
Every millisecond has a road.
Pick the road you send on, the road they receive on, and how far apart you are. Each road spends its own buffer. The long haul rides a road built for it. The seam adds almost nothing.
Start on txrx.
Receive here. Transmit there.
Declare the roads at each end, inspect the signal, switch the route, transmit, watch every seam, and keep a receipt. This is the planned interface. The cli isn't published yet, so there is nothing to install.
One command names both ends.
You say where the stream comes in and where it should leave. txrx works out the crossing class before anything moves, and tells you what the far road can keep.
$ txrx bridge srt://edge-a/live \ --to ndi://studio/PGM \ --latency 120ms --observe crossing SRT → NDI · mapped media full media kept timeline mapped to PTP-aware signal 1080p59.94 · 8ch stream str_818 # the cli isn't published yet. nothing was sent.
Receive. Inspect. Switch. Transmit. Observe. Receipt.
Each command does one thing on one road. None of them is live yet.
txrx receive srt://…Opens an ingest endpoint with explicit latency bounds.
txrx inspect --probe 5sReports essence, timing, channels, jitter and loss.
txrx switch --to backupMoves the route and records the seam.
txrx transmit ndi://studio/PGMRewraps for the declared destination and sends it there.
txrx watch str_818 --jsonlStreams timing, loss, retries and seam events.
txrx receipt close str_818Closes the receipt: roads, duration, seam events.
Every session ends in a receipt.
The same receipt the receipts page walks through: the roads, how long, what was lost and recovered. It names no person.
{
"stream": "str_818",
"from": "srt://edge-a/live",
"to": "ndi://studio/PGM",
"crossing": "mapped",
"duration_s": 1842,
"loss_pct": 0.02,
"seams": 1,
"person_identifier": null,
"status": "example · not live yet"
}Tap the crossing.
Keep the road moving.
Choose an example crossing and rehearse a recording handoff. No stream is tapped, file is stored or PLYR request is made here.
No local handoff yet.