seal is a cross-platform scripting tool that emphasizes correctness, performance, and fun.
It can surreptitiously replace your shell and single-use Python scripts with Luau scripts, making them more readable to everyone. Or you can use it to write a full application.
Some features:
- Faster than Python for general purpose scripting.
- seal projects are more scalable than shell scripts.
- Built in terminal manipulation for TUIs.
- Powerful multithreading.
- 1103 handcrafted error messages.
Grab the latest release or check out these install instructions for a detailed walkthrough.
To get started, you just need:
- A text editor (VSCode, Zed, and nvim are supported by Luau Language Server).
- Luau Language Server installed in your editor.
- The seal executable in your
$PATH
To start a new project with seal, make a new directory, run seal setup project inside it, and open it up with code .
seal ./filename.luauruns a Luau file with seal.seal runruns the project at your current working directory.seal compilebundles and compiles the project at your current working directory into a standalone executable for your platform.
Check out the full usage instructions for more.
Check out the programming intro to get started or the standard library reference for all current features and APIs. In supported editors, you can take advantage of modern tooling such as strict typechecking and autocomplete, inline documentation, automatic imports, etc.
Some quick examples:
- HTTP - calling an API with API key
- FS - file watching (upload files added to folder)
- FS - remove files older than a week
- TUI - two column option picker
- More featureful
@extralibrary. - Custom and customizable
seal setupscripts. - Ecosystem of external libraries to expand seal's functionality with native bindings.
- Cross-platform GUI and input automation libraries.
- Dedicated tooling integrations such as extensions and an MCP server.
Join the Discord if you want to talk about seal, need help, or want to contribute!
seal wants to empower you to write correct code that doesn't explode at runtime. In most cases, runtime errors will be expressly documented, and/or returned as an error type to facilitate nonthrowing error handling with the typechecker.
If you encounter a bug, panic, or security vulnerability, please make an issue in this repo right away; you may attach a repro or send one privately to dev@deviaze.com or @deviaze on Discord.
