Installation
Install the binary, or run from source with Bun.
The install script
curl -fsSL https://raw.githubusercontent.com/langonrock/langonrock/main/install.sh | shIt detects the operating system and architecture, verifies the checksum, and drops the binary in
~/.local/bin. Two environment variables change what it does:
| Variable | Effect |
|---|---|
LANGONROCK_VERSION | Install this tag instead of the latest |
LANGONROCK_BIN | Install here instead of ~/.local/bin |
The script covers darwin and linux on x64 and arm64. On Windows, download the .exe from
the releases page.
While the repository is private
Anonymous download does not work. install.sh falls back to an authenticated gh release download, so install the GitHub CLI and run gh auth login first, or grab the asset from the
releases page by hand.
Prefer the script over clicking a release asset
The published binaries carry an ad-hoc signature only. That is enough for the kernel to run them
and not enough for Gatekeeper to accept one downloaded through a browser. install.sh and
brew install bypass macOS quarantine, so they avoid the path where a working binary looks broken.
Apple Silicon does not warn about an unsigned binary, it refuses to run it. The kernel sends SIGKILL before any code executes, which surfaces as a program that produces no output and exits 137.
From source
langonrock needs Bun 1.3 or newer. There is no Node fallback for the store
itself, because it uses Bun.file, Bun.Glob, Bun.YAML and zstd.
git clone https://github.com/langonrock/langonrock
cd langonrock
bun install
bun src/cli.ts --helpbun install pulls two runtime dependencies and the development toolchain. The bin entry points
straight at src/cli.ts, so there is no build step before running it.
Building a binary
bun run build --target=bun-darwin-arm64scripts/build.ts wraps bun build --compile. On darwin it also strips the signature Bun writes
and re-signs ad-hoc, which is required rather than cosmetic: Bun 1.3.12 emits a truncated
LC_CODE_SIGNATURE on macOS arm64, and the resulting file is dead on arrival without it.
Six targets are supported: linux-x64, linux-arm64, darwin-x64, darwin-arm64, windows-x64,
windows-arm64. A binary runs about 60 MB, since the Bun runtime is embedded in it.
Where the store lives
Without --data, langonrock uses the platform data directory.
| Platform | Directory |
|---|---|
| Linux | $XDG_DATA_HOME/langonrock, falling back to ~/.local/share/langonrock |
| macOS | ~/Library/Application Support/langonrock |
| Windows | %LOCALAPPDATA%\langonrock |
Precedence is --data, then $LANGONROCK_DATA, then the platform directory. An embedded
connection string with no path means the same thing, so okf://?tenant=acme reads the default
store.
Checking the install
langonrock --version
langonrock --helpDevelopment
bun run lint
bun run format:check
bun run typecheck
bun testThose four commands are exactly what CI runs, on Linux, macOS and Windows, with fail-fast
disabled so one platform failing still reports the others. Commits go through commitlint with the
conventional-commit config, and lint-staged runs ESLint and Prettier on staged files. Pushing a v* tag cross-compiles six binaries,
checksums them, and publishes a release. The release job refuses to run when the tag disagrees with
package.json, which is the cheapest guard against publishing a binary whose --version lies.