Installation
RayLimit targets Linux hosts where traffic shaping is managed intentionally. There are two supported starting points:
- install from a release package
- run from a local checkout or local build
Before Installing
RayLimit itself is a Go binary, but practical operator use also depends on host tooling:
command -v tc
uname -a
idThose checks tell you whether the host is Linux, whether the traffic-control userspace tools are present, and whether your current shell has the privileges you expect.
Release Package Path
Use the release path when you want a normal installed layout and a raylimit command in PATH.
tar -xzf raylimit_v0.4.0-beta_linux_amd64.tar.gz
cd raylimit_v0.4.0-beta_linux_amd64
sudo ./scripts/install.shThis installs the binary and the packaged support files to their intended system locations.
Checksum Verification
install.sh verifies the packaged SHA256SUMS before copying anything into place and refuses to continue if a file does not match (a corrupt or tampered package, or a missing sha256sum tool, is rejected). update.sh performs the same check.
For local development against an unsigned or hand-assembled package, bypass verification with --skip-checksum:
sudo ./scripts/install.sh --skip-checksumUse this only when you trust the package source — it disables the integrity guard.
Verify The Installed Path
command -v raylimit
raylimit version
raylimit --helpFirst Installed-Path Smoke Check
sudo raylimit discover
sudo raylimit inspect --pid 1234Local Checkout Path
Use the local path when you want the fastest evaluation or development loop.
Fast Start With go run
go run ./cmd/raylimit --help
go run ./cmd/raylimit versionThis is the fastest way to confirm the checkout is runnable without committing to an install.
Build A Reusable Local Binary
make build
./bin/raylimit --help
./bin/raylimit versionUse the built binary when you plan to repeat the same validation steps several times on one host.
Reproducible Builds
The build stamps a UTC build time into the binary. To make that stamp deterministic (for reproducible release artifacts), set SOURCE_DATE_EPOCH to a fixed Unix timestamp:
SOURCE_DATE_EPOCH=1700000000 make buildWhen SOURCE_DATE_EPOCH is unset, the current time is used; when it is set to a valid epoch, two builds produce byte-identical binaries. Reproducible builds via SOURCE_DATE_EPOCH rely on GNU date (the Linux target).
Local-Path Discovery Check
sudo ./bin/raylimit discover
sudo ./bin/raylimit inspect --pid 1234Privilege Expectations
Dry-run does not require live mutation privileges. Real --execute flows do.
Useful host checks:
command -v tc
sudo -n true
ip link show dev eth0If those checks fail, stay in dry-run mode until the host is ready.
Update And Removal
For a release-install directory:
sudo ./scripts/update.sh
sudo ./scripts/uninstall.shupdate.sh refreshes the managed install from a release directory. uninstall.sh removes RayLimit-managed files without claiming unrelated host state or host-owned traffic rules.