witr: una CLI que responde por qué está corriendo un proceso
pranshuparmar/witr · 22.498★ · 786 forks
witr es una utilidad de línea de comandos y una interfaz de terminal interactiva (TUI) escrita en Go que responde a una única pregunta: «¿Por qué está esto corriendo?». Ante un proceso, un puerto, un contenedor o un archivo abierto, reconstruye la cadena causal exacta que originó esa instancia —el sistema de inicialización, el supervisor, la sesión, el contenedor o el cron— y la presenta como una salida legible por humanos, como JSON o en una TUI. A 4 de septiembre de 2026 lleva 22.073 estrellas.
La fila de cola se encontraba malformada (129 127_pranshuparmar_witr); se resuelve sin ambigüedad como el repositorio pranshuparmar/witr en GitHub, que es el único con ese nombre bajo ese usuario.
Origen
El repositorio fue creado el 20 de diciembre de 2025 por Pranshu Parmar (pranshuparmar), cuyo correo pranshu.parmar@gmail.com figura como mantenedor en la configuración de publicación (.goreleaser.yml). Seis días después, el 26 de diciembre de 2025, Parmar publicó el envío «Show HN: Witr – Explain why a process is running on your Linux system» en Hacker News (hilo 46392910), que alcanzó 526 puntos y 105 comentarios.
El README enlaza una historia del propio autor en Medium («witr: Why is this running», por @pranshu.parmar) y al hilo de Hacker News como referencia del contexto de diseño. En ese hilo, el autor aclara el alcance desde el principio: witr no pretende reemplazar herramientas de monitoreo u observabilidad, sino cubrir «esos momentos en los que entras por SSH a una máquina y necesitas entender rápido por qué algo está corriendo sin revisar manualmente configuraciones, trabajos cron ni árboles de servicios».
El proyecto ha ido ganando superficie de distribución de forma orgánica y comunitaria: la conversación de lanzamiento produjo una entrada en el AUR a solicitud del propio autor, la sugerencia de soporte Nix (PR #5, aportada por el usuario sestep), y más tarde su ingreso en Homebrew, conda-forge y repositorios oficiales de Debian/Ubuntu. La versión más reciente consultada es v0.3.3 (24 de junio de 2026).
Un detalle señalado por la comunidad: la documentación del proyecto reconoce que fue desarrollado con asistencia de IA/LLM (GitHub Copilot, ChatGPT y herramientas similares), «supervisado por un humano que a veces sabía lo que hacía». En el hilo de lanzamiento, el usuario zenoprax cuestionó la contradicción de pedir confianza durante incidentes para una herramienta desarrollada con asistencia de IA; el autor respondió que ese apoyo reduce la barrera de esfuerzo y conocimiento necesarios para construirla.
Filosofía y principios
El README condensa la filosofía en torno a hacer explícita la causalidad frente a las herramientas existentes. Afirma que ps, top, lsof, ss, systemctl y docker ps exponen estado y metadatos: muestran qué está corriendo, pero dejan al usuario inferir por qué correlacionando manualmente varias salidas. witr responde en cambio a cuatro preguntas por objetivo:
- ¿Qué está corriendo?
- ¿Cómo empezó?
- ¿Qué lo mantiene corriendo?
- ¿A qué contexto pertenece?
Un principio central es tratar todo como una pregunta de proceso: puertos, servicios, contenedores y comandos se resuelven finalmente a un PID, y sobre ese PID se construye la cadena causal. Los principios de salida declarados son: una pantalla por defecto (esfuerzo razonable), orden determinista, explicación en formato narrativo y detección de mejor esfuerzo con incertidumbre explícita —es decir, witr declara cuando no está seguro en lugar de inventar una causa.
El README define criterios de éxito concretos: que un usuario pueda responder «¿por qué está esto corriendo?» en segundos, que reduzca la dependencia de varias herramientas, que la salida sea comprensible bajo estrés y que el usuario confíe en él durante incidentes.
Cómo funciona
witr identifica el objetivo (por nombre, PID, puerto, archivo o contenedor), resuelve el PID y construye la cadena de ascendencia. La salida estándar se organiza en secciones:
- Target: lo que el usuario consultó.
- Process: ejecutable, PID, usuario, comando, tiempo de inicio y número de reinicios.
- Why It Exists: la cadena causal de ascendencia (por ejemplo
systemd (pid 1) → pm2 (pid 5034) → node (pid 14233)). Es el valor central de la herramienta. - Source: el sistema principal responsable de iniciar o supervisar el proceso (esfuerzo de mejor esfuerzo). Solo se selecciona una fuente primaria: unidad systemd (con detalle de temporizador), servicio launchd (con calendario), sesión SSH (con IP remota y terminal), contenedor Docker, pm2, cron, shell interactivo (detecta tmux/screen) o sandbox Snap/Flatpak.
- Context: directorio de trabajo, nombre y rama del repositorio git (se busca hacia arriba desde el directorio de trabajo hasta encontrar
.git), nombre/imagen del contenedor, y si la conexión es pública o privada. - Warnings: observaciones no bloqueantes, como proceso corriendo como root, capacidades Linux peligrosas en procesos no root, escucha en interfaz pública (
0.0.0.0/::), múltiples reinicios, alto consumo de memoria (>1 GB RSS), tiempo de ejecución >90 días, binario eliminado o indicadores de inyección de librerías (LD_PRELOAD,DYLD_*).

Modo interactivo (TUI): ejecutar witr sin argumentos o con -i abre un panel en tiempo real con cuatro pestañas —Procesos, Puertos, Contenedores y Bloqueos— con un panel lateral del árbol de ascendencia del proceso resaltado. Permite enviar señales (Kill, Terminate, Pause, Resume) y renice desde la interfaz (solo Unix), navegación con ratón, tema adaptativo a fondo claro/oscuro y auto-actualización con cadencia adaptativa (empieza a 3 s y retrocede bajo carga).

Códigos de salida (documentados para scripts, CI y monitoreo):
| Código | Significado |
|---|---|
| 0 | Limpio: proceso encontrado, sin advertencias |
| 1 | Advertencias: proceso encontrado con una o más advertencias |
| 2 | No encontrado: sin proceso o servicio coincidente |
| 3 | Permiso denegado: privilegios insuficientes |
| 4 | Entrada inválida: argumentos erróneos o coincidencia ambigua |
| 5 | Error interno: fallo inesperado |
Soporte por plataforma (según la matriz del README): Linux (x86_64, arm64) con soporte completo vía /proc; macOS con ps, lsof, sysctl, pgrep; Windows con APIs nativas Win32 (ToolHelp32, PSAPI, Service Control Manager, sin depender de PowerShell ni WMI) y FreeBSD con procstat, ps, lsof. Los contenedores se detectan a través de Docker, Podman, nerdctl, K8s/crictl, Incus, LXC, LXD y jails de FreeBSD.
El ecosistema
Repositorios del autor. pranshuparmar mantiene además de witr (22 073 estrellas) el repositorio pranshuparmar/witr-pkgs (1 estrella), un contenedor de paquetes «auto-mantenido» que alberga las definiciones de Chocolatey, npm, Scoop y winget con workflows de actualización automática. El resto de repositorios del usuario son proyectos personales menores (juegos en navegador con Three.js como neon-mayhem con 2 estrellas y downhill-mayhem con 11, yolovest, joke, sudoku-creator-solver), sin relación funcional con witr.
Puertos y reimplementaciones de la comunidad (cifras de estrellas según la API de GitHub en esta investigación):
rewrite-everything-in-rust/witr-rs— reescritura completa en Rust de witr que declara paridad de funcionalidad y agrega seguridad de tipos; 14 estrellas, creado el 29 de diciembre de 2025.bobozi-cmd/witr-py— reimplementación en Python del proyecto (lema en chino: «基于 witr 项目,使用 python 进行复刻»); 6 estrellas, creado el 4 de enero de 2026.supervoidcoder/win-witr— reimplantación para Windows en C++ puro, marcada como WIP (trabajo en curso); 3 estrellas, creada el 1 de enero de 2026. Su autor declara que la comenzó antes de que el desarrollador original publicara una versión de Windows.dmitrymx/witr-gui— cliente gráfico (Electron/React/Vite) para Windows descrito como «monitor de procesos y analizador de seguridad» sobre witr, con interfaz documentada en ruso; 2 estrellas, creado el 15 de mayo de 2026.
El repositorio acumula 772 bifurcaciones; la página de bifurcaciones recuperada muestra copias sin diferencias sustanciales, por lo que los cuatro proyectos anteriores son los derivados no triviales visibles. El proyecto también inspiró una bifurcación homenaje/parodia, Fantastic-Computing-Machine/wtftr («Why the fuck is this running?»), sin funcionalidad adicional documentada. El README agradece como patrocinadores a Tim Colson (timcolson) y Rijurekh Bose (R-Bose).

Herramientas de publicación. Los releases se generan con GoReleaser (.goreleaser.yml), que produce binarios, un SHA256SUMS y paquetes .deb, .rpm y .apk a través de nfpm, e inserta metadatos de versión/commit/fecha para witr --version.

Estado oficial / semioficial
witr no cuenta con un respaldo de un único gran vendor, pero ha alcanzado una adopción de facto notable en el ecosistema de distribución de software libre:
- Repositorios oficiales de distribuciones: el README documenta la instalación con
sudo apt install witrdesde los repositorios oficiales de Debian (sid) y Ubuntu 26.04+, así como en derivadas como Kali, Devuan y Raspbian. También figura en Homebrew core (brew install witr, fórmulawitr0.3.3), conda-forge (conda install -c conda-forge witr), MacPorts, FreeBSD ports (pkg install witr), GNU Guix y AOSC OS. - Windows: manifiestos en winget (
winget install -e --id PranshuParmar.witr), Chocolatey (choco install witr) y Scoop (scoop install main/witr). - npm: paquete
@pranshuparmar/witr(versión 0.3.3). - Product Hunt: el proyecto figura como destacado (post 1211309) con el lema «ps, top and lsof tell you what is running. witr tells you why.»
- Trendshift: presente en la lista de repositorios en tendencia (badge
trendshift.io/repositories/18714).
En la práctica, esto significa que witr es instalable desde los catálogos oficiales de la mayoría de las plataformas principales, aunque el README avisa de que los paquetes de la comunidad pueden ir por detrás de la última versión de GitHub. No existe una designación formal de «estándar», pero su presencia transversal en los repositorios de distros y gestores de paquetes lo sitúa como una referencia de facto para responder la pregunta de causalidad de procesos.
Guía rápida de uso
Instalación y primer arranque
Prerrequisito: un sistema Linux, macOS, Windows o FreeBSD. Las opciones documentadas:
# Unix (Linux, macOS y FreeBSD) — detecta SO y arquitectura, instala a /usr/local/bin/witr
curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | bash
# Windows (PowerShell) — descarga el zip, verifica checksum y lo instala en %LocalAppData%\witr\bin
irm https://raw.githubusercontent.com/pranshuparmar/witr/main/install.ps1 | iex
Por gestor de paquetes:
sudo apt install witr # Debian sid / Ubuntu 26.04+
brew install witr # Homebrew
conda install -c conda-forge witr # conda-forge (también mamba / pixi)
yay -S witr-bin # AUR (Arch)
npm install -g @pranshuparmar/witr # npm (multiplataforma)
winget install -e --id PranshuParmar.witr # Windows
choco install witr # Chocolatey
scoop install main/witr # Scoop
Desde fuente: go install github.com/pranshuparmar/witr/cmd/witr@latest. En Nix, nix run github:pranshuparmar/witr -- --help.
Al primer arranque, witr --version y man witr verifican la instalación. Ejecutar witr sin argumentos abre la TUI. El README recomienda, si se usa un gestor de paquetes, instalar por ese medio para facilitar las actualizaciones; si no, el script de instalación es la vía más rápida. Existe también una demostración interactiva en el navegador (sin instalación) en https://pranshuparmar.github.io/witr/ que simula una máquina Linux con un tutorial guiado y un modo libre.
Flujos de trabajo habituales
- Rastrear por nombre:
witr nodemuestra el proceso, el usuario, el comando, cuándo empezó y la cadenasystemd → pm2 → node, junto con el directorio de trabajo, el repositorio git y los sockets. - Resolver un puerto:
witr --port 5000 --shortdevuelve la cadena en una sola línea, por ejemplosystemd (pid 1) → PM2 ... → python (pid ...). - Inspeccionar un PID en forma de árbol:
witr --pid 143895 --treeimprime el árbol de ascendencia e incluye hasta 10 procesos hijos, resaltando el objetivo. - Consultar un contenedor:
witr --container redisbusca en todos los runtimes detectados (Docker, Podman, nerdctl, K8s/crictl, Incus, LXC, LXD, jails de FreeBSD) por nombre, imagen, comando o etiqueta de compose; con--verboseañade montajes, redes y metadatos de compose. - Entradas mixtas:
witr nginx --port 5432 --pid 1234muestra los resultados de forma secuencial con separadores etiquetados. - Uso en script:
witr nginx --short; echo $?y actuar según el código de salida (0 limpio, 2 no encontrado, 3 permisos, etc.).

Configuración esencial
witr no usa un archivo de configuración persistente; la «configuración» son sus banderas, de las que un usuario nuevo tocará primero:
-i, --interactive: abre la TUI. También se activa sola si no se dan argumentos ni banderas de objetivo.-x, --exact: coincidencia exacta de nombre (por defecto hace coincidencia parcial/fuzzy).--json: salida máquina-legible para integrar en pipelines.--no-color: desactiva el color (útil al redirigir a archivos o logs).--verbose: muestra información extendida (montajes, redes, metadatos de compose, etc.).
Todas las banderas de objetivo (--pid, --port, --file, --container) son repetibles y combinables entre sí y con argumentos posicionales. Las finalizaciones de shell se generan con witr completion bash|zsh|fish|powershell.
Trampas frecuentes y soluciones
- Falta de permisos: witr inspecciona directorios del sistema que pueden requerir privilegios elevados. Solución documentada: ejecutar con
sudo witr [...](Linux/FreeBSD) o en PowerShell como Administrador (Windows). - Proceso desvinculado con
nohup: en el hilo de Hacker News, el usuariotatrefseñaló que un procesonohup/desvinculado aparece conPPID 1(systemd), lo cual era incorrecto; el autor lo reconoció como bug pendiente de corrección. Es una limitación conocida del trazado de ascendencia en ciertos casos. - macOS y SIP: debido a la System Integrity Protection, algunos detalles de procesos del sistema no son accesibles incluso con
sudo. - Ambigüedad de nombres: al consultar un nombre con coincidencia parcial, witr lista las coincidencias (p. ej.
nginxyngrok) y pide re-ejecutar con--pid. Use--exactpara evitar la coincidencia parcial. - Instalación vía
curl: varios usuarios en Hacker News (vzaliva) desconfiaban de instalar un binario concurl. El autor respondió que lo mantuvo simple por ser el primer lanzamiento y luego añadió paquetes oficiales; hoy existe paquete.deb,.rpm,.apky gestores de paquetes como alternativa. - Reutilización de PID en la cadena de ascendencia: una reseña de Product Hunt de Omri Ben-Shoham (31 de julio de 2026) señala que el recorrido de ascendencia todavía no valida la hora de inicio del PID padre, dejando un caso límite teórico de reutilización de PID; según la reseña, ya existe una incidencia abierta al respecto.

Integraciones y migración
witr se integra por su salida --json y sus códigos de salida en scripts, CI y herramientas de monitoreo. El README muestra un ejemplo con case $? para automatizar. El modo TUI replica la forma de los paneles para uso interactivo. Para migrar: witr no sustituye a ps/lsof/systemctl sino que se suma a ellos; se puede usar como capa de «por qué» sobre la información de estado que ya proporciona el sistema. La demo web (docs/) sirve como equivalencia de un tutorial sin instalar el binario. Los puertos con activación por socket de systemd o de un runtime de contenedores se resuelven mediante un respaldo vía Docker CLI.
Métricas actuales
Medición: 4 de septiembre de 2026, API de GitHub.
| Métrica | Valor |
|---|---|
| Estrellas | 22 073 |
| Bifurcaciones | 772 |
| Suscriptores | 46 |
| Commits | 588 |
| Incidencias abiertas indicadas por la API | 16 |
| Lenguaje principal | Go (676 496 bytes); secundarios: Shell, PowerShell, Nix, Makefile |
| Licencia | Apache-2.0 |
| Creación | 20 de diciembre de 2025 |
| Última actualización de metadatos | 4 de septiembre de 2026 |
| Último empuje | 15 de agosto de 2026 |
| Última publicación | v0.3.3, 24 de junio de 2026 |
Los principales contribuidores que devolvió la API, por número de contribuciones, fueron pranshuparmar (398), claude (25), chojs23 (18), gaod (15), amerine (12), github-actions[bot] (11), ggmolly (10) y RikSmits06 (8). El conteo de 588 se obtuvo de la cabecera de paginación (rel="last" → página 588) del endpoint de commits. La API de GitHub expone open_issues_count, que puede incluir solicitudes de cambios abiertas; por eso no debe leerse como un conteo exclusivo de incidencias. watchers_count replica las estrellas, por lo que se informa por separado subscribers_count como suscriptores reales.
Recepción de la comunidad
La evidencia recuperada procede sobre todo del hilo de lanzamiento de Hacker News (46392910), con 526 puntos y 105 comentarios, donde el propio autor respondió con frecuencia. El entusiasmo es amplio y hay críticas concretas:
Reconocimiento y entusiasmo:
dcminter: «This is very clever. I’ve often needed to figure out what some running process was actually for (…) but it never occurred to me that one could have a tool to answer that question. Well done.» Añadió una edición aclarando que creyó erróneamente que también explicaba qué hacía el proceso.properbrew: «This is extremely useful, will be added to the toolbox. Thanks for sharing.»dontdieych: «Nice and installed then starred.»scrame: elogió el ejemplo del puerto 3306 y dijo que «having a purpose to explain a purpose seems like a good pitch».Sarisycanxerian: «This looks very handy to have around!» y «Great idea!».techsystems: «I’m really loving this! ‘Responsibility chain’ will become a trendy phrase.»
Crítica y objeciones concretas:
tatrefseñaló un defecto real: el trazado «only checks for the parent processes» y que «a disowned/nohup process will show up as PPID 1 (systemd), which is not correct». El autor respondió: «Yes, this is a bug. Planning to fix it soon.»darrenfcuestionó la novedad: «Is that notwhatis?» El autor respondió quewhatisayuda en ese caso pero que mantendría witr enfocado en explicar PIDs.wyldfireargumentó: «ps uaxfgives me pretty similar output.» El autor enumeró las diferencias (cuándo empezó, qué puertos usa, qué usuario lo arrancó, desde qué directorio, bandera--env,--json).vzalivaobjetó la instalación concurlpor temas de seguridad («doesn’t sit right with me») y pidió paquetes.deb/snap; el autor explicó que era el primer lanzamiento y luego confirmó que ya había brew, AUR, deb/rpm/apk y Nix.- Un hilo lateral se centró en la animación GIF del README:
mh-,Neywiny,godelskiythaumasiotespidieron que la imagen se quedara quieta o fuera una captura estática; el autor respondió que «already switched it to a static image». filterfishpropuso buscar el binario en el gestor de paquetes (APT/dpkg) como fuente adicional de información;ajbrespondió quedpkg -Sya lo permite.klooneyapuntó quesystemctl status $pidya da bastante, yjamescunsugirió GoReleaser, que el autor terminó usando.saidnooneeverobjetó que la salida muestra «quién lo hizo», no realmente «por qué se inició» (archivo de servicio, autorun, execve), ya que en gran parte se limita a reportar el PPID como causa, y recomendó que la salida greppable/JSON fuera el formato por defecto para automatización.tototrainscompartió una anécdota de uso real: Claude Code, apoyándose en una herramienta de este tipo, encontró un minero de criptomonedas que llevaba unos cinco meses sin detectarse en un equipo Windows 10 actualizado, en cuestión de minutos — una experiencia individual, no una métrica del proyecto.
Más allá de Hacker News. El proyecto también aparece en Product Hunt (página publicada el 30 de julio de 2026), con una valoración de 5.0; una reseña de Omri Ben-Shoham allí elogia que el recorrido de ascendencia atraviesa los shims de contenedor hasta llegar al proceso real del host, en vez de detenerse en «Docker lo inició». El repositorio mantiene además GitHub Discussions, con hilos como «Better README image needed!» (10 comentarios) y una discusión del propio autor sobre la TUI (con referencia a la PR 59). En YouTube, el video «Stop Guessing. Debug Faster with WITR.» del canal Hack the Clown (27.700 suscriptores) acumula 8.170 vistas.
No se encontró un anuncio con una discusión más amplia fuera de Hacker News en las fuentes consultadas, por lo que el balance se toma de ese hilo y no se infiere un consenso mayor del que las fuentes muestran.
Comparación con proyectos similares

| Proyecto | Coincidencia verificable | Diferencia verificable |
|---|---|---|
ps, top, lsof, ss, systemctl, docker ps | Herramientas nativas que exponen estado de procesos/puertos/servicios. | El README declara que estas muestran qué corre pero no por qué; witr agrega la cadena causal y el contexto (git, contenedor, fuente). |
pstree | Muestra la jerarquía padre/hijo de procesos. | En Hacker News, q2dg y mathfailure confirmaron que pstree «doesn’t answer the why» —no explica la causa. |
whatis | Explica a qué corresponde un comando. | El autor lo reconoce como útil para ese caso concreto, pero witr se centra en explicar PIDs, no en describir utilidades. |
rewrite-everything-in-rust/witr-rs | Reimplementa el mismo objetivo (trazar ascendencia) en Rust. | Es una reescritura de la comunidad con paridad declarada, no el proyecto original. |
supervoidcoder/win-witr | Reimplementa witr para Windows en C++. | WIP y sin el código original; el proyecto original ya incluye Windows con APIs Win32 nativas. |
dmitrymx/witr-gui | Añade una interfaz gráfica (Electron/React) sobre witr para Windows. | Es un cliente GUI de terceros, no parte del repositorio oficial. |
La comparación más útil: witr destaca cuando se necesita la causa (no solo el estado) de un proceso o puerto, de forma portable y con salida programable. Las herramientas nativas siguen siendo el fondo de la información de estado; los puertos comunitarios (Rust, Python, C++, GUI) son variantes no oficiales que no reemplazan al binario original multiplataforma.
Cómo contribuir
El repositorio documenta un proceso concreto en CONTRIBUTING.md:
- Compilar desde fuente: requiere Go 1.25+;
git clone,go build -o witr ./cmd/witr, y./witr --helpcomo prueba rápida. El bloque-ldflagsinyecta los metadatos de commit/fecha parawitr --version. - Flujo de fork: bifurcar, clonar el fork (
git clone https://github.com/YOUR_USERNAME/witr.git), crear ramafeature/your-feature-nameygo mod download. - Desarrollo: seguir el estilo existente,
gofmt, escribir pruebas de unidad y asegurargo test ./.... - Solicitud de cambios (PR): aplanar (squash) los commits a uno lógico, rebasear sobre la rama
staging(nomain), abrir la PR contrastaging, completar la plantilla de PR, esperar la revisión del mantenedor y fusionar con Squash and Merge (política estricta para mantener limpia la historia demain). - Validación local de la PR:
test -z $(gofmt -l .),go vet ./...,go test -v ./...y verificación de compilación cruzada (GOOS/GOARCHpara linux/darwin, amd64/arm64), o bien conact(requiere Docker):act -j validate,act -j build.
La CI (.github/workflows/pr-check.yml) ejecuta lint con golangci-lint en los cuatro sistemas (linux, darwin, windows, freebsd), govulncheck para vulnerabilidades, verificación de que vendor está sincronizado, pruebas de unidad con -race (en linux y macOS) y una medida de cobertura informativa. Existe un workflow pr-title.yml que es bloqueante y exige títulos de PR semánticos (amannn/action-semantic-pull-request). El formato de mensaje de commit sigue Conventional Commits (<type>(<scope>): <description>). Las incidencias usan una plantilla estructurada (bug_report.yml) que pide OS, versión y arquitectura. La licencia de contribución es Apache-2.0 y hay un Código de Conducta.
Casos de uso y a quién puede ayudar este repositorio
- Administradores de sistemas y operadores que entran por SSH a una máquina desconocida pueden usar
witr --port <puerto>owitr <nombre>para responder en segundos qué cadena de systemd/supervisor/cron/contenedor originó un servicio, en lugar de correlacionarps,lsofysystemctl. La salida «bajo estrés» y los códigos de salida la hacen apta para incidentes. - Responsables de una incidencia de puertos en conflicto o de recursos (p. ej.
EADDRINUSE) pueden rastrear qué proceso sostiene un puerto, quién lo arrancó y desde qué directorio/repo git, y decidir si detenerlo. La TUI permite enviar señales (Kill/Terminate/Pause) directamente. - Equipo de ingeniería/Seguridad puede apoyarse en la sección de Warnings (proceso como root, capacidades peligrosas, escucha pública, binario eliminado, indicadores de
LD_PRELOAD/DYLD_*) para hacer un barrido rápido de superficie de ataque durante una revisión, y usar--jsonpara integrarlo en su pipeline. - Desarrolladores que depuran por qué un proceso «no muere» o arranca solo pueden ver el supervisor (pm2, cron, launchd, timer de systemd) que lo mantiene vivo y reinicia, y el contexto del contenedor (Docker/Podman/K8s/Incus/LXC).
- Integradores y autores de automatización pueden depender del modo
--jsony de los códigos de salida 0–5 para encadenar witr en scripts, CI o herramientas de monitoreo. - Quienes evalúan la herramienta sin instalarla pueden usar el playground en el navegador (
https://pranshuparmar.github.io/witr/), una caja Linux simulada con tutorial guiado, para familiarizarse con las salidas antes de adoptarla.

Recursos
- Repositorio: https://github.com/pranshuparmar/witr
- Documentación / sitio oficial: https://pranshuparmar.github.io/witr/ (playground en navegador, sin instalación)
- Man página y referencia CLI: https://github.com/pranshuparmar/witr/tree/main/docs/cli
- Instalación: README (install.sh / install.ps1 / gestores de paquetes)
- Historia del origen (Medium): https://medium.com/@pranshu.parmar/witr-why-is-this-running-a9a97cbedd18
- Releases: https://github.com/pranshuparmar/witr/releases
- Paquetes de la comunidad: https://repology.org/project/witr/versions
- Registros de paquetes:
- npm
@pranshuparmar/witr: https://www.npmjs.com/package/@pranshuparmar/witr (v0.3.3; ~78 descargas en el último mes, ~17 la última semana según la API de npm en esta consulta) - Homebrew: https://formulae.brew.sh/formula/witr (0.3.3, con bottle)
- conda-forge: https://anaconda.org/conda-forge/witr
- AUR: https://aur.archlinux.org/packages/witr-bin
- winget: https://winstall.app/apps/PranshuParmar.witr
- npm
- Product Hunt: https://www.producthunt.com/products/witr
- Hilo de Hacker News: https://news.ycombinator.com/item?id=46392910 (526 puntos, 105 comentarios)
- Repositorios relacionados de la comunidad:
rewrite-everything-in-rust/witr-rs,bobozi-cmd/witr-py,supervoidcoder/win-witr,dmitrymx/witr-gui
Nota: este artículo combina el README, la configuración de publicación y los workflows del repositorio, la API de GitHub, los registros de paquetes (npm, Homebrew, AUR, conda-forge) y el hilo de lanzamiento de Hacker News consultados el 4 de septiembre de 2026. Las cifras de estrellas, descargas y versiones cambian con el tiempo. Los datos del artículo de Medium y el número de upvotes de Product Hunt no pudieron leerse en detalle en esta investigación por restricciones de acceso (HTTP 403), por lo que se cita su existencia pero no sus métricas completas.
Comentarios