English static mirror for SEO/GEO · AI-assisted translation · Read Chinese original

witr: A Single-Command Causality Tracer for Linux Processes, Ports, Containers, and Files

Forum topic · ✨步子哥 · 2026-08-07

Summary

witr (Why Is This Running) is a Go-based single-binary CLI tool that reconstructs the full causality chain behind a running process. Traditional utilities such as ps, lsof, ss, systemctl, and docker ps expose system state and metadata but leave operators to manually correlate outputs to answer 'why is this running.' witr performs causality tracing: given a process PID, a listening port, a container ID, or a file path, it walks the launch chain (e.g., systemd -> pm2 -> node app.js) and renders it as a human-readable story. The tool ships in three modes (human-readable CLI, JSON for automation, and an interactive TUI) sharing one tracing engine. The article explains four entry points, three timing factors behind its August 2026 surge of 308 GitHub stars in one day (container complexity, AI-agent spawns, cross-platform static binary), and why 'human-understandable' is a core design metric.

Why a New Process Tool? The State-vs-Causality Gap

Every ops engineer has lived this scene: a 3 a.m. alert, a port listening, a process burning CPU, a container running. You SSH in and ask the oldest question:

> Why is this thing running?

Then comes the manual correlation: ps aux | grep xxx for the PID, lsof -i :8080 for the port, systemctl status for systemd, docker ps for containers, pstree -p for the parent chain, and a shell history dive for the original launch command. Five tools, five outputs, and a brain doing the join.

The core insight behind witr (Why Is This Running) is that existing tools expose state and metadata — they show *what* is running but force the user to infer *why*. witr does causality tracing instead: given one running thing, it reconstructs the full launch chain (e.g., systemd -> pm2 -> node app.js) in a single command.

Three Output Modes, One Engine

witr ships in three presentation layers backed by a shared tracing engine:

1. CLI for human-readable terminal output during debugging. 2. JSON for piping into automation, alerting, and audit pipelines. 3. TUI for interactive dashboard-style multi-hop exploration.

The Unix-philosophy flavor is deliberate: witr does one thing — causality tracing — and varies only the interface.

Four Entry Points

You can start the trace from any of four "running things":

  • process — given a PID, walk the launch chain.
  • port — given a port number, locate the listener, then walk the chain.
  • container — given a container ID, find the host process, then walk the chain.
  • file — given a file path, find processes accessing it, then walk the chain.
  • All four converge on the same primitive: reverse from result to cause. The shape mirrors distributed tracing — OpenTelemetry follows a request across services, witr follows a running thing across OS layers.

    Why It Hits Now: Three Timing Factors

    witr is not the first process-tracing tool (pstree, htop, atop partially overlap). What explains its August 2026 surge of 308 stars in one day?

    1. Containerization stretched the chain. Pre-container, a typical launch was init -> shell -> command, two or three hops. Today it can be systemd -> dockerd -> containerd -> containerd-shim -> container init -> shell -> app, six or seven hops. Human correlation breaks past three or four.

    2. AI agents make "why is this running" harder. When agents can autonomously spawn processes, start services, and create containers, the answer may no longer involve a human command. A causality chain becomes an audit artifact for agent side effects.

    3. Single static binary, every platform. witr is a Go static binary shipping for Linux, macOS, FreeBSD, and Windows, packaged through Homebrew, APT, Winget, Conda, AUR, and MacPorts. brew install witr is the whole installation story.

    A Design Principle Worth Pausing On

    The README states witr's success metric explicitly:

    > witr succeeds when it can produce a complete, accurate, and human-understandable causality chain.

    Three adjectives: complete, accurate, human-understandable. The first two are engineering targets; the third is a cognitive one. A chain that requires kernel-data-structure literacy to parse is no better than pstree. witr's differentiator is that its output is a causality story for humans, not a metadata dump for machines.

    The broader pattern: the next wave of systems tooling will compete less on *what it can do* and more on *how clearly it explains why*. ps, lsof, and ss all answer *what*. witr answers *why* — the most frequently asked and least tool-supported question in operations.

    Links

  • GitHub: https://github.com/pranshuparmar/witr
  • Live demo: https://pranshuparmar.github.io/witr/
  • Hacker News discussion: https://news.ycombinator.com/item?id=46392910
One-line summary: witr turns the five-tool manual correlation of ps / lsof / systemctl / docker into a one-command causality chain that answers *why is this running*, not just *what is running*.

Tags

#witr#linux#process-tracing#causality-chain#devops#go#containers#observability

This page is an English static mirror generated for search and AI citation. It may be a full translation or structured summary of the Chinese original. Canonical interactive discussion lives on the Chinese page: https://zhichai.net/topic/178603061