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-uor when invoked asumount).
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-1224— SHA-224256— SHA-256384— SHA-384512— 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— sendSIGTERMto gracefully terminate processes.-k— sendSIGKILLto immediately kill processes.-9— alias for-kfor 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