Nomad.nvim

Nomad Cluster Explorer for Neovim

A beautiful sidebar interface to explore and manage your HashiCorp Nomad cluster directly from your editor. Monitor jobs, nodes, and cluster topology with ease.

Nomad.nvim Plugin Interface

✨ Features

Interactive Sidebar

Browse jobs and nodes with real-time status updates in a beautiful sidebar interface

Telescope Integration

Fuzzy search jobs and nodes with advanced filtering using telescope.nvim

Enhanced Cluster Topology

Interactive full-buffer view showing resource usage and allocations per node

Job Logs Viewer

Interactive logs display with refresh and follow capabilities

Job Control

Start, stop, restart jobs directly from Neovim with simple commands

Node Management

Drain and enable nodes with a single command for cluster maintenance

Multiple Layouts

Sidebar, floating window, or split pane - choose your preferred layout

Async Operations

Non-blocking API calls with intelligent caching and rate limiting

ACL Support

Works seamlessly with Nomad clusters that have ACLs enabled

Multi-Datacenter

Support for multi-datacenter Nomad clusters with region switching

Resource Monitoring

View CPU, memory, and disk usage per node in real-time

Smart Caching

Intelligent caching system to reduce API load and improve performance

🚀 Installation

Using lazy.nvim

{
  "lukaszmoskwa/nomad.nvim",
  dependencies = {
    "MunifTanjim/nui.nvim",
    "nvim-telescope/telescope.nvim",
    "nvim-lua/plenary.nvim",
    "nvim-tree/nvim-web-devicons", -- optional
  },
  config = function()
    require("nomad").setup({
      -- your configuration here
    })
  end,
}

Using packer.nvim

use {
  "lukaszmoskwa/nomad.nvim",
  requires = {
    "MunifTanjim/nui.nvim",
    "nvim-telescope/telescope.nvim",
    "nvim-lua/plenary.nvim",
    "nvim-tree/nvim-web-devicons", -- optional
  },
  config = function()
    require("nomad").setup()
  end,
}

📋 Requirements

🎯 Usage

Basic Commands

:NomadToggle Toggle the sidebar
:NomadRefresh Refresh cluster data
:NomadSearchJobs Open Telescope job search
:NomadTopology Show cluster topology

Default Keybindings

<leader>no Toggle sidebar
<CR> View job/node details
r Refresh cluster data
j Search jobs with Telescope
t Show cluster topology

⚙️ Configuration Example

require("nomad").setup({
  -- Sidebar configuration
  sidebar = {
    width = 45,
    position = "left", -- "left", "right", or "float"
    border = "rounded",
  },

  -- Nomad configuration
  nomad = {
    address = nil, -- Uses NOMAD_ADDR env var
    token = nil,   -- Uses NOMAD_TOKEN env var
    timeout = 30000,
    namespace = "default",
  },

  -- UI configuration
  ui = {
    show_icons = true,
    refresh_interval = 30, -- seconds
  },

  -- Keybindings
  keymaps = {
    toggle_sidebar = "<leader>no",
    refresh = "r",
    details = "<CR>",
    -- ... more keymaps
  },
})

📚 Documentation

Configuration

Complete configuration guide with all available options and examples

View Configuration

Development

Development setup, testing, and contribution guidelines

Development Guide

Troubleshooting

Common issues and solutions for plugin configuration and usage

Troubleshooting

Roadmap

Upcoming features and planned improvements

View Roadmap