Skip to main content

Visualizer for processes and their interconnections

Project description

sysgraph

An interactive force-directed network graph visualizer for the browser — with two modes:

  • Import any graph — load any JSON graph (nodes + edges) to explore and visualize it interactively, no Linux or special privileges required
  • Live process graph — discover running OS processes and their inter-process communication channels (pipes, Unix domain sockets, TCP/UDP connections) in real time (Linux only)

Python License

Features

  • Import any graph — load a JSON file with nodes and edges to visualize any network, social graph, dependency tree, or dataset
  • Export/Import — save and reload graph snapshots as JSON; use the sample at data/simplest-graph.json as a format reference
  • Interactive graph — force-directed graph rendered in the browser with zoom, pan, drag, and search
  • Fuzzy search — find nodes by any property
  • Adjacency filtering — right-click a node to show only its neighbors
  • Configurable — tune d3 force parameters, colors, and type filters via the settings panel
  • Process discovery (Linux only) — enumerates running OS processes and their parent-child relationships
  • IPC visualization (Linux only) — discovers pipes, Unix domain sockets, and TCP/UDP connections between processes
  • Real-time (Linux only) — fetch the latest process graph on demand via the web UI

Demo

Demo

Requirements

  • Python ≥ 3.12
  • Linux is required only for live process-graph discovery (relies on /proc and ss); importing and visualizing your own graphs works on any platform
  • Root/sudo recommended for full process visibility (Linux only)

Installation

pip install sysgraph

Usage

# Start the web server (default: http://localhost:8000)
sysgraph

# Specify a custom port
sysgraph --port 9000

# Or run as a module
python -m sysgraph

Open your browser to the displayed URL.

Visualize your own graph

Use the Import button in the UI to load any JSON file in the following format:

{
  "nodes": [
    {"id": "1", "type": "person", "properties": {"name": "Alice"}},
    {"id": "2", "type": "person", "properties": {"name": "Bob"}}
  ],
  "edges": [
    {"source_id": "1", "target_id": "2", "type": "knows", "properties": {}}
  ]
}

See data/simplest-graph.json for a minimal example.

Live process graph (Linux only)

For full visibility into all processes and their connections, run with elevated privileges:

sudo sysgraph

Docker

docker run --rm -it --pid=host --net=host gubenkoved/sysgraph

The --pid=host and --net=host flags allow the container to see host processes and network connections.

How It Works

  1. The browser frontend renders interactive force-directed graphs using force-graph with d3 physics simulation.
  2. Graphs can be imported from JSON directly in the browser, or fetched live from the backend.
  3. The FastAPI backend uses psutil and Linux-specific APIs (/proc, ss) to discover processes, pipes, Unix domain sockets, and network connections, building a graph served via GET /api/graph.

Development

Prerequisites

  • Python ≥ 3.12, Linux, Docker
  • Node.js 22 runs inside Docker; no host installation required

Backend

python3 -m venv .venv && source .venv/bin/activate
pip install -e . && pip install -r requirements-dev.in
python src/sysgraph/app.py   # → http://localhost:8000

Frontend (TypeScript + Vite)

./scripts/build-ui.sh         # production build → src/sysgraph/dist/
./scripts/dev-ui.sh           # Vite dev server with HMR on :5173
./scripts/typecheck-ui.sh     # TypeScript type checking
./scripts/lint-ui.sh          # Biome linter (pass --fix to auto-fix)

Tests

pytest src/sysgraph/tests/    # requires Linux /proc

Python linting

./scripts/lint.sh             # ruff check + ruff format + isort

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sysgraph-0.0.17.tar.gz (234.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sysgraph-0.0.17-py3-none-any.whl (234.1 kB view details)

Uploaded Python 3

File details

Details for the file sysgraph-0.0.17.tar.gz.

File metadata

  • Download URL: sysgraph-0.0.17.tar.gz
  • Upload date:
  • Size: 234.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for sysgraph-0.0.17.tar.gz
Algorithm Hash digest
SHA256 f08a629878c9bb68cd14bf75ab276ff10b79fad921492b45d78a0d2e8d439582
MD5 2ea2d1719111107a5eb3a9b0da3a3762
BLAKE2b-256 529d6097fe7e1f2346aba088f1868cda8d0309284e9235772675f5bbec713b73

See more details on using hashes here.

File details

Details for the file sysgraph-0.0.17-py3-none-any.whl.

File metadata

  • Download URL: sysgraph-0.0.17-py3-none-any.whl
  • Upload date:
  • Size: 234.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for sysgraph-0.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 8bc0ad2083bfde076b5bad47fa8484b97ee3f27c99216098f020c6e734637d5f
MD5 f8face929f3d29b83666a0f77b18e81d
BLAKE2b-256 68e688c6500b8f6438be2517b4495259380cd3cd07fea70d460ce481c598cf61

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page