MinKNOW Stream
This screen configures a beta feature that is under active development. Live MinKNOW ingest works, but it has had far less real-world use than the rest of SeqDesk: expect bugs, and expect these controls to gain fields, change defaults or change meaning between releases. Read Stream Mode and its known limitations in this release before relying on it, and note the caveats below about controls that do not yet do what their labels suggest.
Settings → MinKNOW Stream (/admin/minknow-stream) records where the
stream-monitor daemon should look for Oxford Nanopore output and how carefully
it should watch. Facility admins only.
The screen is configuration and nothing else. Saving it starts no process and ingests no file — the daemon reads these values, and if the daemon is not running nothing happens no matter how correct the form is. The header line says which of those is true right now.
What each control does
Filesystem watcher
The required part. Without it, every attempt to start a stream is refused.
| Control | Default | Effect |
|---|---|---|
| MinKNOW output root | (empty) | Absolute path to the parent directory MinKNOW writes runs into — /data on Linux, /Library/MinKNOW/data on macOS, C:\data on Windows. Every stream, in every sequencing order, must resolve to somewhere under this one path |
| Poll interval (ms) | 5000 | How often the daemon reconciles its watcher set against active streams — that is, how quickly a newly started or stopped stream is noticed. File pickup is event-driven and does not wait for a tick. Values below 1000 are rejected on save and fall back to the default |
Point it at the parent directory, not at a run folder. A run folder is what an operator supplies later, per stream.
The output root is also a security boundary. A requested directory and the
root are both resolved with realpath — following every symlink and
collapsing every .. — and the request is refused unless the resolved
directory sits inside the resolved root. That check runs once, when a stream
is started; what holds the boundary afterwards is the watcher, which does
not follow symlinks, so a link dropped into fastq_pass/ later is refused
rather than ingested. The exact rule, and the message each rejection produces,
is in Stream Mode →
Setup.
Stream monitor toggle
Enable stream monitor is presented as a soft switch that pauses ingest without killing the daemon.
It does not currently stop ingest. The switch writes
minknowStream.enabled, and no code path reads that value — not the daemon,
not the endpoint that starts a stream. The daemon’s real pause flag is
workerPause.stream-monitor, set by Pause and Resume on Background
Workers. Use those. Treat this
switch, and the header text running, ingestion paused that follows from it,
as cosmetic until it is wired up.
MinKNOW gRPC connection
Marked Optional on the screen, and today it is closer to inert: MinKNOW
host, gRPC port and TLS CA cert path are stored, and Test
connection probes them, but nothing reads them during ingest. The daemon
announces gRPC enrichment: not configured in MVP at startup. There is no live
device or pore status anywhere in the product.
| Control | Default | Notes |
|---|---|---|
| MinKNOW host | localhost | A blank value is replaced with localhost on save |
| gRPC port | 9501 | 9501 is MinKNOW’s secure gRPC, 9502 gRPC-Web. Anything outside 1–65535 falls back to the default |
| TLS CA cert path | (empty) | Only checked for readability. Leaving it blank costs you nothing today |
Daemon process
A status card for stream-monitor, badged Required, showing the worker’s
state, its PID and how long ago it started, plus any last error. Start
spawns it; Manage in Background Workers goes to the full control panel.
Lifecycle, pause semantics and log tailing are documented under Background
Workers.
Test without a real MinION
Visible only in development builds, because the simulator workers are marked
dev-only. Use simulator preset does four things in order: sets the output
root to /tmp/seqdesk-sim, turns the enable switch on, starts stream-monitor
if it is not already running, and starts the stream-simulator worker. Mock
FASTQ files then appear every 15 seconds, which is enough to exercise the whole
ingest path. See trying it without a
sequencer.
The connection test
Test connection runs three read-only checks — nothing is sent to MinKNOW — and reports each under Connection test results.
| Check | What a pass proves |
|---|---|
| Output directory | The configured root exists, is a directory, and the web application can read it |
| gRPC port | A plain TCP connect to the host and port succeeded. It does not speak gRPC and does not identify what answered |
| TLS CA cert | The file you named is readable. Blank counts as a pass |
Two things to know before you trust the overall verdict. It is computed as the output directory check passed and either of the other two — so a green overall result can be carried by a check that gates a feature which is not implemented. And it runs as the web application’s user; if the daemon runs as a different user, a pass here does not prove the daemon can read the folder.
Where the configuration lives
The whole block is stored as minknowStream inside
SiteSettings.extraSettings, in the database — not in settings.json, and not
in an environment variable.
It is classed as operator-owned: an installation profile does not manage it,
and a profile reload deliberately leaves it untouched, so a reload cannot point
a facility’s watcher somewhere else. Two values in that block have no field on
this screen and matter on network shares — usePolling and
stabilityThresholdMs, both described in Stream Mode →
Setup.
See also
- Stream Mode — what the feature does, its limits, and how to run a stream against a live sequencing order
- Background Workers — starting,
pausing and inspecting the
stream-monitordaemon - Data Storage — the unrelated path settings used by file discovery and pipelines