A modern CLI framework for Lua.
Let there be light in your terminal.

$ luarocks install lumos

Features

Everything you need to build production-ready CLI tools.

Fluent API

Expressive, chainable method syntax. Define commands, arguments, flags, and actions in one readable call.

Project Generator

Scaffold complete CLI projects with tests, Makefile, and sample commands via lumos new.

Rich UI

Colors, progress bars, spinners, tables, and interactive prompts out of the box.

Portable Bundles

Distribute your app as a single executable with lumos bundle.

Shell Integration

Auto-generate bash, zsh, fish completions, man pages, and Markdown docs.

Security Built-in

Input sanitization, path traversal protection, safe file ops, and shell escaping.

Structured Logging

5-level logger with JSON context, child loggers, and file output support.

Cross-Platform

Works on Linux, macOS, and Windows (WSL) with cross-platform TTY detection.

Quick Start

From zero to CLI in under a minute.

main.lua
local lumos = require('lumos')
local app = lumos.new_app({
   name = 'mycli',
   version = '0.1.0',
   description = 'My CLI app'
})

app:command('hello', 'Say hello')
   :action(function(ctx)
      print('Hello, world!')
      return true
   end)

app:run(arg)

CLI Tool

Scaffold and bundle with built-in commands.

scaffold

$ lumos new

Generate a new CLI project with a single command. Includes tests, Makefile, README, and sample commands.

  • Tests & Makefile included
  • Sample commands scaffold
  • README template
distribute

$ lumos bundle

Bundle your Lua application into a single portable executable. Perfect for distribution.

  • Single binary output
  • Cross-platform support
  • Zero runtime dependencies