Hilbish: a Lua-configured shell where the prompt is a program
✨🌙 A modern, advanced, comfortable Lua-configured (Unix/Windows) shell for everyone. 🌺
At a glance
- What is it?
- Hilbish is a Go implementation of a shell whose configuration language is Lua rather than shell script, so your prompt, aliases and keybindings are ordinary Lua modules, at the cost of leaving sh syntax behind except in one runner mode.
- Who is it for?
- Adopt Hilbish if you write Lua, or want a shell whose configuration is a real programming language with modules and a module API, and if you are willing to rewrite your aliases and prompt in Lua. Do not adopt it if your muscle memory and your scripts are sh, because traditional shell syntax survives only in the interactive runner mode.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The configuration language is the product
Hilbish is described as an extensible shell designed to be highly customizable, configured in Lua, and providing a good range of features, with the aim of being easy to use for anyone and powerful enough for those who need more. The README gives the motivation for choosing Lua directly: it is simpler and better to use than old shell scripts, and it is fine for basic interactive shell uses, while supporting both Lua and sh interactively. That last clause is the important qualification, because the README is also explicit that traditional shell syntax is only usable in that one place, and everything else is Lua and aims to be infinitely configurable. The audience is a Lua programmer who wants their terminal configured like an application rather than like a pile of aliases, and the project is MIT licensed with the images and assets under CC-BY-SA 4.0.
Two editions, and the difference is which Lua runs your code
Hilbish comes in two editions, Standard and Midnight, and the distinction is a genuine architectural choice rather than a branding one. The Standard edition uses a pure-Go written Lua implementation and is the default. The Midnight edition uses a binding to the original C Lua to run Lua code instead, and it is offered as a feature in case you want to use a Lua library written in C, or LuaJIT, but the README says it should not be used for other reasons. That framing tells you the trade in one line. Pure Go means a single static binary, easy cross compilation and no C toolchain at runtime, and it also means the Lua C extension ecosystem is unavailable. Midnight means you get the real Lua, the real C modules, LuaJIT if you want it, and the dependency on a system Lua library. The repository makes the two-worlds split visible in the source, with separate moonlight/ and nature/ directories and two Lua binding dependencies, one of them replaced by a fork maintained by the same author.
Cloning and building
The build needs Go 1.22 or newer and Task, the task runner, whose install method depends on your operating system. The clone has to be recursive, and the README says why: some Lua libraries are submodules.
git clone --recursive https://github.com/sammy-ette/Hilbish
cd Hilbish
go get -d ./...The standard build is a single command.
taskIf you want the latest tagged stable version rather than the working tree, the README gives a way to check out the most recent tag and build that instead.
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
task buildThe Midnight edition has its own task, and the Lua version can be selected with the LUA environment variable, which the README says Fedora users require in order to compile against the right Lua library, using the luadash suffix for systems whose library is named like liblua-5.4 with a dash. The README also notes that Hilbish is only officially supported on Lua 5.4. After the build, a sudo task install puts it on your system globally.
A Go program with a Lua runtime bolted in
The repository layout shows how much of the shell is Go and how much is Lua. At the root sit api.go, lua.go, module.go, complete.go for completion, job.go with separate unix and windows variants, os.go, pprof.go, timer.go, timerhandler.go, userdir.go and vars.go with per-platform variants for Darwin, Unix and Windows, plus init_windows.go and separate signal_unix.go and signal_windows.go files. There are directories for libs/ with the bundled Lua modules, golibs/ for the Go side of those modules, defs/ for API definitions, types/, util/, cmd/, tests/ and a moonlight/ directory for the Midnight edition, plus a website/ directory holding the documentation site. The go.mod is instructive. It depends on two separate Lua implementations, golua and aarzilli/golua, with replace directives pointing both at the author's own forks, and it replaces mvdan.cc/sh/v3 with the author's fork of that shell parser library. The import of sh/v3 tells you where the runner mode comes from: parsing traditional shell syntax is delegated to a Go shell parser rather than reimplemented.
Where Hilbish is the wrong choice
There are three cases, and the first is the one the README states most plainly. Hilbish is not guaranteed to work properly on Windows starting from the 2.0 version: it will still compile, but functionality may be lacking, and the project asks contributors to comment on the Windows discussion thread. For a Windows user that is disqualifying on its own. The second is script portability. Because traditional shell syntax survives only in the interactive runner mode, your existing .sh scripts, your Makefile targets, your CI commands and every other shell script on the machine are outside the language, which means Hilbish is a personal shell rather than a replacement for /bin/sh. The third is the Lua implementation itself: the Standard edition runs a pure Go Lua, and while that removes a C toolchain dependency, it also means C extension modules do not load, and if your Lua work depends on the wider C ecosystem the Midnight edition exists, which brings the system Lua requirement back. The alternative worth naming is keeping a POSIX shell and putting the complexity into a separate layer, such as a prompt framework, with the advantage that nothing you already have breaks. Hilbish is for the person who wants their terminal to be a Lua program and is willing to own that consequence.
Maintenance, contribution and where the project stands
The repository is not archived and the last push was on 2026-10-17, so the tree is being worked on. The tagged releases are v2.3.2 in July 2024, v2.3.3 in November 2024 and v2.3.4 in December 2024, which is a slower release cadence than the commit activity suggests, so the working tree is ahead of the last packaged version. The README points to the install page on the project website for distributed binaries from GitHub or other package repositories, which is the sensible route for most users, and the compiling instructions exist for people who need to build it themselves. The contribution guidance is brief and welcoming, with a CONTRIBUTING.md, a code of conduct and a help wanted label on the issue tracker. There is a CHANGELOG.md at the root, a .hilbishrc.lua file which is the startup configuration, and a .luarc.json for the Lua language server, which suggests the project expects contributors to work with editor tooling that understands Lua.
Editorial conclusion
Adopt Hilbish if you write Lua, or want a shell whose configuration is a real programming language with modules and a module API, and if you are willing to rewrite your aliases and prompt in Lua. Do not adopt it if your muscle memory and your scripts are sh, because traditional shell syntax survives only in the interactive runner mode. Verify first which Lua you need, since the standard edition uses a pure Go Lua implementation while the Midnight edition binds the C library, and note that Windows support is explicitly not guaranteed since version 2.0.
Frequently asked questions
What is Hilbish and what language configures it?
Hilbish is an extensible shell written in Go that is configured in Lua rather than shell script. The README gives the motivation as Lua being simpler and better to use than old shell scripts, and says the shell is fine for basic interactive use and supports both Lua and sh interactively.
What is the difference between the Standard and Midnight editions?
The Standard edition uses a pure-Go written Lua implementation and is the default, while the Midnight edition uses a binding to the original C Lua. Midnight is offered for using a C written Lua library or LuaJIT, and the README says it should not be used for other reasons.
How do I compile Hilbish from source?
You need Go 1.22 or newer and Task. Clone the repository with --recursive because some Lua libraries are submodules, run go get -d ./..., then run task, or task build after checking out the latest tag for a stable build. The Midnight edition is built with task midnight, and sudo task install installs the shell globally.
Does Hilbish work on Windows?
Not reliably. The README states that Hilbish is not guaranteed to work properly on Windows starting from the 2.0 version, that it will still compile but functionality may be lacking, and it asks contributors to comment on the Windows discussion thread to help improve the situation.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/sammy-ette-hilbish)Was this useful?