Lask (lambda + task) is a task runner with a small language behind it, giving automation what shell scripts and CI YAML never had: portability, reproducibility, and verification before anything runs.
Lask is for anyone who finds Makefiles and Taskfiles not quite enough, and Dagger too much. The first are screwdrivers from the kitchen drawer; the second, a factory floor of your own to operate — its own engine, its own SDK, a general-purpose language and its entire ecosystem. Lask is the garage in between: install Docker and Lask, and you have everything you need.
The recording above and the excerpt below come from example/01-projects/02-webapp-on-aws, which builds and deploys a full AWS stack from a machine with none of its tools installed.
Why Lask
- Approachable: one
.laskfile is a project, in a syntax borrowed from languages you already write. - Verifiable:
lask checkresolves every name, argument and type before a single command runs, and your editor shows the same errors as you type. - Portable: every command runs in an environment you pin, such as
command { "go" } on #golang:1.22, the same on your laptop and in CI. - Programmable: a task is a typed function, with error handling and concurrency in the language and tasks imported across projects.
- Runnable: a task's signature is its command line, and its doc comment is its
--help. - Secure: secrets are masked in the log and can come from Vault, and imports are pinned by content hash.
Lask is a task runner, not a build system or a CI platform: it replaces what your CI jobs run, not the CI itself. Why Lask covers all of this, with a comparison to make, Taskfile and Dagger.
Install
$ brew tap lask-task-runner/tap $ brew trust lask-task-runner/tap $ brew install lask
Lask also needs a container engine: Docker, Podman or nerdctl (containerd). Installation covers Linux, Windows, building from source, shell completion and the VS Code extension; then Getting started takes you to a first task in about five minutes.
Documentation
The documentation is at https://lask-task-runner.github.io/, with a copy for each release:
- Getting started and Your first real task file: from installing Lask to a CI task of your own.
- Language guide: the whole language, one runnable topic at a time.
- Quick Reference: the language and the CLI on one page.
- Migrating from Make and from GitHub Actions.
- The tools module: the official module of ready-made environments, function by function.
The language specification and the compatibility policy live in this repository, and the site shows them too. To work on Lask itself, see doc/development.md.
Status
Lask is pre-1.0: features are experimental until 1.0, and breaking changes are still possible. See doc/compatibility.md for what stable will mean once released. Until then, feedback shapes what becomes stable.
Feedback
Questions, ideas and feedback of any kind are welcome in GitHub Discussions. Found a bug? Please open an issue.