Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

About Vesper Linux

Vesper Linux is an independent, rolling-release operating system built from scratch for x86_64 hardware. Rather than being just another distribution reskin, Vesper is a full-stack OS project that replaces the conventional GNU/systemd baseline with an in-house userland written in Go. The goal is to avoid an inconsistent hodgepodge of foreign tools and deliver a unified, transparent system that boots straight into a minimal terminal environment.

Core Components

  • inutils — compact replacement suite for standard core utilities.
  • ortus-solis — PID 1 init system and service supervisor.
  • vesh — minimalist command shell focused on direct process execution.
  • nya — lightweight archive-based package manager.

Design Goals

Independent & Full-Stack

Built directly from source without upstream parent distributions. The project maintains its own implementations spanning from process initialization to packaging tooling.

Explicit System State

No background telemetry, automatic service launches, or hidden hooks. Installing a package deploys its files without modifying runtime configuration until explicitly instructed.

Desktop Compatibility

Uses standard glibc to seamlessly handle modern graphics stacks and software like Steam, with future musl support planned.

inutils

inutils is a set of core system utilities written in Go. It handles everyday file management and basic system tasks in Vesper Linux.

Think of it as a clean alternative to GNU coreutils with a BusyBox mindset. It keeps compatibility with common flags and provides symlinks for familiar tools like cp and rm so your muscle memory still works, while dropping decades of legacy bloat.

Naming

When you see the utility names for the first time, you might wonder, “Where is mkdir?” - the names are completely different from standard GNU coreutils.

This approach stems from the project’s origins as an experimental rewrite of coreutils for fun, which eventually evolved into a core system layer.

But don’t worry! The system still ships standard symlinks to make your life easier and to support scripts.

Utilities list

There are currently 23 utilities implemented in inutils:

Utility (GNU alias)Description
am (rm)Remove files or directories
crea (mkdir)Create directories
dm (pwd)Print current working directory
dom (chown)Change file owner and group
ego (whoami)Print effective user ID
grex (groups)Print group memberships
im (cp)Copy files and directories
inu (cat)Concatenate and print files
inv (find)Search for files in a directory hierarchy
mons (mount / umount)Mount and unmount filesystems
mov (mv)Move or rename files
nomen (hostname)Show system host name
non (yes)Output a string repeatedly until killed
nx (ln)Make links between files
perm (chmod)Change file mode bits (permissions)
rf (ls)List directory contents
scruta (grep)Print lines matching a pattern
spat (df / du)Show file space and disk usage
summa (sha256sum)Compute and check SHA-256 message digest
tango (touch)Change file timestamps / create empty files
vera (realpath)Print resolved absolute file path
vita (ps / kill)Process status and signal termination
vox (echo)Display a line of text

Codebase

The code is dead simple. No crazy abstractions or deep rabbit holes, you can open any file and read it like a book.

Source code

Source code is available at Codeberg

am

am (from Latin amove — to remove) deletes files and directories. It is the core Vesper Linux replacement for GNU rm.

Usage

am [-r] [-f] FILE...

Flags

  • -r — remove non-empty directories with their contents recursively.
  • -f — force removal; ignores nonexistent files and suppresses error output when a target does not exist.

Examples

Delete a single file:

am note.txt

Recursively force delete a directory:

am -r -f target_dir/

Delete multiple files at once:

am file1.txt file2.txt file3.txt

crea

crea (from Latin crea — to create/make) creates directories. It is the core Vesper Linux replacement for GNU mkdir.

Usage

crea [-p] DIR...

Flags

  • -p — create parent directories as needed; does not fail if intermediate paths do not exist.

Examples

Create a single directory:

crea my_folder

Create nested directories along with missing parents:

crea -p path/to/nested/folder

Create multiple directories at once:

crea dir1 dir2 dir3

dm

dm (from Latin directorium — directory) prints the absolute path of the current working directory. It is the core Vesper Linux replacement for GNU pwd.

Usage

dm

Flags

This utility does not take any flags or arguments.

Examples

Print current working directory:

dm

dom

dom (from Latin dominus — master/owner) changes file or directory ownership. It is the core Vesper Linux replacement for GNU chown.

Usage

dom OWNER[:GROUP] FILE...

Flags

This utility does not use flags. Ownership is specified using standard user or user:group syntax.

Examples

Change file owner to a specific user:

dom user myfile.txt

Change both owner and group:

dom user:wheel script.sh

Change ownership of multiple files at once:

dom root:root file1.conf file2.conf

ego

ego (from Latin ego — I) prints the username of the current effective user. It is the core Vesper Linux replacement for GNU whoami.

Usage

ego

Flags

This utility does not take any flags or arguments.

Examples

Print current user:

ego

grex

grex (from Latin grex — group) prints the names of the groups the current process belongs to. It is the core Vesper Linux replacement for GNU groups.

Usage

grex

Flags

This utility does not take any flags or arguments.

Examples

Print current user groups:

grex

im

im (from Latin imitari — to copy) copies files and directories. It is the core Vesper Linux replacement for GNU cp.

Usage

im [-r] [-v] SOURCE... DESTINATION

Flags

  • -r — copy directories recursively.
  • -v — verbose mode; print each file and directory path as it is copied.

Examples

Copy a single file:

im config.toml config.toml.bak

Recursively copy a directory:

im -r src/ backup/

Copy multiple files into an existing directory with verbose output:

im -v file1.txt file2.txt /tmp/

inu

inu (from Japanese inu — dog) outputs file contents or standard input to stdout. It is the core Vesper Linux replacement for GNU cat.

Usage

inu [FILE...]

Flags

This utility does not take flags. If no files are specified, it reads from standard input.

Examples

Print the contents of a file:

inu file.txt

Concatenate and display multiple files sequentially:

inu part1.log part2.log

Read from stdin (e.g., via pipe):

echo "hello" | inu

inv

inv (from Latin invenio — to find/discover) recursively searches for files matching a pattern within a directory. It is the core Vesper Linux replacement for GNU find.

Usage

inv DIR TARGET

Flags

This utility does not take flags. Patterns use standard glob matching syntax (such as *, ?).

Examples

Find all Go files inside a directory:

inv . "*.go"

Search for a specific file by exact name:

inv /etc hosts

Search across user home directory for markdown documents:

inv /home/user "*.md"

mons

mons (from Latin mons — mountain / mount) mounts and unmounts filesystems. It serves as the native Vesper Linux replacement for both GNU mount and umount.

When called via the umount symlink, it automatically switches to unmount mode.

Usage

mons [--mkdir] [-o OPTIONS] -t FSTYPE SOURCE DESTINATION
mons -u [-f] TARGET
umount [-f] TARGET

Flags

  • -t — filesystem type (e.g., ext4, btrfs, vfat). Required for mounts unless performing a bind mount.
  • -o — comma-separated mount options (ro, rw, nosuid, nodev, noexec, remount, bind, rbind, noatime, nodiratime, relatime, sync, or filesystem-specific data options).
  • --mkdir — automatically create the destination mount point directory (0755) if it does not exist.
  • -u — unmount the specified target.
  • -f — force unmount (only valid alongside -u or when invoked as umount).

Examples

Mount an ext4 partition:

mons -t ext4 /dev/sda1 /mnt

Mount with options and automatically create the target directory:

mons --mkdir -o noatime,ro -t btrfs /dev/sdb2 /mnt/data

Perform a bind mount:

mons -o bind /source/dir /target/dir

Unmount a filesystem:

mons -u /mnt

Force unmount using standard alias:

umount -f /mnt

mov

mov (from Latin movere — to move) moves or renames files and directories. It is the core Vesper Linux replacement for GNU mv.

Usage

mov [-v] OLDPATH... NEWPATH

Flags

  • -v — verbose mode; print each path as it is moved.

Examples

Rename a file:

mov old_name.txt new_name.txt

Move a file into a directory:

mov document.pdf docs/

Move multiple files into a directory with verbose output:

mov -v file1.log file2.log backup/

nomen

nomen (from Latin nomen — name) displays or sets the system hostname. It is the core Vesper Linux replacement for GNU hostname.

When setting a new hostname, it updates both the runtime hostname in memory and persists the change by overwriting /etc/hostname.

Usage

nomen [NEWHOSTNAME]

Flags

This utility does not take flags.

Examples

Print current hostname:

nomen

Set a new system hostname (requires root permissions):

nomen vesper-box

non

non (from Latin non — not/no) repeatedly outputs a string until terminated. It is the core Vesper Linux alternative to GNU yes.

When no arguments are provided, non defaults to outputting n. If invoked through the standard yes symlink, it prints y instead to preserve shell script compatibility.

Usage

non [STRING...]
yes [STRING...]

Flags

This utility does not take flags.

Examples

Repeatedly output n (native default):

non

Repeatedly output y via standard compatibility symlink:

yes

Repeatedly output a custom string:

non "still running"

nx

nx (from Latin nexus — binding/link) creates hard links or symbolic links between files. It is the core Vesper Linux replacement for GNU ln.

Usage

nx [-s] [-f] [-v] [-T] FILE LINK

Flags

  • -s — create a symbolic link instead of a hard link.
  • -f — remove existing destination files before linking.
  • -v — verbose mode; print created link targets.
  • -T — treat destination link name as a normal file.

Examples

Create a hard link:

nx original.txt hardlink.txt

Create a symbolic link:

nx -s /opt/bin/app /usr/local/bin/app

Force-overwrite an existing symlink with verbose output:

nx -s -f -v target.conf current.conf

perm

perm (from Latin permissio — permission) changes file mode bits. It is the core Vesper Linux replacement for GNU chmod.

Usage

perm MODE FILE...

Flags

This utility does not take flags. The permission mode must be specified as an octal number (e.g., 755, 644).

Examples

Make a script executable:

perm 755 script.sh

Set read and write permissions for the owner only:

perm 600 id_ed25519

Apply permissions to multiple files at once:

perm 644 file1.txt file2.txt file3.txt

rf

rf (from Latin refero — to bring back/report/list) lists directory contents. It is the core Vesper Linux replacement for GNU ls.

Usage

rf [-a] [-1] [-F] [-l] [-h] [--color=MODE] [DIR...]

Flags

  • -a — do not ignore entries starting with . (include hidden files).
  • -1 — list one file per line.
  • -F — append indicator (/ for directories, * for executables).
  • -l — long listing format flag (reserved for compatibility for now).
  • -h — human-readable sizes flag (reserved for compatibility for now).
  • --color — set colorization mode (auto, always, never).

Examples

List contents of the current directory:

rf

List all files including hidden entries in a single column:

rf -a -1

Show indicators for directories and executables:

rf -F /usr/bin

List contents of multiple directories:

rf src/ include/

scruta

scruta (from Latin scruta / scrutari — to search/examine) searches for text patterns in file lines or standard input. It is the core Vesper Linux replacement for GNU grep.

Usage

scruta [-i] [-n] [-v] [-c] [-l] TARGET [FILE...]

Flags

  • -i — ignore case distinctions in patterns and input data.
  • -n — prefix each line of output with its 1-based line number.
  • -v — invert match; select non-matching lines.
  • -c — suppress normal output; print a count of matching lines instead.
  • -l — print only the names of files containing matches.

Examples

Search for a string in a file:

scruta "error" /var/log/syslog

Case-insensitive search with line numbers:

scruta -i -n "todo" main.go

Count matches across multiple files:

scruta -c "failed" auth.log daemon.log

Print only filenames that contain matches:

scruta -l "import" *.go

Filter lines from standard input:

inu config.ini | scruta -v "^#"

spat

spat (from Latin spatium — space/distance) checks disk and directory storage usage. It serves as the native Vesper Linux replacement for both GNU df and du.

When invoked via the df symlink, it defaults to filesystem disk usage mode (-f). When invoked via du, it measures file and directory disk consumption.

Usage

spat [-h] [-f] [MOUNTPOINT]
spat [-h] PATH...
df [-h] [MOUNTPOINT]
du [-h] PATH...

Flags

  • -h — print sizes in human-readable format (e.g., 1K, 234M, 2G).
  • -f — filesystem status mode (reports overall mount point capacity, usage, and available percentages).

Examples

Check filesystem storage usage on root:

spat -f /

Check filesystem storage in human-readable format via df symlink:

df -h

Calculate directory size:

spat /var/log

Calculate size of a file or folder with human-readable output via du:

du -h src/

summa

summa (from Latin summa fasciculi — file sum) computes cryptographic hash sums for files. It serves as the unified Vesper Linux replacement for GNU sha1sum, sha224sum, sha256sum, sha384sum, and sha512sum.

When invoked via one of its compatibility symlinks (e.g., sha256sum), the algorithm argument is inferred automatically.

Usage

summa ALGORITHM FILE...
sha1sum FILE...
sha224sum FILE...
sha256sum FILE...
sha384sum FILE...
sha512sum FILE...

Algorithms

Supported values for ALGORITHM:

  • 1 — SHA-1
  • 224 — SHA-224
  • 256 — SHA-256
  • 384 — SHA-384
  • 512 — SHA-512

Flags

This utility does not take flags.

Examples

Compute SHA-256 sum for a file:

summa 256 archive.tar.gz

Compute SHA-512 sum using standard GNU compatibility symlink:

sha512sum rootfs.img

Calculate hashes for multiple files:

summa 1 file1.bin file2.bin

tango

tango (from Latin tango — to touch) updates file access and modification timestamps to the current time, or creates empty files if they do not exist. It is the core Vesper Linux replacement for GNU touch.

Usage

tango [-c] [-a] [-m] [-t TIMESTAMP] FILE...

Flags

  • -c — do not create any files that do not already exist.
  • -a — change only the access time (compatibility flag).
  • -m — change only the modification time (compatibility flag).
  • -t — timestamp specification flag (compatibility flag).

Examples

Create a new empty file:

tango newfile.txt

Update timestamps on an existing file without creating it if missing:

tango -c existing.log

Touch multiple files at once:

tango file1.txt file2.txt file3.txt

vera

vera (from Latin via vera — true/real path) resolves symbolic links and prints the canonical, absolute path of files or directories. It is the core Vesper Linux replacement for GNU realpath.

Usage

vera FILE...

Flags

This utility does not take flags.

Examples

Print the canonical path of a symlink:

vera /usr/bin/sh

Resolve relative paths to absolute:

vera ../config.toml

Resolve multiple paths at once:

vera link1 link2 ./main.go

vita

vita (from Latin vita — life) is a unified process management tool for listing, inspecting, and terminating running processes. It serves as the native Vesper Linux replacement for both GNU ps and kill.

When invoked via the kill symlink, it automatically switches to kill mode (sending SIGKILL).

Usage

vita [PATTERN...]
vita -t [-v] PID...
vita -k [-v] PID...
vita -9 [-v] PID...
kill [-v] PID...

Flags

  • -t — send SIGTERM to gracefully terminate processes.
  • -k — send SIGKILL to immediately kill processes.
  • -9 — alias for -k for GNU compatibility.
  • -v — verbose mode; prints confirmation for each signal sent.

Examples

List all running processes:

vita

Filter running processes by name or command line:

vita go

Send SIGTERM to terminate a process gracefully:

vita -t 1234

Force kill multiple processes with verbose output:

vita -k -v 1234 5678

Force kill using the standard kill symlink:

kill 1234

vox

vox (from Latin vox — voice) prints arguments to standard output followed by a newline. It is the core Vesper Linux replacement for GNU echo.

Usage

vox [STRING...]

Flags

This utility does not take flags.

Examples

Print a simple string:

vox "Hello, Vesper!"

Output text into a file:

vox "kernel.panic = 10" > /etc/sysctl.d/panic.conf

Print multiple arguments separated by spaces:

vox system status: ready