nf-llm-debugger @ 1.0.2
Summary
The nf-llm-debugger plugin hooks directly into the Nextflow runtime engine to capture process execution failures (such as non-zero exit codes, out-of-memory events, or command errors). It retrieves the failed task context and log outputs, compiles them into a structured report, and queries an OpenAI-compatible Large Language Model (LLM) API (such as Llamafile, Ollama, OpenAI, or LocalAI) to generate an instantaneous, highly accurate error diagnosis.
Key Features:
- Automatic Runtime Interception: Monitors the task execution lifecycle (
TraceObserver) and automatically analyzes errors. - Universal Compatibility: Works with any local or remote OpenAI-compatible completion endpoint (
/v1/chat/completions). - No-Key Local Defaults: Configured out-of-the-box to use local, offline LLMs running via Llamafile or Ollama.
- Actionable Diagnoses: Translates raw stack traces and OS exit codes (like
126,127,137) into human-readable steps.
Get Started
1. Requirements
- Nextflow 24.04.0 or newer
- Java 17 or newer
2. Enable the Plugin
Add the plugin declaration to the plugins block inside your nextflow.config:
plugins {
id 'nf-llm-debugger@1.0.0'
}
3. Configure Your LLM Endpoint
Define your API parameters inside the params block of your nextflow.config:
params {
llm_address = 'http://localhost:8080/v1/chat/completions' // Your local or remote LLM endpoint
llm_model = 'LLaMA_CPP' // The model identifier
}
If your LLM endpoint requires authentication (e.g. OpenAI or Gemini), export your API key in your shell environment:
export LLM_API_KEY="your-api-key"
Examples
1. Deliberately Failing Pipeline
Below is a simple Nextflow pipeline (main.nf) designed to trigger an error by attempting to read a non-existent file:
nextflow.enable.dsl=2
process failProcess {
script:
"""
echo "Starting a process that will fail..."
cat nonexistent_file.txt
"""
}
workflow {
failProcess()
}
2. Expected Output with LLM Diagnosis
When you run the pipeline above with nf-llm-debugger enabled:
nextflow run main.nf
The plugin automatically intercepts the task failure, sends the context to the configured LLM, and prints a structured diagnosis directly to the console:
executor > local (1)
[03/4f4d68] failProcess | 0 of 1 ✘
🤖 [nf-llm-debugger] onFlowComplete - Success: false
🤖 [nf-llm-debugger] onFlowComplete - Error: Process `failProcess` terminated with an error exit status (1)
🤖 [nf-llm-debugger] Sending error report to LLM (model: LLaMA_CPP)...
================================================================================
🤖 [nf-llm-debugger] LLM ERROR DIAGNOSIS:
================================================================================
🤖 [DIAGNOSIS] The task 'failProcess' failed because the command tried to execute
'cat nonexistent_file.txt', but the file 'nonexistent_file.txt' does not exist
in the task's working directory.
💡 SUGGESTIONS:
1. Double-check if the file name is spelled correctly in your process script.
2. If this file is an input, make sure you declared it correctly in the `input:`
block of the process so Nextflow stages it into the work directory.
================================================================================
ERROR ~ Error executing process > 'failProcess'
Caused by:
Process `failProcess` terminated with an error exit status (1)
License
Licensed under the MIT License.
| Nextflow version | >=24.04.0 |
|---|---|
| Depends On | - |
| Release Date | 02 Jun 2026 21:18:28 (UTC) |
| Release Notes | - |
| Download URL | https://registry.nextflow.io/api/v1/plugins/nf-llm-debugger/1.0.2/download/nf-llm-debugger-1.0.2.zip |
| Store URL | https://public.cr.seqera.io/v2/nextflow/plugin/nf-llm-debugger/blobs/sha256:7e821956119ed2be16cf2947900a20533c9b09a3f066dba07424b4985a637e11 |
| Size | 9.4 KB |
| Checksum | 3e2300042e072846368d0e4ceaacc9a36e64d0a147a3979996bdbe3c76e0e0dab06fb344eab2179994975cc88a424549e995e7dd47e654a4786eec69b5563042 |
| Total downloads | 31 View trends |
| Security Scan |
| Version | Nextflow version | Date | Status | Downloads |
|---|---|---|---|---|
| 1.0.12 | >=24.04.0 | 19 Jun 2026 11:11:36 (UTC) | 29 | |
| 1.0.11 | >=24.04.0 | 16 Jun 2026 07:32:12 (UTC) | 31 | |
| 1.0.10 | >=24.04.0 | 16 Jun 2026 07:26:18 (UTC) | 24 | |
| 1.0.9 | >=24.04.0 | 16 Jun 2026 07:18:54 (UTC) | 24 | |
| 1.0.8 | >=24.04.0 | 15 Jun 2026 16:53:41 (UTC) | 23 | |
| 1.0.7 | >=24.04.0 | 15 Jun 2026 16:51:25 (UTC) | 27 | |
| 1.0.6 | >=24.04.0 | 15 Jun 2026 16:45:25 (UTC) | 25 | |
| 1.0.5 | >=24.04.0 | 04 Jun 2026 08:56:45 (UTC) | 33 | |
| 1.0.4 | >=24.04.0 | 03 Jun 2026 07:51:28 (UTC) | 33 | |
| 1.0.3 | >=24.04.0 | 02 Jun 2026 21:44:13 (UTC) | 32 | |
| 1.0.2 | >=24.04.0 | 02 Jun 2026 21:18:28 (UTC) | 31 | |
| 1.0.1 | >=24.04.0 | 02 Jun 2026 21:03:32 (UTC) | 31 | |
| 1.0.0 | >=24.04.0 | 02 Jun 2026 15:18:24 (UTC) | 35 |