nanoporetech / nanoporetech/minknow_api
minknowd persistently binds to port 8000 on boot, causing port collisions with standard web development servers
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 73
- Forks
- 16
- PR merge metrics
- No merged PRs in 30d
Description
Description
The MinKNOW background service (minknowd) automatically starts at system boot and persistently binds to port 8000 to listen for the first sequencing position. It holds this port indefinitely, even when:
- The MinKNOW UI is completely closed.
- No sequencing hardware/flow cells are attached.
- The software has been idle for an extended period.
Port 8000 is a standard default port for many popular web development frameworks (e.g., Django, React, Laravel). Because MinKNOW hoards this port in the background without actively using it, it blocks developers from spinning up local dev servers on their machines.
Steps to Reproduce
- Install MinKNOW on a local machine.
- Close the MinKNOW graphical user interface.
- Attempt to start a local development server on port 8000 (e.g., python manage.py runserver).
Expected Behavior
MinKNOW should either:
- Use a non-standard, unassigned port range (e.g., in the 49152–65535 dynamic range) to avoid collisions with standard web protocols.
- Dynamically release port 8000 when no active sequencing positions or flow cells are physically connected.
Actual Behavior
The local server fails to start, throwing an EADDRINUSE: address already in use :::8000 error because the idle MinKNOW system service refuses to release the port.
Suggested Solutions / Feature Requests
- Shift default port range: Change the default starting port from 8000 to a less contested private block (e.g., 9510+ or 58000+).
- On-demand binding: Only bind to position ports when a device is actively initialized or when the UI is launched.
- Expose configuration: Expose a simple default_position_port key in the UI settings or user-facing user_config file so users don't have to hack system-level daemons to free up port 8000.
Environment Info
- MinKNOW Version: e.g., 24.xx.x
- OS: macOS Tahoe 26.5.2
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source files, tests, or entry points are named in the issue. Start by reproducing the boot-time port collision with python manage.py runserver, then locate how minknowd selects and binds position ports; done means idle MinKNOW no longer blocks port 8000 and the chosen configuration or release behavior is covered by tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100