Skip to content

Latest commit

 

History

189 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

systemdmgr

A terminal UI for managing and browsing systemd units.

Rust

Warning

This project is a work in progress and features are still incomplete and subject to change.

Features

  • Browse systemd units (services, sockets, timers, paths, targets) with status indicators
  • Search units by name or description
  • Filter by status, file state, and unit type via picker dialogs
  • View unit details, properties, and read-only unit file content
  • Perform unit actions (start, stop, restart, enable, disable, reload, daemon-reload)
  • View focused per-unit or system-wide logs with search, priority filter, and time range filter
  • Live tail mode with pause/resume for real-time log monitoring
  • Toggle between user and system units
  • Remote management via SSH (authenticate once, persistent connection)
  • Mouse support (click to select, scroll to navigate)

Installation

Quick Install (Linux)

curl -fsSL https://raw.githubusercontent.com/andrewtheguy/systemdmgr/main/install.sh | sudo bash

To install a prerelease version:

curl -fsSL https://raw.githubusercontent.com/andrewtheguy/systemdmgr/main/install.sh | sudo bash -s -- --prerelease

The installer places the binary in /usr/local/bin, which requires root.

macOS (SSH remote management only)

macOS does not have systemd, but you can use systemdmgr as an SSH client to manage remote Linux servers:

curl -fsSL https://raw.githubusercontent.com/andrewtheguy/systemdmgr/main/install.sh | sudo bash

The binary is installed to /usr/local/bin. Then connect to a remote host:

systemdmgr --ssh user@server

Usage

systemdmgr

Started without a connection flag, systemdmgr opens a menu asking where to manage services:

Where do you want to manage services?

> Local  this machine
  SSH    a remote host over ssh

Picking SSH lists the Host aliases from your ~/.ssh/config and lets you type any other destination (with ssh options, if needed). ↑/↓ selects, Enter confirms, Esc goes back, q quits. If the connection fails, you land back in the menu with the reason on screen.

Skip the menu with a connection flag:

systemdmgr --local
systemdmgr --ssh user@server

Remote Management

Manage systemd units on a remote server over SSH:

Everything after --ssh is passed to the ssh client, in the form --ssh [ssh-options] destination (options first, destination last):

systemdmgr --ssh user@server
systemdmgr --ssh -p 2222 -i ~/.ssh/deploy_key user@server
systemdmgr --ssh -J bastion user@server

Connectivity is delegated to the system OpenSSH client: authentication (agent, keys, password, OTP/MFA), host key verification, ~/.ssh/config (including ProxyJump and Match), and passphrase prompts all work exactly as they do for plain ssh. A single multiplexed connection (ControlMaster) is reused for all commands. --user mode works over SSH (requires loginctl enable-linger on the remote).

See docs/ssh.md for full details on host resolution, authentication, and troubleshooting.

Version

systemdmgr version
systemdmgr --version

Keyboard Shortcuts

Press ? in the app to see context-sensitive help.

Unit List

Key Action
Down Move down
Up Move up
g / Home Go to top
G / End Go to bottom
PgUp / PgDn Page up / down
/ Search units
s Status filter picker
f File state filter picker
t Unit type picker
i / Enter Open unit details
v View unit file
x Action picker (start/stop/restart/etc.)
R Daemon reload
l Open logs
L Open system-wide logs
p Log priority filter
T Log time range filter
r Refresh units
u Toggle user/system units
Esc Clear search or quit
q Quit
? Toggle help

Logs View

Key Action
Down Scroll down
Up Scroll up
g / Home Go to top
G / End Go to bottom
PgUp / PgDn Page scroll
Ctrl+u / Ctrl+d Half page scroll
/ Search logs
n / N Next / previous match
p Priority filter
t Time range filter
x Action picker
f Pause/resume live tail
l Exit logs
L Toggle system-wide logs
Enter Open selected unit from paused system-wide logs
Esc Clear search / exit logs
? Toggle help

Unit File View

Key Action
Down / Up Scroll down / up
g / Home Go to top
G / End Go to bottom
PgUp / PgDn Page scroll
Ctrl+u / Ctrl+d Half page scroll
/ Search unit file
n / N Next / previous match
v / Esc / q Close unit file
? Toggle help

Documentation

Requirements

  • Rust 1.85+ (2024 edition)
  • Linux: systemd 246+ with systemctl on PATH (local host, or remote host when using --ssh)
  • macOS: SSH remote management only (--ssh flag required; the remote host must have systemd)
  • OpenSSH client (ssh on PATH) for remote management via --ssh

License

MIT

About

A terminal UI for viewing and browsing systemd services.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages