📦 | Bug reporter [maintainer=@lambdajon, @let-rec]
  • Rust 81.1%
  • Nix 12.9%
  • Fluent 5.1%
  • Just 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-30 12:02:18 +05:00
.forgejo fix(gui): nix source filter for translation files (#28) 2026-09-16 12:33:03 +00:00
crates refactor: move upload fn from gui 2026-09-30 12:02:18 +05:00
data Configure relago daemon service (#2) 2026-02-22 18:46:52 +05:00
.envrc wip initial setup 2026-01-06 14:40:38 +05:00
.gitignore feat: add treefmt pre-commit hook (#30) 2026-08-19 05:04:10 +00:00
Cargo.lock refactor: move upload fn from gui 2026-09-30 12:02:18 +05:00
Cargo.toml feat: make ui more like macos (#31) 2026-09-11 13:00:41 +00:00
default.nix feat: make ui more like macos (#31) 2026-09-11 13:00:41 +00:00
flake.lock fix(gui): nix source filter for translation files (#28) 2026-09-16 12:33:03 +00:00
flake.nix fix(gui): nix source filter for translation files (#28) 2026-09-16 12:33:03 +00:00
justfile wip initial setup 2026-01-06 14:40:38 +05:00
LICENSE rc-26-05 (#25) 2026-07-07 14:20:18 +00:00
module.nix rc-26-05 (#25) 2026-07-07 14:20:18 +00:00
readme.md rc-26-05 (#25) 2026-07-07 14:20:18 +00:00
rust-toolchain.toml feat: add treefmt pre-commit hook (#30) 2026-08-19 05:04:10 +00:00
shell.nix feat: make ui more like macos (#31) 2026-09-11 13:00:41 +00:00
treefmt.nix feat: add treefmt pre-commit hook (#30) 2026-08-19 05:04:10 +00:00

Relago

Automatic crash reporting tool for XinuxOS. It monitors your system for crashes, collects diagnostic information, and lets you submit reports through a simple GUI.

What it does

Relago runs as a background daemon that watches the systemd journal for crash events. When it detects a crash, it sends a desktop notification and opens a GUI window where you can review the crash details and choose to send a report.

Detected crash types:

  • Coredumps (application crashes)
  • Service failures (systemd unit failures)
  • Out-of-memory kills (OOM events)

When you send a report, Relago collects:

  • System information (CPU, memory, disk usage, network interfaces)
  • Systemd journal entries
  • NixOS/XinuxOS configuration files (if available)

If the user clicks "Send Report" in the GUI, everything is compressed into a ZIP file and uploaded to the report server. If the user clicks "Cancel", the report is discarded.

Installation

# clone the repository
git clone https://github.com/xinux-org/relago
cd relago

# build in release mode (requires GTK4, libadwaita, systemd dev libraries)
cargo build --release

# binary location after build
./target/release/relago

Commands

daemon

# before running daemon, create the config directory and file
sudo mkdir -p /var/lib/relago
sudo touch /var/lib/relago/config.toml

# start the crash monitoring service
# watches systemd journal for coredumps, service failures, and OOM events
# when crash detected: extracts details -> shows desktop notification -> opens reporter GUI
cargo run -- daemon

# start with a custom instance name
cargo run -- daemon myinstance

report

Default location: /tmp/relago/report_YYYY-MM-DD_HH-MM-SS/

# generate a diagnostic report (saved as ZIP)
# collects: system info, journal entries, nixos config
# saves in the default location if you don't specify one
cargo run -- report

# save report to specific directory
cargo run -- report -o /path/to/output

# only include last 100 journal entries (faster, smaller report)
cargo run -- report -r 100

# include nixos configuration in the report
cargo run -- report --nixos-config /etc/nixos/xinux-config

# combine options
cargo run -- report -o ./my-report -r 500 --nixos-config ~/nixos-config

reporter

# open the crash reporter GUI window
# shows crash details, send button, upload progress
cargo run -- reporter

# specify crash details (usually called by a daemon)
cargo run -- reporter -u firefox.service -e firefox -m "Segmentation fault"

# -u : systemd unit name
# -e : executable name
# -m : crash message

Testing crash detection

To manually trigger a crash for testing, use the crash project.

# install crash tool
git clone https://github.com/xinux-org/crash
cd crash

# it is used to update the flake.lock file
nix flake update

# first, start relago daemon in ~/relago project terminal
cargo run -- daemon

# then, run this command to force a crash manually in ~/crash project terminal
nix run .\#segfault

Configuration

Configuration file: /var/lib/relago/config.toml

# number of threads for compression
parallel_compression = 4

# temporary directory for report generation
tmp_dir = "/tmp/relago"

# data storage directory
data_dir = "/var/lib/relago"

# path to nixos configuration
nix_config = "/etc/nixos"

# report upload server URL
server = "https://example.com"

Report structure

report_2024-01-15_10-30-45/
├── system_info.json          # CPU, memory, disk, network info
├── journal_report.json.zlib  # compressed systemd journal entries
└── nixos-config/             # nixos configuration (if included)

Basic Usage

# Report all journal entries (default)
cargo run -- report

# Report with NixOS configuration
cargo run -- report --nixos-config ~/configuration-path

# Report last N entries only
cargo run -- report --recent 100

# Report with custom output directory
cargo run -- report --output /custom/path

# Combine options
cargo run -- report --nixos-config ~/configuration-path --recent 500 --output /custom/path

Short Flags

# Recent entries (short flag)
cargo run -- report -r 100

# Output directory (short flag)
cargo run -- report -o /custom/path

Report Structure

The report creates a timestamped directory containing:

report_YYYY-MM-DD_HH-MM-SS/
├── journal_report.json.zlib    # Compressed systemd journal entries
├── system_info.json            # CPU, RAM, disks, network information
└── nixos-config/               # NixOS configuration (if --nixos-config provided)
    ├── flake.nix
    ├── systems/
    └── modules/

Examples

# Full system report with NixOS config
cargo run -- report --nixos-config ~/configuration-path

# Recent entries only, custom location
cargo run -- report -r 50 -o /var/reports

# Quick diagnostic with last 10 entries
cargo run -- report -r 10

Configure Command

  • Persist settings to the configuration file.
# Set the default report output base directory
cargo run -- configure --tmp-dir /tmp/relago

# Change the default NixOS configuration path
cargo run -- configure --nix-config /etc/nixos

# Update the upload server endpoint
cargo run -- configure --server https://relago.support.xinux.uz

# Set multiple values in one command
cargo run -- configure \
  --tmp-dir /tmp/relago \
  --parallel-compression 4 \
  --server https://relago.support.xinux.uz