Ansible Execution Monitor

Every playbook run.

NeuRader hooks into your Ansible controller and captures every playbook execution — which nodes ran, which succeeded, which failed, and exactly why. Zero ports. Zero daemons. One binary.

install
$ curl -L https://neurader.cloud/install.sh | sudo bash
Root required for init only 15MB static binary x86_64 · ARM64 · ARM32 All major Linux distros
How it works

Setup once.
Works forever.

Run one command. NeuRader auto-detects your Ansible installation, wires up the callback plugin, and starts recording every playbook execution automatically.

01

Install & Init

Download the binary for your arch. Run sudo neurader init. The setup wizard handles everything.

02

Auto Detection

Detects your distro, Ansible install method (apt / pip / pipx), callback plugin directory, and ansible.cfg. Zero manual config.

03

Plugin Installed

Writes neurader_callback.py into your Ansible callback dir and patches ansible.cfg automatically.

04

Run Playbooks

Use ansible-playbook exactly as you always have. NeuRader captures every run silently in the background.

05

Logs + Alerts

Each run writes a JSON log and fires alerts to Slack, PagerDuty, Jira, Teams, and more — automatically.

06

Grafana Dashboard

Every run syncs to Grafana automatically. NeuRader creates the datasource, imports the dashboard, and pushes each run in the background.

Alerting — New in v0.5.5

Failure happens.
Get notified instantly.

Every playbook run is assessed automatically. Failures trigger all configured channels simultaneously — no manual steps, no monitoring. NeuRader fires and forgets.

Slack
PagerDuty
MS Teams
Jira
Email
Telegram
Webhook
Alertmanager

One run = one assessment.
No noise, no duplicates.

Success → Slack / Teams / Telegram only
Clean success message. No ticket. No page. No noise.
Failure → Full incident across all channels
Slack + PagerDuty page + 1 Jira ticket with all failed hosts and full task details.
10 hosts failed = 1 Jira ticket
All failed hosts in one ticket. NeuRader never monitors or auto-closes — engineer owns resolution.
Learn more about Alerting
neurader alert-setup NeuRader Alert Setup TUI

Playbook Runs

You run ansible-playbook as usual. NeuRader callback captures everything silently in the background.

NeuRader Assesses

post-run reads the log, identifies failures, collects host names, task details, modules, args, stderr.

Alerts Fire

All configured channels fire simultaneously — Slack, PagerDuty, Jira — in under one second.

Configure with neurader alert-setup — interactive green TUI, no config files needed
Slack config
Slack
Jira config
Jira
Email config
Email (SMTP)

Structured JSON.
Every time.

Each playbook run produces a clean JSON file named playbook_date_time.json. Every managed node is captured with its exact outcome.

Success hosts
Status, ok/changed/skipped counts, full Ansible summary per host.
Failed hosts — all tasks captured
Every failed task: name, module, args, msg, stdout, stderr, rc, exception.
Unreachable hosts
SSH failures, connection refused, timeout — captured separately from task failures.
Logs older than your configured retention period are automatically deleted
site.yml_2026-03-08_14-30-00.json
{
  "playbook":    "site.yml",
  "start_time":  "2026-03-08T14:29:45Z",
  "total_hosts": 3,
  "hosts": {
    "node1": { "status": "success" },
    "node3": {
      "status": "failed",
      "failed_tasks": [{
        "task_name": "Install packages",
        "module":    "yum",
        "msg":       "No package nginx available",
        "rc":        1,
        "task_args": {
          "name":  "nginx",
          "state": "present"
        }
      }]
    }
  }
}
CLI Reference

Simple commands.
Full control.

Everything through one binary. No config files to edit, no services to manage.

$ neurader init

Setup Wizard

Detects Ansible, creates directories, installs callback plugin, patches ansible.cfg, sets up log cleanup scheduler.

$ neurader list

List All Runs

Shows all recorded playbook runs newest first — playbook name, timestamp, total hosts, success/fail counts.

$ neurader show <playbook>

Inspect a Run

Full per-host results. Failed hosts show all failed tasks with name, module, args, stderr, rc. Success hosts show count only.

$ neurader last [--failed]

Latest Run

Show the most recent playbook run. Use --failed to filter failed/unreachable hosts only.

$ neurader hosts

Host Health

Per-host success/failure stats across all runs. Shows success rate with ✓ healthy / ~ degraded / ✕ critical indicators.

$ neurader ping [--group]

Reachability Check

Check if all inventory hosts are reachable right now. Filter by group with --group.

$ neurader inventory

View Inventory

Show all hosts and groups from your Ansible inventory. Filter by group with --group.

$ neurader alert-setup

Alert Configuration TUI

Interactive terminal UI (like nmtui) to configure Slack, PagerDuty, Jira, Teams, Email, Telegram, Webhook, Alertmanager.

$ neurader alert-test

Test Alert Channels

Send a test alert to all configured channels. Shows ✓ or ✗ per channel before a real incident occurs.

$ neurader push

Backfill to Loki

Push all existing logs to Loki/Grafana. Needed once when you first connect Grafana.

$ neurader loki-setup

Grafana Setup

Install Loki, create datasource and import the pre-built dashboard into Grafana automatically.

$ neurader status

Health Check

Shows current config: log dir, retention, callback path, ansible.cfg, Grafana endpoint, alert channels configured.

Green or red.
Click to drill down.

NeuRader creates a datasource and imports a pre-built dashboard. Every run pushes automatically — no manual steps needed.

Select any historical run from a dropdown
Each host shown as green (success) or red (failed)
Click any red host to expand full error output
Works with Grafana on bare metal, Docker, or Kubernetes
Every run syncs automatically — no manual push needed
NeuRader — Ansible Playbook MonitorLIVE
RUN:site.yml_2026-03-08_14-30-00
Host Execution Status
node1.prod✓ SUCCESS
node2.prod✓ SUCCESS
node3.prod✗ FAILED ↓ click
task: Install required packages
module: yum   rc: 1
msg: No package nginx available
Platform Support

Runs everywhere
Ansible runs.

A single statically linked Go binary with zero dependencies. Supports every architecture and every major Linux distribution.

x86_64 · Intel / AMD
neurader-linux-amd64
Download
ARM64 · Graviton / Pi 4+
neurader-linux-arm64
Download
ARM32 · Pi 2/3 / Embedded
neurader-linux-arm
Download
x86_64 (amd64)
ARM64 (aarch64)
ARM32 (armv7)
Ubuntu 20/22/24
Debian 11/12
RHEL 8/9
CentOS Stream
Rocky Linux
AlmaLinux
Fedora
Amazon Linux 2/2023
openSUSE
Arch Linux
Alpine Linux
Any pip/pipx Ansible
Design Principles

Built the right way.
No compromises.

NeuRader was designed with one rule: it should never get in your way.

No Ports. No Daemons.

The Ansible controller exposes nothing. No HTTP server, no background service. The Python callback writes directly to disk. The Go binary runs only when invoked.

Zero Manual Config

neurader init does everything: creates directories, detects Ansible, installs the plugin, patches ansible.cfg. You never touch a file.

Self-Contained Binary

The Python callback, systemd units, Grafana dashboard, and TUI are all embedded inside the Go binary. Download one file. That's the entire tool.

8-Channel Alerting

Slack, PagerDuty, Teams, Jira, Email, Telegram, Webhook, Alertmanager — all fire simultaneously on failure. Configure with neurader alert-setup.

Automatic Log Rotation

Configure your retention period once. NeuRader automatically deletes logs older than your threshold via a systemd timer or cron fallback.

Grafana Ready

One command sets up the datasource and imports the dashboard. Works with Grafana on any infrastructure — bare metal, Docker, Kubernetes, cloud-hosted.

Ready to see what your
Ansible is actually doing?

One binary. One command. Full visibility, instant alerts, and a Grafana dashboard — across your entire fleet.

# download (amd64) curl -L https://neurader.cloud/   releases/latest/neurader-linux-amd64 \   -o neurader   # make executable chmod +x neurader   # setup wizard (run once) sudo ./neurader init