> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getmuster.io/llms.txt
> Use this file to discover all available pages before exploring further.

# n8n

> Automatic monitoring of n8n AI workflows via the muster connector.

## How it works

The n8n connector:

* **Discovers** all n8n workflows containing LLM nodes automatically
* **Streams** execution results by polling the n8n Execution API every 30 seconds
* **Infers** quality checks from execution output

Elitery deploys and manages the connector. Your n8n workflow developers do nothing.

***

## What Elitery needs from you

During onboarding, provide:

```
N8N_BASE_URL=https://n8n.yourcompany.internal
N8N_API_KEY=<from n8n Settings → API>
```

If your n8n uses a self-signed TLS certificate:

```
N8N_SKIP_TLS_VERIFY=true
```

***

## Which workflows are monitored

The connector automatically identifies AI workflows by detecting LLM nodes:

* `@n8n/n8n-nodes-langchain.agent`
* `@n8n/n8n-nodes-langchain.openAi`
* `@n8n/n8n-nodes-langchain.lmChatOpenAi`
* `@n8n/n8n-nodes-langchain.lmChatAnthropic`
* `n8n-nodes-base.openAi`

Non-AI workflows (data pipelines, email triggers, etc.) are ignored.

***

## What your n8n developers do

Nothing for automatic monitoring.

For **precise quality checks** on critical workflows, add an HTTP Request node as the last step:

**Node settings:**

| Setting | Value                                                                        |
| ------- | ---------------------------------------------------------------------------- |
| Method  | POST                                                                         |
| URL     | `https://api.yourcompany.getmuster.io/api/v1/jobs/{{ $json.jobId }}/quality` |
| Body    | JSON (see below)                                                             |

```json theme={null}
{
  "agent_id": "invoice-processing-n8n",
  "checks": [
    {
      "check_id": "output_not_empty",
      "severity": "HIGH",
      "passed": "{{ $json.output !== null && $json.output !== '' }}"
    },
    {
      "check_id": "required_field_present",
      "severity": "HIGH",
      "passed": "{{ $json.total !== undefined }}"
    }
  ]
}
```

This is optional — the connector already provides automatic monitoring without it.
