HashiCorp Nomad · VS Code

Nomad Lens

Nomad operations where you already write your job specs: explorer, plan diff, logs, incidents. Zero runtime dependencies.

0 runtime deps Nomad HTTP API tokens from env only 24 commands MIT
nomad snapshot — prod
# Nomad snapshot — prod
total jobs  : 24  (problems: 2)
nodes       : 6   (non-ready/drain: 1)
deployments : 3   (not healthy: 1)

## ⚠ Needs attention
| Job        | Status         | Alloc | Failed |
| packager   | 🟠 degraded    | 2/3   | 1      |
| ingest     | 🟡 pending     | 0/2   | 0      |

$ plan  # diff repo ↔ running, before deploying
~ Count: 23
  ~ image: "nginx:1.25""nginx:1.27"

What it does

One panel. Read-only by default; every mutating action asks first, and the destructive ones make you type the name.

🗂️

Cluster explorer

Jobs with real health — a running one with missing allocs is degraded — allocations, tasks, nodes, deployments. Multi-cluster, one switch.

🔀

Plan diff repo↔running

Open a .nomad/.hcl and see the diff against the running job before deploying. Server-side HCL parsing.

📜

Streaming logs

stdout/stderr of any task in a dedicated Output channel — streaming, not polling. Several streams side by side.

🚨

Incident bundle

One click on a failed alloc: an incidents/ folder with a report (event timeline) and the tail of the logs attached.

📸

Cluster snapshot

A markdown health report: problems on top, full table below. Perfect for the morning check.

🔒

Safe by default

ACL tokens from env vars only, never in settings/logs. A warning if a token would travel in cleartext over http.

Deep dive

The questions you actually ask during an incident — answered without leaving the editor.

🕓

Version history & revert

What did the last deploy change? Diff any two versions, then roll back with the plan preview in front of you. Read more →

🧭

Placement diagnostics

Why won't it schedule? The scheduler's counters as sentences: constraint, exhausted memory, empty datacenter, quota. Read more →

📊

Usage vs requested

Live CPU and memory against the spec. Flags the task about to be OOM-killed and the reservation nobody uses. Read more →

🚧

Node drain & eligibility

Make a node ineligible before maintenance, drain it with a deadline, watch the remaining allocations. Read more →

🔎

Grep across allocations

Which instance logged that error? One search over stdout+stderr of every allocation, in parallel. Read more →

🪞

Drift between clusters

Same job on two clusters, field by field — plus a job × cluster matrix of docker images. Read more →

Documentation

Generated from docs/GUIDE.md in the repo, so it never drifts from the extension.

Setup

Clusters, namespaces and the ACL token rule: the token is never stored in your settings.

Recipes

Before a deploy · morning check · a failing allocation · node maintenance · is prod really like dev?

Command reference

All 24 commands, where each one lives and what it does.

Settings reference

Every nomadLens.* setting with type, default and meaning.

Troubleshooting

403s, timeouts, empty lists, logs that will not start — symptom to remedy.

Security

What is read-only, what asks for confirmation, and how tokens are handled.

Installation

From the Marketplace (publisher allannava95) or from a .vsix.

code --install-extension nomad-lens-<version>.vsix

Then configure your clusters in settings.json — the token is read from an env var, never stored:

"nomadLens.clusters": [
  { "name": "dev",  "address": "http://nomad-dev.example:4646" },
  { "name": "prod", "address": "https://nomad.example:4646",
    "namespace": "default", "tokenEnv": "NOMAD_TOKEN_PROD" }
]

The full documentation covers every command and setting, plus recipes for a deploy, the morning check, a failing allocation and node maintenance.