harm-less.software is a plain-text, opinionated catalog of small, understandable software. The tree is the interface.
.
├── README - /* --- harm-less ---*/
├── tree.sh - #!/usr/bin/env bash
└── wiki
├── 1.use
│ ├── 1.os
│ │ ├── 10.Minix - The simpelest embedded microkernal os possible, powers the IME in intel chips.
│ │ ├── 20.plan9 - (or 9front) The most minimal of all, Only use if you are a full autismo.
│ │ ├── 30.Oasis - manual-bootstrapped, statically compiled incredibly simple source-based linux.
│ │ ├── 40.OpenBSD - Very clean codebase, very simple, very secure, smallst kernal
│ │ ├── 50.KISS - Kiss linux is new, decently well known, and ungodly simple. Links hard to find k1sslinux.org
│ │ ├── 60.Alpine - A very popular just-works embedded linux build around musl libc and busybox.
│ │ ├── 70.Sabotage - Manual bootstrapped ultraminimal source-based static linux.
│ │ ├── 80.Glaucus - Brand new bleeding-edge linux built round musl libc and toybox.
│ │ └── 90.Gentoo - The most popular distro here, source based, can be made suckless.
│ ├── 2.core
│ │ ├── 1.programs
│ │ │ ├── 1.init
│ │ │ │ ├── 10.sinit - The suckless init system
│ │ │ │ ├── 20.toybox - busybox init but even fuckin smaller, even simpler.
│ │ │ │ ├── 30.busybox - busybox has a good minimal embedded init system.
│ │ │ │ ├── 40.runit - ungodly small init scheme, very powerful
│ │ │ │ └── 50.OpenRC - Bit bloated, but by far the most popular of the init's here.
│ │ │ ├── 2.utils
│ │ │ │ ├── 10.sbase - suckless core utils, even simpler than the plan9 ones.
│ │ │ │ ├── 20.toybox - monolithic bin just like busybox, but even simpler. Used on android.
│ │ │ │ ├── 30.busybox - tiny versions of many common UNIX utilities into a single small embedded executable
│ │ │ │ └── 40.plan9-coreutils - The most minimal you can get, everything is only a couple lines of C. Best of the best.
│ │ │ └── 3.etc
│ │ │ └── 10.mandoc - OpenBSD's man page toolchain. Farrr better than gnu's
│ │ └── 2.libraries
│ │ ├── compression
│ │ │ ├── flate - small gzip compatible compressor lib
│ │ │ ├── liblzf - very fast, legally unencumbered compression library
│ │ │ ├── libz - cleaned up, modern fork of zlib.
│ │ │ ├── lz4 - extremely fast (BSD-licensed) compression algorithm
│ │ │ ├── lzip - Properly designed data compressor outperforming gzip and bzip2
│ │ │ ├── miniz - Single C source file Deflate/Inflate compression library
│ │ │ ├── xz-embedded - lightweight decompressor for the xz LZMA compressor (public domain).
│ │ │ └── zlib - the "standard" compression/decompression library, quite small
│ │ └── cryptography
│ │ ├── TweetNaCl - tiny, fully NaCl-compatible high-security cryptography library (single C file)
│ │ ├── dropbear - better replacement for OpenSSH.
│ │ ├── libreSSL - minimal drop-in replacement for (and fork of) OpenSSL.
│ │ ├── libsodium - encryption/decryption library
│ │ └── libtomcrypt - public domain cryptography library
│ ├── 3.gui
│ │ └── display-servers
│ │ ├── 1.tinyx - Xvesa and Xfbdev. Drawing, input, windows, network. Under 100k lines, no DRM, no forced xkb.
│ │ ├── 2.xenocara - OpenBSD's X. Still xorg underneath, but kept in base, patche, built with make.
│ │ ├── 3.swc - Wayland compositor library, 9k lines. Small because the work went elsewhere. Add wld and velox for a desktop: 17k, plus libdrm, libinput, pixman, wayland. Linux and NetBSD only.
│ │ ├── 4.wlroots - Not a display server. A 60k line library whose API breaks every release. Each compositor writes the rest. Each client draws itself.
│ │ └── 5.xorg - 360k lines of C in the server alone. Bloated behemoth.
│ └── 4.applications
│ ├── 1.media
│ │ └── torrenting
│ │ └── clients
│ │ ├── 10.btpd - The BitTorrent Protocol Daemon
│ │ ├── 20.ctorrent - lightweight torrent client [unmaintained]
│ │ ├── 30.lftp - simple command line file transfer program
│ │ └── 40.aria2 - lightweight multi-protocol download utility
│ └── 2.utilities
│ ├── 1.files
│ │ ├── 1.management
│ │ │ ├── 10.unix-utils - ls, cp, mv, etc.
│ │ │ ├── 20.noice - 1k sloc small extensable file browser
│ │ │ ├── 30.rover - 2k sloc, perfect tiny file browser.
│ │ │ ├── 40.sfm - 3k sloc, very user friendly, very pretty, prob the best one here.
│ │ │ ├── 50.lf - bloated, terminal file manager written in Go, inspired by ranger
│ │ │ └── 60.broot - bloated, not a file manager, not the tree command - extensable file control and navigation.
│ │ └── 2.search
│ │ ├── 10.find - Unix core utility, minimal, efficent, tiny portable, most minimal of all of these.
│ │ ├── 20.pick - 2k sloc minimal fuzzy search tool.
│ │ ├── 30.fzy - 1/10th the code of fzf, fuck fzf, this is just as fast, just as amazing.
│ │ └── 40.go-fuzzyfinder - minimal, easy, fast, tiny, and written in go, less popular than the others here.
│ ├── 2.text
│ │ └── 1.manupulation
│ │ └── 10.utils - awk, sed, cat, tail, etc. fuck puthon, fuck perl, fuck ruby.
│ ├── 3.terminal
│ │ ├── 1.emulator
│ │ │ ├── 1.st - the suckless terminal emulator. Tiny, easy to understand, customizable, perfect.
│ │ │ ├── 2.termite - Almost as minimal as st, less hackable, more user-freindly.
│ │ │ └── 3.alacritty - 10k fast terminal emulator with sane defualts.
│ │ └── 2.multiplexer
│ │ ├── 1.dvtm-abduco - better tmux, tiny minimal terminal multiplexing, emulates DWM in the tty.
│ │ ├── 2.mtm - micro terminal multiplexer. Simple, but breaks sometimes.
│ │ └── 3.tmux - a bit bloated, but ungodly popular.
│ └── 4.databases
│ ├── 10.filesystem - the true unix way, this wiki is an example of that method.
│ ├── 20.ndb - Plan9's database genarator, tiny, and super powerful.
│ ├── 30.lmdb - high-performance, mmap'd key-value store used in the OpenLDAP project.
│ ├── 40.TinyCBD - Fast simple constant compiled database genarator and interface.
│ └── 50.recutils - set of tools and libraries to access human-editable, plain text databases.
├── 2.make
│ └── software
│ ├── build-systems
│ │ ├── make - The classic, simple, easy, everyone knows it, bread and butter of suckless.
│ │ ├── mk - plan9 replacement of make. Small, minimal, autistic, beautiful.
│ │ └── samurai - implimentation of ninja, ultra minimal compiled built tool.
│ └── languages
│ ├── high-level
│ │ ├── 10.Forth - (Factor && Joy) - The ultimate suckless high-level programming language
│ │ ├── 20.Smalltalk - (Self or maybe Pharo) - God-teir suckless OOP high-level languages.
│ │ ├── 30.Lisp - (scheme) - More user-friendly, and more commonly used, almost as simple as forth.
│ │ ├── 40.Fortran - Not really used anymore, but very simple and minimal
│ │ └── 50.Go - Fuck python, go is the efficient fast compiled, static, suckless alternative.
│ ├── low-level
│ │ ├── 10.ASM - The ultimate minimal language, don't be afraid to use it.
│ │ ├── 20.Forth - More powerful and minimal than C, can fit in 512 bytes
│ │ ├── 30.Basic - Tinybasic is fuckin nothing at all
│ │ ├── 40.C - fuck C++
│ │ └── 50.Zig - Better designed C, but way less supported.
│ ├── other
│ │ ├── 10.Apl - A high-level, based in math, extremely weird and incredibly elegant language.
│ │ ├── 20.Prolog - Also high-level, based in logic, extremely weird and elegent lang as well
│ │ └── 30.Ml - Functional, simple, and based on the Hindley–Milner type system
│ └── scripting
│ ├── 10.Forth - Do I need to say more, forth has any level of abstraction you want.
│ ├── 20.Lisp - (scheme) - Can be implemented in under 3000 lines of C, need i say more.
│ ├── 30.Io - "expressiveness through simplicity"
│ ├── 40.Tcl - Simple syntax leading to some micoscopic implementations
│ ├── 45.Awk - Small pattern-scanning language built for plain text, pipelines, and quick data-shaped programs.
│ ├── 50.Posix_Shell - Sucks balls, but is by far the most portable scripting lang on the planet
│ └── 60.Lua - Small, fast, embeddable scripting language with a tiny implementation and a clean C API.
└── 3.resources
└── sites
├── cat-v.org - one of the best sites out there for minimal software, close to the most extreme end of the software minimalisim spectrum
└── suckless.org - the inspiration for this list, good starting point for minimal software and the unix phliosophy
suggest an entry
Suggestions are accepted by plain-text email only.
Send mail to sm@secpaste.dev using the format below.
Subject: [harm-less] suggest: <name>
Path: <tree/path>
Name: <project/tool name>
URL: <homepage or repo>
License: <license>
Why: <1-3 short lines: why it belongs here>
Size: <rough SLOC / binary size / "unknown">
Status: <active | stable | unmaintained | unknown>
Alternatives: <optional, comma-separated>
Notes:
- plain text only
- no HTML mail
- no AI-generated submissions
- one suggestion per mail (preferred)
Checklist before sending
- It is meaningfully small, understandable, or maintainable.
- You have used it, built it, or read enough of it to justify the recommendation.
- The URL is the primary project source (homepage or canonical repo).
- The path/category is proposed explicitly (where it should live in the tree).
- The "Why" field should explain tradeoffs.
- No binaries, screenshots, or rich-text formatting.