Lilush: The Next Small Thing

Lilush logo

The whole stack for networked software, in one binary under 2MB.

Lilush has its own async I/O runtime on epoll, its own TLS 1.3 implementation, an HTTP client and server, DNS client/server, an embedded key/value database with full text search, a markdown renderer, and a terminal UI toolkit.

There is nothing to install alongside it, and nothing to audit outside its sources.

This page is served by RELIW, a web server written in Lilush. The source browser at git.lilush.link is lilgit, a cgit alternative written in Lilush.

Linux only, x86_64 only. LuaJIT with FFI disabled, Lua 5.1 semantics, built against musl. Lilush Shell requires Kitty-compatible terminal. Beta, pre-1.0, core module APIs may still break between minor versions.


On naming


The runtime, lilu

Everything needed to write and ship a networked tool, in one file:


The shell, lilush

The full build adds a modular Linux shell (as in Bash, Csh or Fish). Lilush Shell features:

The builtins are not wrappers around system tools, they are part of the binary. A machine with lilush on it has a shell, an editor, a pager, a DNS client and a WireGuard CLI, whether or not it has anything else.

Lilush Shell relies on a number of Kitty protocol extensions — keyboard protocol, text sizing, terminal graphics. All features are only guaranteed in Kitty, Ghostty, or terminals that fully implement those extensions.


Graphics & Audio

Besides shell the full lilush build includes graphics & audio engines, built specifically for LEV async I/O, and can be used as a game engine framework.


Get started

# Download the latest release and its signature
BINARY="lilush"   # or "lilu" for the runtime-only build
curl -fLO "https://lilush.link/releases/latest/${BINARY}"
curl -fLO "https://lilush.link/releases/latest/${BINARY}.sig"

# Verify it against the release signing key
cat > allowed_signers <<'EOF'
vladimir@deviant.guru ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICEWU0xshVgOIyjzQEOKtjG8sU8sWJPh25CP/ISfJRey
EOF
ssh-keygen -Y verify -f allowed_signers -I vladimir@deviant.guru \
  -n file -s "${BINARY}.sig" < "${BINARY}"

# Run it
chmod +x "${BINARY}"
./lilush

Install locally:

install -Dm755 lilush ~/.local/bin/lilush   # make sure ~/.local/bin is in PATH

All releases are signed with my SSH key.

Each release also carries a signed SHA256SUMS. See the README for the full verification procedure and for building from source.


Packages

Lilush has its own packaging system, LILPACK. LILPACKs are signed packs installed at runtime, or compiled directly into a custom static binary.

See the LILPACK docs and the HTTP repo for available packages.


Contacts