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
$ sudo curl -L https://neurader.cloud/neurader/releases/latest/neurader-linux-amd64 -o neurader && sudo chmod +x neurader && sudo ./neurader init
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 Written

Each run creates a timestamped JSON file in /var/log/neurader/ with full per-host results and error output.

06

Grafana Dashboard

Optionally connect Grafana. Every subsequent run syncs automatically — NeuRader creates the datasource, imports the dashboard, and pushes each run in the background.

Structured JSON.
Every time.

Each playbook run produces a clean JSON file named playbook_2025-01-24_14-30-00.json. Every managed node is captured with its exact outcome.

Success hosts
Status, ok/changed/skipped counts, full Ansible summary per host.
Failed hosts
Full error output: msg, stdout, stderr, return code, and which module failed.
Unreachable hosts
SSH failures, connection refused, timeout — captured separately from task failures.
Logs older than your configured retention period are automatically deleted
site.yml_2025-01-24_14-30-00.json
{
  "playbook":    "site.yml",
  "start_time":  "2025-01-24T14:29:45Z",
  "end_time":    "2025-01-24T14:30:02Z",
  "total_hosts": 3,
  "hosts": {
    "web01": {
      "status": "success",
      "summary": {
        "ok": 12,
        "changed": 3,
        "failures": 0
      }
    },
    "db01": {
      "status": "failed",
      "error_output": {
        "msg":    "Permission denied",
        "stderr": "sudo: password required",
        "rc":     1,
        "module": "ansible.builtin.command"
      }
    }
  }
}
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, and optionally configures Grafana.

$ neurader list

List All Runs

Shows all recorded playbook runs sorted newest first — with playbook name, timestamp, total hosts, success count, and failed count.

$ neurader show <file>

Inspect a Run

Prints full per-host results for a specific run. Failed hosts display in red with full error output: msg, stderr, rc, and module name.

$ neurader clean

Purge Old Logs

Manually delete logs older than your configured retention period. Also runs automatically via systemd timer or cron fallback every 12 hours.

$ neurader push

Backfill to Grafana

Push all existing logs to Grafana. Only needed once when you first connect Grafana — after that every run syncs automatically in the background.

$ neurader grafana-setup

Grafana Config

Create the Neurader datasource and import the pre-built dashboard into Grafana. Can be re-run after changing your Grafana endpoint.

$ neurader status

Health Check

Shows current config: log dir, retention period, callback plugin path, ansible.cfg location, Grafana endpoint, and total stored runs.

$ neurader uninstall

Clean Removal

Removes the callback plugin, reverts ansible.cfg, disables the cleanup timer, and removes all config and log files. Leaves no trace.

$ neurader reset-callback

Restore Default Plugin

Overwrites the installed callback plugin with the default version embedded in the binary. Use this after customising the log format and wanting to revert.

Green or red.
Click to drill down.

NeuRader creates a datasource and imports a pre-built dashboard into your Grafana instance. Every playbook run is pushed to Grafana automatically — no manual steps. Open your dashboard and the latest run is already there.

Select any historical playbook run from a dropdown
Each host shown as green (success) or red (failed/unreachable)
Click any red host to expand full error output
Works with Grafana on bare metal, Docker, or Kubernetes
Dashboard and datasource created automatically by neurader grafana-setup
Every playbook run syncs to Grafana automatically — no manual push needed
Neurader — Ansible Playbook Monitor LIVE
RUN: site.yml_2025-01-24_14-30-00
Host Execution Status
web01.prod.example.com ✓ SUCCESS
web02.prod.example.com ✓ SUCCESS
web03.prod.example.com ✓ SUCCESS
db01.prod.example.com ✗ FAILED ↓ click
module: ansible.builtin.command
msg: Permission denied
stderr: sudo: a password is required
rc: 1
cache01.prod.example.com ✗ UNREACHABLE ↓ click
module: connection
msg: Failed to connect to the host via SSH
rc: -1
Platform Support

Runs everywhere
Ansible runs.

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

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
Verify integrity: checksums.sha256  ·  Always points to the latest release
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
Ansible install method detection
apt · dnf · yum · pip · pipx — all detected automatically
Cleanup scheduler
systemd timer where available · cron fallback · per-run fallback
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 Unix socket, 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, and sets up log rotation. You never touch a file.

Self-Contained Binary

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

Structured JSON Logs

Every playbook run writes a clean, human-readable JSON file. Logs are named playbook_date_time.json and stored in /var/log/neurader/.

Automatic Log Rotation

Configure your retention period once. NeuRader automatically deletes logs older than your threshold via a systemd timer (every 12h) 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 into every playbook execution 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