Code for api.multiqc.info, providing run-time information about available updates.
The API is a simple tool to provide a metadata endpoint for MultiQC runs. Currently, there are the following endpoints that are used:
- Information about the latest available release
- MultiQC uses this to print a log message advising if the current version is out of date, with information about how to upgrade.
- [Planned]: Broadcast messages
- Can be used to announce arbitrary information, such as critical changes.
- No usage currently anticipated, this is mostly a future-proofing tool.
- [Planned]: Module-specific warnings
- Warnings scoped to module and MultiQC version
- Will allow MultiQC to notify end users via the log if the module that they are running has serious bugs or errors.
- MultiQC package downloads across multiple sources, and, when available, different versions:
- PyPI (additionally, split by version)
- BioConda (additionally, split by version)
- DockerHub
- GitHub clones
- BioContainers (AWS mirror)
MultiQC supplies some information to the API when it requests this endpoint. This is used to gather metrics on MultiQC usage and tailor development efforts.
Currently, it reports:
- MultiQC version
- [Planned]: Python version
- [Planned]: Operating system (linux|osx|windows|unknown)
- [Planned]: Installation method (pip|conda|docker|unknown)
- [Planned]: CI environment (GitHub Actions|none)
No identifying information is collected. No IPs are logged, no information about what MultiQC is being used for or where, no sample data or metadata is transferred. All code in both MultiQC and this API is open source and can be inspected.
This version check can be disabled by adding no_version_check: true
to your MultiQC config (see docs).
The request uses a very short timeout (2 seconds) and fails silently if MultiQC has no internet connection or an unexpected response is returned.
A docker image is available for the app here:
ghcr.io/multiqc/apimultiqcinfo:latest
Note: These instructions are intended for local development work, not a production deployment.
Create an .env
file and replace the xxx
s with random strings.
Set UVICORN_RELOAD=--reload
to enable hot-reloading when you save files.
cp .env.example .env
Then, use docker compose to launch the app:
docker compose up
The API should now be available at http://localhost:8008/
I recommend using something like Postcode (VSCode extension) or httpie or similar.
When you're done, Ctrl+C to exit, then lean up:
docker compose down