Skip to content

Releases: PdYrust/RayLimit

RayLimit v0.4.0-beta

RayLimit v0.4.0-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Jun 09:01

RayLimit is a Linux-native Xray speed limiter toolkit focused on practical host-side traffic control.

This public beta advances the operator-facing surface with broader runtime compatibility, more robust tc/nft handling, and a cleaner, more maintainable codebase while keeping the currently practical limiter families at the center of the release:

  • Inbound speed limiter
  • Outbound speed limiter
  • IP speed limiter

Highlights

  • Sanaei and other Xray fork support with prefix-match runtime detection for binaries such as xray-linux-amd64 and sanaei-*
  • Plain-text wire-format parsing for Xray StatsService responses, including the user>>>email>>>online format used by Sanaei and compatible forks
  • StatsUserOnline capability detection so misconfigured Sanaei runtimes surface a clear actionable diagnostic instead of silently reporting no sessions
  • Plain-text fallback parsers for tc -j and nft -j output so older or BusyBox-style builds no longer fail with invalid character 'c' looking for beginning of value
  • Idempotent re-apply behavior so upload-then-download and reapply flows no longer collide with RTNETLINK answers: File exists
  • New global runtime-binary override flags with matching environment variables:
    • --xray-binary / RAYLIMIT_XRAY_BINARY
    • --container-cli / RAYLIMIT_CONTAINER_CLI (podman and nerdctl friendly)
    • --tc-binary / RAYLIMIT_TC_BINARY
    • --nft-binary / RAYLIMIT_NFT_BINARY
  • New operational flags:
    • --log-level / RAYLIMIT_LOG_LEVEL for diagnostic verbosity
    • --skip-privilege-check / RAYLIMIT_SKIP_PRIVILEGE_CHECK for capability-based deployments
    • --skip-checksum for development installs
  • Reproducible builds via SOURCE_DATE_EPOCH and automatic SHA256SUMS verification on install and update
  • Signal-aware CLI so SIGINT and SIGTERM cancel in-flight subprocesses cleanly
  • Hardened install scripts with manifest quoting, symlink-aware writability checks, and shellcheck-enforced CI
  • Reworked and expanded documentation with Sanaei examples, troubleshooting entries for the three real-world failure modes, and an updated runtime-targeting page covering fork detection signals
  • Linux release packages for amd64 and arm64
  • Installer, updater, and uninstaller scripts
  • Makefile-based build and packaging flows

What changed in v0.4.0-beta

This release significantly broadens runtime compatibility and hardens the traffic-control lifecycle.

The discovery layer now accepts the full Xray-family binary namespace through prefix matching, so forks and OS/arch-suffixed binaries such as xray-linux-amd64, xray-darwin-arm64, sanaei, and sanaei-linux-amd64 are detected on both host and Docker runtimes. The detected binary identity is threaded through to the actual xray api invocation, so live session evidence works against forks that do not install a literal xray binary on PATH. Docker detection now also consults container labels, published API ports, and binary-derived config-path hints, and surfaces a clear NoMatches issue when containers are scanned but none match.

The Xray StatsService path now handles both JSON and plain-text wire formats defensively. Sanaei's user>>>email>>>online records and the corresponding user>>>email>>>online>>>ip online-IP lines are parsed explicitly, with email-segment verification so mis-attributed evidence is rejected rather than trusted. When StatsUserOnline is not enabled in a Sanaei config, the operator now receives a typed diagnostic naming the missing service and the config key to add, instead of a silent empty result.

The tc and nftables layers now fall back to plain-text parsing when -j JSON output is unavailable or silently ignored, removing the invalid character 'c' failure mode on older or stripped builds. Apply and reapply flows are idempotent through the mark-attachment path plus an execution-time recovery for EEXIST and EBUSY, so upload-then-download on the same device no longer tears down the upload class. A read-error field on the snapshot lets reconcile degrade gracefully instead of re-applying everything on every tick.

The operator surface gains a coherent set of global override flags and environment variables for the Xray, container CLI, tc, and nft binaries, plus a --log-level flag, a --skip-privilege-check escape hatch for CAP_NET_ADMIN deployments, and a --skip-checksum development install path. The install scripts now verify SHA256SUMS by default and support reproducible builds via SOURCE_DATE_EPOCH. The CLI is signal-aware, the privilege check probes CAP_NET_ADMIN rather than only euid == 0, log fields are quoted to prevent log-forging, and shellcheck is enforced in CI.

The codebase has been cleaned of dead infrastructure: the unused control-loop, restart-recovery, garbage-collection, and runtime-evidence churn clusters have been removed, stale phase references and aspirational daemon comments have been eliminated, and formatting and error-wrapping style are now uniform across internal/tc, internal/discovery, and internal/cli. Wallet and donation content has been removed from the repository and documentation.

This release also continues the cleanup and unification work across CLI behavior, reporting, managed-state handling, and documentation so the operator surface is more consistent and easier to reason about.

Installation

Documentation:
https://pdyrust.github.io/RayLimit/

Repository:
https://github.com/PdYrust/RayLimit

Telegram:
https://t.me/PdYrust

Release assets

This release provides Linux package archives and SHA256 checksum files for the supported architectures.

Beta status

RayLimit is currently released as a public beta. The supported limiter families in this release are actively maintained and documented, and the project continues to evolve toward a cleaner and more practical operator experience.

RayLimit v0.3.0-beta

RayLimit v0.3.0-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Apr 20:18

RayLimit is a Linux-native Xray speed limiter toolkit focused on practical host-side traffic control.

This public beta advances the IP speed limiter into a more complete and operator-focused model while keeping the currently practical limiter families at the center of the release:

  • Inbound speed limiter
  • Outbound speed limiter
  • IP speed limiter

Highlights

  • New IP aggregation model for runtime-local all-IP shaping:
    • shared
    • per_ip
  • --ip all now supports an explicit aggregation choice through --ip-aggregation
  • Evidence-expanded per_ip flow built on current live Xray-backed client IP evidence
  • More complete reconcile-aware behavior for IP limiting across:
    • apply
    • remove
    • no-op
    • replace / reapply
  • Cleaner and more consistent CLI reporting, grouped output, diagnostics, and decision summaries
  • Improved operator-facing help text, validation, and runtime output
  • Expanded and refined documentation for:
    • shared all-IP baseline behavior
    • evidence-driven per_ip
    • specific-IP targeting
    • troubleshooting and validation guidance

What changed in v0.3.0-beta

This release significantly improves the IP limiter model.

The ip limiter now supports two explicit all-IP aggregation styles:

  • shared: one runtime-local all-IP baseline
  • per_ip: evidence-expanded concrete per-client-IP shaping based on currently visible live client IP evidence

Specific IP targeting remains available for direct concrete targeting, including explicit per-IP overrides and no-limit exceptions where supported.

The new per_ip path is integrated into the reconcile-aware flow and now has clearer planning, reporting, and concrete execution behavior across the supported command surface.

This release also continues the cleanup and unification work across CLI behavior, reporting, managed-state handling, and documentation so the operator surface is more consistent and easier to reason about.

Installation

Documentation:
https://pdyrust.github.io/RayLimit/

Repository:
https://github.com/PdYrust/RayLimit

Telegram:
https://t.me/PdYrust

Release assets

This release provides Linux package archives and SHA256 checksum files for the supported architectures.

Beta status

RayLimit is currently released as a public beta. The supported limiter families in this release are actively maintained and documented, and the project continues to evolve toward a cleaner and more practical operator experience.

RayLimit v0.2.0-beta

RayLimit v0.2.0-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Apr 08:49

RayLimit is a Linux-native Xray speed limiter toolkit focused on practical host-side traffic control.

This public beta refines RayLimit into a cleaner and more operator-focused release built around the limiter families that are currently the most practical and concrete:

  • Inbound speed limiter
  • Outbound speed limiter
  • IP speed limiter

Highlights

  • Simplified supported limiter scope focused on current practical operator use
  • New runtime-local IP baseline model with:
    • --ip all baseline shaping
    • per-IP override limits
    • per-IP unlimited exceptions
  • Cleaner and more consistent behavior across apply, remove, no-op, and reapply flows
  • Improved precedence and rule-handling clarity for the supported limiter families
  • Polished CLI with clearer validation, help text, usage examples, and runtime-facing output
  • Reworked and expanded documentation with a cleaner foundation and more complete operator guidance
  • Linux release packages for amd64 and arm64
  • Installer, updater, and uninstaller scripts
  • Makefile-based build and packaging flows

What changed in v0.2.0-beta

This release intentionally narrows RayLimit to the limiter families that are currently the strongest and most practical for real operator use:

  • ip
  • inbound
  • outbound

The previous UUID and connection limiter paths have been removed from the supported release scope in this version. This keeps the product cleaner, more predictable, and more maintainable for current real-world usage.

The IP limiter has been expanded into a more practical operator model, including:

  • runtime-local baseline shaping for all visible IP traffic
  • specific per-IP override limits
  • specific per-IP no-limit exceptions

This release also improves the project presentation and operator experience with cleaner documentation, more practical examples, and a more consistent release-facing product surface.

Installation

Documentation:
https://pdyrust.github.io/RayLimit/

Repository:
https://github.com/PdYrust/RayLimit

Telegram:
https://t.me/PdYrust

Release assets

This release provides Linux package archives and SHA256 checksum files for the supported architectures.

Beta status

RayLimit is currently released as a public beta. The supported limiter families in this release are actively maintained and documented, and the project continues to evolve toward a cleaner and more practical operator experience.

RayLimit v0.2.0-beta

RayLimit v0.1.0-beta

RayLimit v0.1.0-beta Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Mar 22:12

RayLimit is a Linux-native Xray speed limiter toolkit focused on practical host-side traffic control.

This public beta includes validated and actively developed support for these speed limiter families:

  • Inbound speed limiter
  • Outbound speed limiter
  • IP speed limiter
  • UUID speed limiter

The connection speed limiter foundation is present, and broader support is planned for future releases.

Highlights

  • Polished CLI with practical help, examples, and clearer runtime output
  • Linux release packages for amd64 and arm64
  • Installer, updater, and uninstaller scripts
  • Makefile-based build and packaging flows
  • Public documentation site with operator and technical guidance
  • UUID speed limiter coverage for direct attachment and supported non-IP execution scopes

Installation

Documentation:
https://pdyrust.github.io/RayLimit/

Repository:
https://github.com/PdYrust/RayLimit

Telegram:
https://t.me/PdYrust

Release assets

This release provides Linux package archives and SHA256 checksum files for the supported architectures.

Beta status

RayLimit is currently released as a public beta. The implemented speed limiter families are validated and actively developed, and broader development continues for future releases.