Documentation menu

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 | sh

Release 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 | sh
Install 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/bin

Build 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/L80

Update

$ 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 use

One 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 install put there and that is older than the pin is upgraded to it.
  • The skills. Every L80 skill installed as a copy is refreshed. A --dev symlink is left alone, and a skill that is not installed stays uninstalled.
  • Everything else is reported, not guessed at. An override such as L80_BETTERBENCH pointing 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.

fieldholds
binarycurrent, 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_datetrue 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