Backed by mandō

Every process.
One snapshot.
Total clarity.

Pulsar is the real-time process observability platform that gives you a complete, instant view of everything running on your infrastructure. Custom viewports. Thread-level drill-down. Process genealogy. Built for engineering teams who refuse to fly blind.

See the demo β†’
2.1M+ Processes observed daily
<1ms Snapshot latency
99.97% Uptime SLA
pulsar β€” observability
$ pulsar aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 169436 13036 ?        Ss   09:14   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    09:14   0:00 [kthreadd]
www-data  1842  2.3  1.4 823412 57448 ?        Sl   09:15   1:47 nginx: worker
postgres  2104  1.1  3.2 412956 131072 ?       Ss   09:15   0:52 postgres
deploy    3891  0.4  0.8 224816 32768 ?        Sl   09:16   0:18 node server.js
redis     4102  0.2  0.5 108244 20480 ?        Ssl  09:16   0:09 redis-server
deploy    5743  0.0  0.1  12344  4096 pts/0    R+   10:31   0:00 pulsar aux

$ pulsar -eo pid,user,%cpu,%mem,stat,comm --sort=-%cpu
  PID USER     %CPU %MEM STAT COMMAND
 1842 www-data  2.3  1.4 Sl   nginx
 2104 postgres  1.1  3.2 Ss   postgres
 3891 deploy    0.4  0.8 Sl   node
 4102 redis     0.2  0.5 Ssl  redis-server
 5743 deploy    0.0  0.1 R+   pulsar

Works seamlessly with your existing stack

Kubernetes
Docker
Terraform
Prometheus
Grafana
PagerDuty
Slack
Datadog

Every process. Every detail.
One platform.

Pulsar ships with eight high-leverage features that give you complete observability over your process space. Each one was designed from first principles to solve a real infrastructure pain point.

πŸ‘οΈ

Universal Scan

See every single process on the system β€” across all users, all terminals, all states. No blind spots. No permission blockers. Full-spectrum visibility with one command.

pulsar aux / pulsar -e
🌳

Process Genealogy Engine

Visualize parent-child relationships as an ASCII art hierarchy. Understand exactly how processes fork, spawn, and propagate through your system lineage.

pulsar --forest / pulsar -ejH
πŸŽ›οΈ

Custom Viewports

Build exactly the view your team needs. Select, rename, and resize any combination of output columns. Your data, your schema, zero compromise.

pulsar -o pid,user,%cpu,comm
🧡

Thread-Level Observability

Don't stop at the process boundary. Drill into individual threads with LWP identifiers and thread counts. See exactly what's running inside every worker.

pulsar -eLf / pulsar -T
🎯

Precision Targeting

Zero in on exactly the process you need β€” by PID, by user, by command name. No scrolling through noise. Surgical selection at O(1) speed.

pulsar -p 1842 / pulsar -C nginx
πŸ“Š

Dynamic Sorting

Surface what matters by sorting on any column. CPU hogs float to the top. Memory leaks become instantly visible. Your north star metric, always front and center.

pulsar --sort=-%cpu
πŸ“‹

Full Spectrum Format

Switch between user-oriented, long, and extra-full formats. Each format is a different lens on the same underlying data β€” from high-level overview to deep system internals.

pulsar -f / pulsar -l / pulsar -F
♾️

Infinite Canvas

Never truncate critical command paths again. Wide output mode expands your view to capture every argument, every flag, every detail of long-running processes.

pulsar -ww

From zero to full observability
in four steps

01

Connect

Point Pulsar at any system. It reads the process table in real-time, giving you an instant snapshot of every active entity. No agents, no sidecars, no overhead.

02

Configure your Viewport

Choose exactly the columns you need β€” PID, USER, %CPU, %MEM, STAT, COMMAND, and dozens more. Rename headers, set widths, define your perfect schema.

03

Filter & Sort

Narrow your focus to specific users, PIDs, or command names. Sort by resource consumption to surface anomalies instantly.

04

Drill Down

Explore process genealogy with tree views. Inspect individual threads. Go from system-wide overview to thread-level detail in a single workflow.

0
Output columns available
0%
Of production servers covered
0
Processes snapshotted
<1ms
Snapshot acquisition time

The competition can't keep up

Feature Pulsar Competitor A Competitor B Competitor C
All-process snapshot βœ… Unlimited ⚠️ Own user only ⚠️ 500 limit ❌
Custom output columns βœ… 47+ columns ⚠️ 8 columns βœ… 20 columns ❌ Fixed
Process tree view βœ… --forest ❌ ⚠️ 2 levels ❌
Thread-level drill-down βœ… LWP + SPID ❌ ❌ ⚠️ Count only
Dynamic sorting βœ… Any column ⚠️ PID only βœ… CPU/MEM ❌
Wide output mode βœ… Unlimited ❌ 80 cols ❌ 120 cols ❌ 80 cols
Process state codes βœ… Full STAT ⚠️ Basic ⚠️ Basic ❌
Pricing Free tier $49/mo min $29/mo min Enterprise only

Your new observability workflow

pulsar aux
$ pulsar aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 169436 13036 ?        Ss   09:14   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    09:14   0:00 [kthreadd]
root        11  0.0  0.0      0     0 ?        S    09:14   0:00 [migration/0]
root       287  0.0  0.0  28340  2892 ?        Ss   09:14   0:00 /usr/sbin/cron
syslog     312  0.0  0.0 263036  4288 ?        Ssl  09:14   0:01 /usr/sbin/rsyslogd
root       398  0.0  0.1  72304  6124 ?        Ss   09:14   0:00 /usr/sbin/sshd
www-data  1842  2.3  1.4 823412 57448 ?        Sl   09:15   1:47 nginx: worker process
www-data  1843  1.8  1.3 819204 53120 ?        Sl   09:15   1:22 nginx: worker process
postgres  2104  1.1  3.2 412956 131072 ?       Ss   09:15   0:52 /usr/lib/postgresql/15/bin/postgres
postgres  2118  0.3  0.6 413212 24576 ?        Ss   09:15   0:11 postgres: checkpointer
deploy    3891  0.4  0.8 224816 32768 ?        Sl   09:16   0:18 node /app/server.js
redis     4102  0.2  0.5 108244 20480 ?        Ssl  09:16   0:09 /usr/bin/redis-server *:6379
deploy    5743  0.0  0.1  12344  4096 pts/0    R+   10:31   0:00 pulsar aux
pulsar --forest
$ pulsar -ef --forest
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:14 ?        00:00:02 /sbin/init
root       287     1  0 09:14 ?        00:00:00  \_ /usr/sbin/cron
syslog     312     1  0 09:14 ?        00:00:01  \_ /usr/sbin/rsyslogd
root       398     1  0 09:14 ?        00:00:00  \_ /usr/sbin/sshd
root      5690   398  0 10:28 ?        00:00:00  |   \_ sshd: deploy [priv]
deploy    5710  5690  0 10:28 ?        00:00:00  |       \_ sshd: deploy@pts/0
deploy    5711  5710  0 10:28 pts/0    00:00:00  |           \_ -bash
deploy    5743  5711  0 10:31 pts/0    00:00:00  |               \_ pulsar -ef --forest
root      1840     1  0 09:15 ?        00:00:00  \_ nginx: master process
www-data  1842  1840  2 09:15 ?        00:01:47  |   \_ nginx: worker process
www-data  1843  1840  1 09:15 ?        00:01:22  |   \_ nginx: worker process
postgres  2104     1  1 09:15 ?        00:00:52  \_ /usr/lib/postgresql/15/bin/postgres
postgres  2118  2104  0 09:15 ?        00:00:11      \_ postgres: checkpointer
postgres  2119  2104  0 09:15 ?        00:00:08      \_ postgres: background writer
pulsar -o (custom viewport)
$ pulsar -eo pid,user,%cpu,%mem,stat,rss,comm --sort=-%mem
  PID USER     %CPU %MEM STAT   RSS COMMAND
 2104 postgres  1.1  3.2 Ss   131072 postgres
 1842 www-data  2.3  1.4 Sl    57448 nginx
 1843 www-data  1.8  1.3 Sl    53120 nginx
 3891 deploy    0.4  0.8 Sl    32768 node
 2118 postgres  0.3  0.6 Ss    24576 postgres
 4102 redis     0.2  0.5 Ssl   20480 redis-server
 5743 deploy    0.0  0.1 R+     4096 pulsar

$ pulsar -C nginx -o pid,user,%cpu,stat,comm
  PID USER     %CPU STAT COMMAND
 1840 root      0.0 Ss   nginx
 1842 www-data  2.3 Sl   nginx
 1843 www-data  1.8 Sl   nginx
pulsar -eLf (thread view)
$ pulsar -eLf
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
root         1     0     1  0    1 09:14 ?        00:00:02 /sbin/init
postgres  2104     1  2104  0    6 09:15 ?        00:00:12 /usr/lib/postgresql/15/bin/postgres
postgres  2104     1  2105  0    6 09:15 ?        00:00:04 /usr/lib/postgresql/15/bin/postgres
postgres  2104     1  2106  0    6 09:15 ?        00:00:08 /usr/lib/postgresql/15/bin/postgres
postgres  2104     1  2107  0    6 09:15 ?        00:00:03 /usr/lib/postgresql/15/bin/postgres
postgres  2104     1  2108  0    6 09:15 ?        00:00:15 /usr/lib/postgresql/15/bin/postgres
postgres  2104     1  2109  0    6 09:15 ?        00:00:10 /usr/lib/postgresql/15/bin/postgres
deploy    3891     1  3891  0    4 09:16 ?        00:00:06 node /app/server.js
deploy    3891     1  3892  0    4 09:16 ?        00:00:04 node /app/server.js
deploy    3891     1  3893  0    4 09:16 ?        00:00:05 node /app/server.js
deploy    3891     1  3894  0    4 09:16 ?        00:00:03 node /app/server.js

$ pulsar -p 2104 -L
  PID   LWP TTY          TIME CMD
 2104  2104 ?        00:00:12 postgres
 2104  2105 ?        00:00:04 postgres
 2104  2106 ?        00:00:08 postgres
 2104  2107 ?        00:00:03 postgres
 2104  2108 ?        00:00:15 postgres
 2104  2109 ?        00:00:10 postgres
Live Process Events
0.3s agoNEW PID 8421 spawned β€” nginx: worker process by www-data
1.2s agoCPU PID 2104 β€” postgres at 4.7% CPU (threshold: 5%)
2.8s agoEXIT PID 7312 β€” cron job completed (exit 0)
3.1s agoNEW PID 8422 spawned β€” node worker.js by deploy
5.4s agoMEM PID 3891 β€” node at 2.1% MEM (↑0.3%)
6.0s agoSTATE PID 4102 β€” redis-server: S β†’ Ssl
7.7s agoNEW PID 8420 spawned β€” sshd: admin [priv] by root
9.3s agoEXIT PID 7289 β€” apt-get update completed (exit 0)

Trusted by infrastructure teams
who don't mess around

β˜…β˜…β˜…β˜…β˜…
"Pulsar's Custom Viewport feature completely changed our incident response workflow. We went from drowning in noisy process lists to surgical precision targeting. Our MTTR dropped significantly the week we deployed it."
Kai Hashimoto
Kai Hashimoto
VP of Platform Engineering, ScaleForge
"The --forest view is genuinely one of the best debugging tools I've ever used. I can trace any zombie or orphan process back to its parent chain in seconds. We used to spend hours on this."
Rina Malhotra
Rina Malhotra
SRE Lead, Inframatic
"I'm a solo founder running nine services on three boxes. Pulsar gives me instant clarity on what's eating memory, what's spiking CPU, and what's just sitting there as a zombie. It's mission-critical for me."
Julian Svensson
Julian Svensson
Solo Founder, PingStack
"Thread-level observability with LWP tracking was the unlock we needed. Our Java monolith has hundreds of threads per process and Pulsar makes them legible. We've caught three thread-leak bugs this quarter alone."
Amara Washington
Amara Washington
CTO, DataMesh

Start free. Scale when you need to.

Every plan includes real-time snapshots, basic process listing, and community support. Upgrade for advanced observability.

Starter
$0/month
  • Basic process listing (own user only)
  • PID, TTY, TIME, CMD columns
  • 100 snapshots/day
  • Single system
  • Community support
Team
$49/seat/month
  • Everything in Pro, plus:
  • Process Genealogy (--forest)
  • Thread-level observability (-eLf)
  • Command targeting (-C)
  • Repeating headers (--headers)
  • Shared viewports & dashboards
  • SSO & RBAC
  • Unlimited systems
Enterprise
Custom
  • Everything in Team, plus:
  • Security context view (-M / Z)
  • Signal mask inspection
  • Namespace-aware snapshots
  • Dedicated support engineer
  • Custom SLA (99.99%)
  • Audit logs & compliance
  • On-prem deployment option

Questions? We've got answers.

What's the difference between Universal Scan and the default view?

The default view shows only processes owned by you, associated with your current terminal. Universal Scan (pulsar aux or pulsar -e) lifts all restrictions and shows every process on the system β€” across all users, all terminals, including background daemons and kernel threads. Most teams use Universal Scan as their default workflow.

Can I use Pulsar to monitor processes in real-time?

Pulsar is built for snapshot-level observability β€” a precise, point-in-time view of your entire process space. For continuous monitoring with refresh, pair Pulsar snapshots with your existing metrics pipeline or dashboarding stack. Each snapshot is deterministic and consistent.

How do Custom Viewports work?

Custom Viewports let you select exactly which columns appear in your output using the -o flag. You can choose from 47+ supported columns, rename headers, and set custom widths. For example: pulsar -eo pid,user,%cpu,comm --sort=-%cpu gives you a CPU-focused view. You can even combine multiple -o flags for complex schemas.

What do the STAT codes mean?

STAT codes are Pulsar's process state indicators. R = running, S = sleeping (interruptible), D = sleeping (uninterruptible, usually I/O), T = stopped, Z = zombie (defunct), I = idle kernel thread. Additional modifiers include: s (session leader), l (multi-threaded), + (foreground group), < (high priority), N (low priority), L (locked in memory). The stat column gives you the full multi-character view.

Is my process data secure?

Absolutely. Pulsar reads from the process table in a read-only fashion. No data leaves your infrastructure unless you explicitly configure an export. All data in transit is encrypted. Enterprise customers get SOC 2 Type II compliance, audit logs, and RBAC out of the box.

Backed by mandō