lulo is a terminal-based Linux management and observability tool built around a three-process architecture: a Notcurses frontend, a user/session daemon, and a privileged system daemon.
View Documentation — design, architecture, and per-component technical docs.
| Component | Role |
|---|---|
lulo |
Notcurses TUI frontend |
lulod |
User/session daemon for cached snapshots, focus integration, and frontend IPC |
lulod-system |
Privileged system daemon for scheduler enforcement and privileged file/apply operations |
| Area | What it covers |
|---|---|
| CPU | CPU history, per-core state, process tree, process signaling |
| DISK | Mounted filesystem usage dashboard |
| SCHED | Scheduler profiles, rules, live state, focused/background policy |
| CGROUPS | Cgroup hierarchy, control files, related config |
| SYSTEMD | Units, reverse dependencies, config and unit editing |
| TUNE | Tunables explorer, snapshots, presets, privileged apply |
| UDEV | Rules, hwdb, live device data, config editing |
Full documentation is published at nine7nine.github.io/lulo.
| Document | Description |
|---|---|
| Architecture Overview | The three processes, the privilege boundary, source layout, and design rules. |
| Process Model & IPC | The two sockets, wire protocol, the embedded polkit auth agent, the RW lease, edit sessions, and proc tracing. |
| Scheduler | Sparse-overlay profiles, fnmatch matchers, policy resolution, and continuous syscall-level enforcement. |
| Focus Providers | KDE and GNOME focused-window detection over one session-bus contract. |
| Document | Description |
|---|---|
| CPU & Process View | Decoupled CPU/proc sampling, the per-core heatmap, the arena-built process tree, and tracing. |
| Disk View | A daemon-free multi-panel dashboard over /proc, /sys/block, and the mount tables. |
| Cgroups View | A live /sys/fs/cgroup browser bridged to the systemd units that shape each limit. |
| Systemd View | A merged system + user inventory over sd-bus, with reverse-dependency closures. |
| Tune View | A tunables explorer with staged edits, portable .ltune bundles, and a privileged apply path. |
| Udev View | Rules, hwdb, and live device records read straight from /run/udev/data. |
| Document | Description |
|---|---|
| Install & Packaging | Build targets, the /usr footprint, the systemd units, the GNOME extension step, and packaging. |
The repository root also keeps short Markdown references for quick in-repo reading: ARCHITECTURE.md, SCHED.md, INSTALL.md, CPU.md, DISK.md, CGROUPS.md, SYSTEMD.md, TUNE.md, UDEV.md.
make PREFIX=/usrUseful variants:
| Target | Purpose |
|---|---|
make strict PREFIX=/usr |
Build with stricter warnings |
make analyze PREFIX=/usr |
Static analysis pass |
make asan PREFIX=/usr |
Sanitizer build |
sudo make install PREFIX=/usr
sudo systemctl restart lulod-system.service
systemctl --user restart lulod.service
/usr/bin/lulo -i ncFor full setup, migration, and packaging details, see INSTALL.md.