Skip to Content
AdministrationMinKNOW Stream

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.

ControlDefaultEffect
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)5000How 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.

ControlDefaultNotes
MinKNOW hostlocalhostA blank value is replaced with localhost on save
gRPC port95019501 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.

CheckWhat a pass proves
Output directoryThe configured root exists, is a directory, and the web application can read it
gRPC portA plain TCP connect to the host and port succeeded. It does not speak gRPC and does not identify what answered
TLS CA certThe 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-monitor daemon
  • Data Storage — the unrelated path settings used by file discovery and pipelines