NativeLink is an open source high-performance build cache and remote execution server, compatible with Bazel, Buck2, Reclient, and other RBE-compatible build systems. It offers drastically faster builds, reduced test flakiness, and significant infrastructure cost savings.
Go to file
Aleksandar Mladenovic 2a55f1ebd0
Convert usize to u63 in Store trait APIs (#1344)
APIs in `StoreLike` now uses `u62` instead of `usize` It's because
`u64` expresses the size of the data, but `usize` expresses local
memory limits.
2024-09-19 22:24:55 -05:00
.github Delete ~/Applications and iOS simulators/cache from Mac runners (#1334) 2024-09-07 10:54:52 -05:00
deployment-examples Fix format issues in markdown files (#1332) 2024-09-07 18:24:37 +02:00
docs Update docs for RBE exec properties to support GPU etc. (#1350) 2024-09-17 07:53:15 -05:00
integration_tests Fix typos in code comments (#1190) 2024-08-12 23:51:41 +02:00
local-remote-execution Fix format issues in markdown files (#1332) 2024-09-07 18:24:37 +02:00
native-cli Fix Tekton depedency order within Pulumi (#1291) 2024-08-30 13:47:53 +02:00
nativelink-config [Feature] Add Redis Scheduler (#1343) 2024-09-11 10:58:40 -05:00
nativelink-error Release NativeLink v0.5.3 (#1314) 2024-09-04 14:00:04 -05:00
nativelink-macro Release NativeLink v0.5.3 (#1314) 2024-09-04 14:00:04 -05:00
nativelink-metric Release NativeLink v0.5.3 (#1314) 2024-09-04 14:00:04 -05:00
nativelink-metric-collector Release NativeLink v0.5.3 (#1314) 2024-09-04 14:00:04 -05:00
nativelink-proto Release NativeLink v0.5.3 (#1314) 2024-09-04 14:00:04 -05:00
nativelink-scheduler Convert usize to u63 in Store trait APIs (#1344) 2024-09-19 22:24:55 -05:00
nativelink-service Convert usize to u63 in Store trait APIs (#1344) 2024-09-19 22:24:55 -05:00
nativelink-store Convert usize to u63 in Store trait APIs (#1344) 2024-09-19 22:24:55 -05:00
nativelink-util Convert usize to u63 in Store trait APIs (#1344) 2024-09-19 22:24:55 -05:00
nativelink-worker Convert usize to u63 in Store trait APIs (#1344) 2024-09-19 22:24:55 -05:00
src/bin Bump Rust dependencies (#1319) 2024-09-04 10:42:46 -05:00
tools Improve docker image for RBE and re-enable RBE on main (#1326) 2024-09-05 22:50:52 -05:00
.bazelignore [Breaking] Generalize LRE to arbitrary toolchains (#728) 2024-03-19 13:41:53 +00:00
.bazelrc Significantly reduce Bazel test time (#1210) 2024-07-28 08:24:51 +02:00
.bazelversion Bump some Bazel deps (#1176) 2024-07-20 11:03:32 +02:00
.dockerignore Renames the project to nativelink (#463) 2023-12-11 16:43:37 -08:00
.envrc Introduce Nix development flake (#330) 2023-10-20 21:40:34 +02:00
.gitignore Fix a possible infinite loop in RedisStore::update (#1269) 2024-09-17 11:41:30 -06:00
.golangci.yaml Bump flake and Bazel modules (#947) 2024-05-31 11:20:56 +02:00
.rustfmt.toml Set max line length to Rust's defaults (#750) 2024-03-12 05:11:40 +01:00
.vale.ini Polish cloud docs for Bazel and Pants (#1152) 2024-07-15 20:40:03 +02:00
BUILD.bazel Remove nativelink-proto as build dependency (#1209) 2024-07-28 16:02:31 -07:00
Cargo.lock [Feature] Add Redis Scheduler (#1343) 2024-09-11 10:58:40 -05:00
Cargo.toml Revert "Release NativeLink v0.5.2 (#1283)" (#1284) 2024-08-27 16:16:21 -07:00
CHANGELOG.md Release NativeLink v0.5.3 (#1314) 2024-09-04 14:00:04 -05:00
cliff.toml Release NativeLink v0.5.1 (#1252) 2024-08-08 23:21:16 +02:00
clippy.toml All tokio::spawn and related functions must use nativelink's version (#890) 2024-04-26 17:54:42 -05:00
CODE_OF_CONDUCT.md Introduce Vale to lint documentation (#585) 2024-02-13 18:23:02 +09:00
CONTRIBUTING.md Fix format issues in markdown files (#1332) 2024-09-07 18:24:37 +02:00
flake.lock Remove nix2container patch hash workaround (#1296) 2024-08-30 20:27:15 +02:00
flake.nix Migrate docs buildsystem from pnpm to bun (#1268) 2024-09-04 09:59:26 +02:00
GLOSSARY.md Create New Glossary (#957) 2024-06-02 12:06:09 -07:00
LICENSE Change license to Apache 2 license 2022-10-16 17:01:57 -05:00
MODULE.bazel Release NativeLink v0.5.3 (#1314) 2024-09-04 14:00:04 -05:00
Pulumi.yaml Introduce the native CLI (#851) 2024-04-17 05:21:07 +02:00
README.md Update docs generation (#1280) 2024-09-09 18:39:53 +02:00
renovate.json Add renovate.json (#487) 2023-12-20 01:05:30 +01:00
run_integration_tests.sh Update copyright headers (#1172) 2024-07-17 11:09:15 +02:00
SECURITY.md Fix format issues in markdown files (#1332) 2024-09-07 18:24:37 +02:00

enter the shipstorm

Homepage GitHub stars OpenSSF Scorecard OpenSSF Best Practices Slack License

NativeLink is an efficient, high-performance build cache and remote execution system that accelerates software compilation and testing while reducing infrastructure costs. It optimizes build processes for projects of all sizes by intelligently caching build artifacts and distributing tasks across multiple machines.

NativeLink is trusted in production environments to reduce costs and developer iteration times--handling over one billion requests per month for its customers, including large corporations such as Samsung.

NativeLink Explained in 90 seconds

🔑 Key Features

  1. Advanced Build Cache:

    • Stores and reuses results of previous build steps for unchanged components
    • Significantly reduces build times, especially for incremental changes
  2. Efficient Remote Execution:

    • Distributes build and test tasks across a network of machines
    • Parallelizes workloads for faster completion
    • Utilizes remote resources to offload computational burden from local machines
    • Ensures consistency with a uniform, controlled build environment

NativeLink seamlessly integrates with build tools that use the Remote Execution protocol, such as Bazel, Buck2, Goma, and Reclient. It supports Unix-based operating systems and Windows, ensuring broad compatibility across different development environments.

🚀 Quickstart

To start, you can deploy NativeLink as a Docker image (as shown below) or by using our cloud-hosted solution, NativeLink Cloud. It's FREE for individuals, open-source projects, and cloud production environments, with support for unlimited team members.

The setups below are production-grade installations. See the contribution docs for instructions on how to build from source with Bazel, Cargo, and Nix.

📦 Prebuilt images

Fast to spin up, but currently limited to x86_64 systems. See the container registry for all image tags and the contribution docs for how to build the images yourself.

Linux x86_64

curl -O \
    https://raw.githubusercontent.com/TraceMachina/nativelink/main/nativelink-config/examples/basic_cas.json

# See https://github.com/TraceMachina/nativelink/pkgs/container/nativelink
# to find the latest tag
docker run \
    -v $(pwd)/basic_cas.json:/config \
    -p 50051:50051 \
    ghcr.io/tracemachina/nativelink:v0.5.1 \
    config

Windows x86_64

# Download the configuration file
Invoke-WebRequest `
    -Uri "https://raw.githubusercontent.com/TraceMachina/nativelink/main/nativelink-config/examples/basic_cas.json" `
    -OutFile "basic_cas.json"

# Run the Docker container
# Note: Adjust the path if the script is not run from the directory containing basic_cas.json
docker run `
    -v ${PWD}/basic_cas.json:/config `
    -p 50051:50051 `
    ghcr.io/tracemachina/nativelink:v0.5.1 `
    config

❄️ Raw executable with Nix

Slower, since it's built from source, but more flexible and supports MacOS. Doesn't support native Windows, but works in WSL2.

Make sure your Nix version is recent and supports flakes. For instance, install it via the next-gen nix installer.

Caution

Executables built for MacOS are dynamically linked against libraries from Nix and won't work on systems that don't have these libraries present.

Linux, MacOS, WSL2

curl -O \
    https://raw.githubusercontent.com/TraceMachina/nativelink/main/nativelink-config/examples/basic_cas.json

nix run github:TraceMachina/nativelink ./basic_cas.json

See the contribution docs for further information.

✍️ Contributors

NativeLink contributors

🤝 Contributing

Visit our Contributing guide to learn how to contribute to NativeLink. We welcome contributions from developers of all skill levels and backgrounds!

📊 Stats

Alt

📜 License

Copyright 20202024 Trace Machina, Inc.

Licensed under the Apache 2.0 License, SPDX identifier Apache-2.0.