MCPcopy
hub / github.com/pranshuparmar/witr

github.com/pranshuparmar/witr @v0.3.3 sqlite

repository ↗ · DeepWiki ↗ · release v0.3.3 ↗
869 symbols 2,636 edges 227 files 286 documented · 33%
README

witr

Why is this running?

with Interactive TUI Mode

Go Version Go Report Card Release Platforms

Latest Release Package Managers

📖 Read the story behind witr

witr_banner


PurposeInstallationTUIFlagsCore ConceptExamples

Output BehaviorPlatformsSuccess CriteriaSponsors


1. Purpose

witr exists to answer a single question:

Why is this running?

When something is running on a system, whether it is a process, a service, or something bound to a port, there is always a cause. That cause is often indirect, non-obvious, or spread across multiple layers such as supervisors, containers, services, or shells.

Existing tools (ps, top, lsof, ss, systemctl, docker ps) expose state and metadata. They show what is running, but leave the user to infer why by manually correlating outputs across tools.

witr makes that causality explicit.

It explains where a running thing came from, how it was started, and what chain of systems is responsible for it existing right now, in a single, human-readable output or an interactive TUI dashboard.


2. Installation

witr is distributed as a single static binary for Linux, macOS, FreeBSD, and Windows.

witr is also independently packaged and maintained across multiple operating systems and ecosystems. An up-to-date overview of packaging status is available on Repology. Please note that community packages may lag GitHub releases due to independent review and validation.

[!TIP] If you use a package manager (Homebrew, Conda, Winget, etc.), we recommend installing via that for easier updates. Otherwise, the install script is the quickest way to get started.


2.1 Quick Install

Unix (Linux, macOS & FreeBSD)

curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | bash

Script Details

The script will: - Detect your operating system (linux, darwin or freebsd) - Detect your CPU architecture (amd64 or arm64) - Download the latest released binary and man page - Install it to /usr/local/bin/witr - Install the man page to /usr/local/share/man/man1/witr.1 - Pass INSTALL_PREFIX to override default install path

Windows (PowerShell)

irm https://raw.githubusercontent.com/pranshuparmar/witr/main/install.ps1 | iex

Script Details

The script will: - Download the latest release (zip) and verify checksum. - Extract witr.exe to %LocalAppData%\witr\bin. - Add the bin directory to your User PATH.


2.2 Package Managers

APT (Debian, Ubuntu & Derivatives) Debian

You can install witr from the official Debian and Ubuntu repositories (Ubuntu 26.04+, Debian sid and later), as well as derivative distributions like Kali Linux, Devuan, and Raspbian:

sudo apt install witr

Note: The apt-shipped version may lag the latest GitHub release. For the newest features, use the install script or another installation method.

Homebrew (macOS & Linux) Homebrew

You can install witr using Homebrew on macOS or Linux:

brew install witr

MacPorts (macOS) MacPorts

You can install witr using MacPorts on macOS:

sudo port install witr

Conda (macOS, Linux & Windows) Conda

You can install witr using conda, mamba, or pixi on macOS, Linux, and Windows:

conda install -c conda-forge witr
# alternatively using mamba
mamba install -c conda-forge witr
# alternatively using pixi
pixi global install witr

Arch Linux (AUR) AUR

On Arch Linux and derivatives, install from the AUR package:

yay -S witr-bin
# alternatively using paru
paru -S witr-bin
# or use your preferred AUR helper

Winget (Windows) Winget

You can install witr via winget:

winget install -e --id PranshuParmar.witr

NPM (Cross-platform) NPM

You can install witr using npm:

npm install -g @pranshuparmar/witr

FreeBSD Ports FreeBSD Port

You can install witr on FreeBSD from the FreshPorts port:

pkg install witr
# or
pkg install sysutils/witr

Or build from Ports:

cd /usr/ports/sysutils/witr/
make install clean

Chocolatey (Windows) Chocolatey

You can install witr using Chocolatey:

choco install witr

Scoop (Windows) Scoop

You can install witr using Scoop:

scoop install main/witr

AOSC OS AOSC OS

You can install witr from the AOSC OS repository:

oma install witr

GNU Guix GNU Guix

You can install witr from the GNU Guix repository:

guix install witr

Uniget (Linux) Uniget

You can install witr using uniget:

uniget install witr

Aqua (macOS, Linux & Windows) Aqua

You can install witr using aqua:

# Add package
aqua g -i pranshuparmar/witr

# Install package
aqua i pranshuparmar/witr

Brioche (Linux) Brioche

You can install witr using brioche:

brioche install -r witr

Mise (macOS, Linux & Windows) Mise

You can install witr using mise:

mise use github:pranshuparmar/witr

Prebuilt Packages (deb, rpm, apk)

witr provides native packages for major Linux distributions. You can download the latest .deb, .rpm, or .apk package from the GitHub releases page.

  • Generic download command using curl: bash # Replace <package name with the actual package that you need> curl -LO https://github.com/pranshuparmar/witr/releases/latest/download/<package-name>

  • Debian/Ubuntu (.deb): bash sudo dpkg -i ./witr-*.deb # Or, using apt for dependency resolution: sudo apt install ./witr-*.deb

  • Fedora/RHEL/CentOS (.rpm): bash sudo rpm -i ./witr-*.rpm
  • Alpine Linux (.apk): bash sudo apk add --allow-untrusted ./witr-*.apk

2.3 Source & Manual Installation

Go (cross-platform)

You can install the latest version directly from source:

go install github.com/pranshuparmar/witr/cmd/witr@latest

This will place the witr binary in your $GOPATH/bin or $HOME/go/bin directory. Make sure this directory is in your PATH.

Manual Installation

If you prefer manual installation, follow these simple steps for your platform:

Unix (Linux, macOS, FreeBSD)

# 1. Determine OS and Architecture
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)
[ "$ARCH" = "x86_64" ] && ARCH="amd64"
[ "$ARCH" = "aarch64" ] && ARCH="arm64"

# 2. Download the binary
curl -fsSL "https://github.com/pranshuparmar/witr/releases/latest/download/witr-${OS}-${ARCH}" -o witr

# 3. Verify checksum (Optional)
curl -fsSL "https://github.com/pranshuparmar/witr/releases/latest/download/SHA256SUMS" -o SHA256SUMS
grep "witr-${OS}-${ARCH}" SHA256SUMS | (sha256sum -c - 2>/dev/null || shasum -a 256 -c - 2>/dev/null)
rm SHA256SUMS

# 4. Rename and install
chmod +x witr
sudo mkdir -p /usr/local/bin
sudo mv witr /usr/local/bin/witr

# 5. Install man page (Optional)
sudo mkdir -p /usr/local/share/man/man1
sudo curl -fsSL https://github.com/pranshuparmar/witr/releases/latest/download/witr.1 -o /usr/local/share/man/man1/witr.1

Windows (PowerShell)

```powershell

1. Determine Architecture

if ($env:PROCESSOR_ARCHITECTURE -eq "AMD64") { $ZipName = "witr-windows-amd64.zip" } elseif ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { $ZipName = "witr-windows-arm64.zip" } else { Write-Error "Unsupported architecture: $($env:PROCESSOR_ARCHITECTURE)" exit 1 }

2. Download the zip

Invoke-WebRequest -Uri "https://github.com/pranshuparmar/witr/releases/latest/download/$ZipName" -OutFile "witr.zip"

3. Extract the binary

Expand-Archive -Path "witr.zip" -DestinationPath "." -Force

4. Verify checksum (Optional)

Extension points exported contracts — how you extend this code

ContainerRuntime (Interface)
ContainerRuntime is a backend (docker, podman, …) that can list containers and resolve a container's main host PID. [8 …
internal/proc/container_runtime.go

Core symbols most depended-on inside this repo

Printf
called by 205
internal/output/printer.go
Error
called by 61
internal/app/app.go
SanitizeTerminal
called by 52
internal/output/sanitize.go
InitialModel
called by 43
internal/tui/model.go
SanitizeTerminalLine
called by 31
internal/output/sanitize.go
View
called by 27
internal/tui/view.go
Update
called by 23
internal/tui/update.go
Name
called by 22
internal/proc/container_runtime.go

Shape

Function 682
Method 118
Struct 57
TypeAlias 10
Interface 2

Languages

Go100%

Modules by API surface

internal/tui/data.go37 symbols
internal/tui/update.go31 symbols
internal/app/app.go27 symbols
internal/launchd/plist.go20 symbols
internal/source/warnings_test.go19 symbols
internal/tui/update_test.go17 symbols
internal/proc/peb_windows.go16 symbols
internal/source/systemd_linux.go14 symbols
internal/proc/container_runtime.go13 symbols
internal/output/docker.go13 symbols
internal/source/detect_test.go12 symbols
internal/tui/data_test.go11 symbols

Dependencies from manifests, versioned

github.com/atotto/clipboardv0.1.4 · 1×
github.com/aymanbagabas/go-osc52/v2v2.0.1 · 1×
github.com/charmbracelet/bubblesv1.0.0 · 1×
github.com/charmbracelet/colorprofilev0.4.1 · 1×
github.com/charmbracelet/lipglossv1.1.0 · 1×
github.com/charmbracelet/x/ansiv0.11.6 · 1×
github.com/charmbracelet/x/cellbufv0.0.15 · 1×
github.com/charmbracelet/x/termv0.2.2 · 1×
github.com/clipperhouse/displaywidthv0.9.0 · 1×
github.com/clipperhouse/stringishv0.1.1 · 1×
github.com/clipperhouse/uax29/v2v2.5.0 · 1×

For agents

$ claude mcp add witr \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact