Install and update
One line installs L80. One command keeps the binary, the tools it pins and the agent skills you installed in step with each other.
Install
$ curl -fsSL https://launch80.com/install.sh | shRelease builds exist for macOS and Linux on amd64 and arm64. The script downloads L80_<os>_<arch>.tar.gz from the latest GitHub release, checks it against the release's checksums.txt, refuses on a mismatch, and writes one binary to ~/.local/bin/L80 (plus a lowercase l80 link when nothing else has that name). If the directory is not on your PATH it prints the line to add. The whole script is on one page if you want to read it before running it.
Then install uv, the only prerequisite: L80 uses it to fetch the pinned Python tools.
$ curl -LsSf https://astral.sh/uv/install.sh | shInstall somewhere else, or a specific version
Pass --prefix to install somewhere other than ~/.local/bin, and --version vX.Y.Z for a specific release.
$ curl -fsSL https://launch80.com/install.sh | sh -s -- --prefix /usr/local/binBuild from source
Anywhere without a release build, or to hack on L80 itself. Needs Go.
$ git clone https://github.com/launch80/L80-CLI.git && cd L80-CLI$ make install # -> ~/.local/bin/L80Update
$ L80 update # the binary, the pinned tools and the installed skills$ L80 update --check # report what is out of date; change nothing$ L80 update --json # the same report, for an agent$ L80 update --no-prefetch # skip downloading tools now; each downloads on first useOne command brings the whole setup current, in this order:
- The binary. Downloads the latest release, verifies its checksum, replaces itself in place, then hands over to the new binary so the steps below use the new release's pins and skills.
- The pinned tools. Builds each tool's pinned commit now rather than on first use. A copy on PATH that
uv tool installput there and that is older than the pin is upgraded to it. - The skills. Every L80 skill installed as a copy is refreshed. A
--devsymlink is left alone, and a skill that is not installed stays uninstalled. - Everything else is reported, not guessed at. An override such as
L80_BETTERBENCHpointing at an old copy cannot be fixed from inside L80; the report names the profile line that sets it, e.g.~/.bashrc:129, and says what to do.
Re-running the install script is equivalent to L80 update.
The update report
--json emits one object an agent can act on. Exit 0 means nothing is left; exit 12 means actions lists something only a person can change. --check always exits 0 and puts “Run L80 update” first in actions when an update would change something.
| field | holds |
|---|---|
| binary | current, latest, update_available, installed, path |
| tools[] | status: current, upgraded, stale, missing or failed, plus a fix when needed |
| skills[] | current, updated, outdated, linked or not_installed |
| actions[] | One exact instruction per thing L80 could not do itself |
| up_to_date | true when nothing is left to do |
Coming from 0.4
The repository was renamed from launch80/L80-Skills to launch80/L80-CLI. Older binaries keep updating through GitHub's redirect from the old name.
Uninstall
$ rm ~/.local/bin/L80 ~/.local/bin/l80$ rm -rf ~/.config/L80 # token and publish history; keep it if you may come back