Repository navigation
feat(install): support macOS and install skills in the curl installer - #1057
JackNDwyer wants to merge 5 commits into
Conversation
install-cli.sh (served at get.livekit.io/cli) now installs on macOS as well as Linux, picking the darwin archive for Intel or Apple silicon. It no longer needs jq or sha256sum, which older macOS lacks, and creates /usr/local/bin when a fresh Mac doesn't have it. LK_INSTALL_PATH installs elsewhere. After installing, it runs `lk skills install --global --yes` when someone is watching (stdout is a terminal) or LK_INSTALL_SKILLS=1, and skips it in CI, as root, or with LK_INSTALL_SKILLS=0. A failure there doesn't fail the install. It also warns when another lk, such as Homebrew's, comes first on PATH. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With LK_INSTALL_PATH=.../bin/, the PATH check compared .../bin//lk to the .../bin/lk that command -v reports and warned that lk shadows itself.
showBanner only checked that stderr is a terminal, so the install script's `lk skills install` step printed the banner mid-install: stderr is the user's terminal there even though stdin is the script. Coding agents that call lk hit the same thing. Gate it on SkipPrompts too (stdin isn't a terminal, or --yes), the signal the prompts already use. A person at a terminal still sees it on their next command.
…ent is found When lk detects no coding agent, the script told the user to run `lk skills install --global` to try again, which can't succeed. Say to run it once a coding agent is installed, which also covers a transient failure.
|
|
On Intel Macs Homebrew's prefix is /usr/local, so brew install livekit-cli puts a symlink at /usr/local/bin/lk, the script's default target. The mv replaced it with the binary silently: the PATH warning can't fire because command -v lk matches the install path, and the directory is user-writable so there's no sudo prompt. brew upgrade then fails with "Target already exists". This script only ever makes livekit-cli a symlink, never lk, so a symlink there is another package manager's: stop before the download and say to brew uninstall or set LK_INSTALL_PATH.
ShayneP
left a comment
There was a problem hiding this comment.
Added 3 commits to fix some display + error message nits, and 1 commit to fix an issue w/ Intel Macs where you couldn't update.
|
Thanks @ShayneP for the fixes and the approval. We talked about this a bit in the DevEx sync, and we think Homebrew should stay the primary way to install on Mac, since you get signing, auto-updates and a clean uninstall with it. This PR keeps it that way: the README still leads with brew install livekit-cli, and the script is there as backup for Linux and Macs without Homebrew Per today's meeting, @rektdeckard, if you think Mac users should only install through Homebrew, I can drop macOS from the script and keep it Linux-only. |
What
install-cli.sh(whatget.livekit.io/cliserves) now installs on macOS as well as Linux, using the existing darwin release archives for Intel and Apple silicon.jqorsha256sum, which macOS before 15 doesn't ship: the version comes from where/releases/latestredirects, and the checksum falls back toshasum -a 256./usr/local/binif a fresh Mac doesn't have it.LK_INSTALL_PATHinstalls somewhere else, such as a user-level folder that needs nosudo.lk skills install --global --yes, which installs LiveKit's skills and the Docs MCP server for the coding agents it finds. It runs when stdout is a terminal (undercurl | bash, stdin is the script) or withLK_INSTALL_SKILLS=1, and is skipped in CI, as root, or withLK_INSTALL_SKILLS=0. A failure there is a warning, not a failed install.lk, usually Homebrew's, comes first onPATH, or when the install folder isn't onPATH.Why
This is the second half of DEVX-843: one command that installs the CLI, the Docs MCP server and the skills, so coding agents can build LiveKit agents from the start (DEVX-840). Mac users had only Homebrew, which can't run that step. The first half, a one-time offer in
lkitself, is #1056.get.livekit.io/cliredirects to this file onmain, so merging ships it immediately; there's no release step.How to verify
Without touching
/usr/local/bin, run the branch's script into a temporary folder, with a test home that has a Claude Code folder:Expect the darwin (or linux) archive to download and pass the checksum,
$T/bin/lk --versionto print the latest version, and seven skills in$T/home/.claude/skillswith the Docs MCP server added. WithLK_INSTALL_SKILLS=0orCI=1, no skills are installed.What I tested on macOS 26 (Apple silicon): the full install with skills, the skip paths (no terminal,
LK_INSTALL_SKILLS=0,CI=1), no coding agents (warning, exit 0), and the HomebrewPATHwarning. With a stubbeduname, Linux x86_64, Linux aarch64 and Intel macOS each downloaded the right archive, passed the checksum and installed the right binary. Not tested: the default/usr/local/bininstall withsudo, a real Linux machine, and shellcheck (Docker wasn't running locally;bash -npasses).🤖 Generated with Claude Code