Repository navigation
Expand file tree
/
Copy pathllms-small.txt
More file actions
5297 lines (3630 loc) · 214 KB
/
Copy pathllms-small.txt
File metadata and controls
5297 lines (3630 loc) · 214 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# NativeLink: nativelink.com in prose, with the abridged documentation
> NativeLink is a remote build cache and remote execution platform written in
> Rust, for build systems that speak the Remote Execution API: Bazel, Buck2,
> Siso, Goma, Pants, BuildStream, and CMake via recc. One binary is the cache,
> the scheduler and the worker depending on its configuration. It is
> source-available (FSL-1.1-Apache-2.0, converting to Apache 2.0) and free to
> self-host, with two Business Source modules that need a licence for shared
> production use. Built by Trace Machina.
This file is generated by `web/apps/web/scripts/gen-llms.ts` from
`web/apps/web/lib/llms.ts`, the blog posts under `web/apps/web/content/posts`, and the
documentation corpus built by `web/apps/docs/scripts/gen-llms.mjs`. Regenerate it; do
not hand-edit it.
Every page below is delimited by a heading of the form `# https://nativelink.com/<path>` or
`# https://docs.nativelink.com/<path>`, giving that page's canonical URL. The site's pages are
rendered in prose; the documentation is the abridged corpus (headings and the
prose that opens each section, without code samples, tables or components).
For the full documentation, every blog post in full, or the code samples,
fetch /llms-full.txt.
# https://nativelink.com/
**NativeLink: build infrastructure for the agentic era**: When agents write your code, your build system is the bottleneck. NativeLink is the high-performance remote build cache and remote execution platform for Bazel and beyond.
NativeLink is a remote build cache and remote execution platform written in
Rust. It keeps builds fast while a codebase, and the agents working on it,
multiply. It is source-available, self-hostable in minutes, and trusted in
production by thousands of developers.
**What it does.** Content-addressable storage means unchanged code never
compiles twice across a team, its CI, and its coding agents; every cache hit
is a build nobody pays to run. Remote build execution distributes compilation
across as many cores as a job needs and releases them when it is done: no
idle workstations, no idle workers, no idle bill.
**The numbers the site leads with.**
- 4 to 15 times faster builds, demonstrated on LLVM, one of the largest C++
codebases in the world.
- More than ten billion build requests a month served in production.
- Ten minutes from Docker startup to a first cache hit.
- Zero build-system rewrites: Bazel, Buck2, Siso, Goma, Pants, BuildStream,
Soong, and CMake via recc all speak to it as they are.
**Wired into coding agents.** The NativeLink MCP server gives Claude Code,
Cursor and Codex five real tools: generate an optimal Bazel configuration,
fetch documentation and best practices, analyse build performance, watch
files and rebuild on change, and list recent builds from the Build Event
Protocol. An agent configures remote caching and tunes a build without
leaving the editor. The MCP server is part of NativeLink Enterprise and
requires an Enterprise licence; it is not in the open repository. Everything
else the site offers a machine reader is listed under /agents.
**Secure by default.** SSO, signed inputs, end-to-end packet integrity.
Source, artifacts and the supply chain stay locked down.
**Why Rust.** Memory-safe, race-free, and no garbage collector to stall the
hot path, which is how one cluster serves ten billion requests a month.
**Works with what you have.** C++, Rust, Python, Go and more. Bazel, Buck2,
Siso, CMake. AWS, GCP, Azure, or your own hardware. No lock-in.
**Built for the codebases that shape the physical world.** Robotics and
autonomous systems, semiconductors and EDA, consumer electronics and mobile,
developer infrastructure and operating systems, AI and ML platforms, and
browsers and web platforms (Chromium and its descendants, through Siso).
**When agents commit code, the build system is the last honest checkpoint.**
Agents commit faster than humans can review and pull dependencies humans
never would. NativeLink turns every build into structured, observable data:
every artifact hashed, every dependency traceable, every action programmable.
It is the substrate that security, compliance and observability tooling has
been waiting for, at agent speed.
**Companies NativeLink is building with**, as shown on the home page: Menlo
Security, Citrix, Tesla, Meta, Samsung and Third Wave Automation.
> "Running NativeLink in production with great results. Great work folks."
> Mustafa Gezen, Rocky Linux.
# https://nativelink.com/product
**Product**: One platform: remote caching, remote execution and observability in a single Rust-native binary, for codebases that grow faster than they can be provisioned.
NativeLink unifies remote caching, remote execution and observability into a
single Rust-native platform. Four pillars, one engine:
- **Remote cache: cache once, reuse forever.** Content-addressable storage
deduplicates every artifact a team produces. If a teammate, CI, or an agent
has already built it, it comes back in milliseconds. More than ten billion
requests a month.
- **Remote build execution: distribute across every core you have.** Offload
compilation and tests to a worker fleet that scales horizontally on AWS,
GCP or bare metal. Hermetic by design, deterministic by default.
Specialised hardware (GPUs, ARM, Apple Silicon) is supported natively.
4 to 15 times faster builds.
- **Self-host: run it on your own infrastructure.** One Docker command for
the source-available release; dedicated infrastructure when scale demands
it. Same code path, same performance, under ten minutes to a first hit.
- **Built on Rust: performance that does not stall.** No garbage collector,
no race conditions at scale, no mystery latency spikes, zero GC pauses.
**Security and provenance.** When humans commit code you need traceability;
when agents commit code you need it doubly. Every input is explicit and every
output verifiable: SSO/SAML (Okta, Azure AD, Google Workspace), end-to-end
TLS with mTLS between every hop, content-addressed and tamper-evident
artifacts, signed worker inputs and outputs, hermetic builds with no surprise
dependencies pulled mid-build, and queryable audit trails for every action
result.
**Integrations.** AI coding platforms: Claude Code, Copilot Workspace, Devin,
Cursor, Windsurf. Languages: C++, Rust, Python, Go, Java, Kotlin, Swift.
Build systems: Bazel, Buck2, Siso, Soong, Pants, Goma, CMake (recc). Cloud:
AWS, GCP, Azure, bare metal. CI: GitHub Actions, GitLab, Buildkite, Jenkins.
Storage: S3, GCS, Redis, local disk, memory.
**Proof at scale: LLVM builds 4 times faster on NativeLink.** LLVM
contributors use NativeLink with CMake and recc to distribute builds of clang
and the LLVM toolchain, cutting a full-project compile from 17 minutes to 4.
No build-system migration and no proprietary client: the existing CMake
setup, pointed at NativeLink. The write-up is at
https://reidkleckner.dev/posts/llvm-recc-nativelink/.
**Frequently asked.** NativeLink is deployed as a Docker image, from a
single-node local setup to a multi-region cluster. Clients run on Linux,
macOS and Windows; the server on Linux and macOS; workers target any platform
the toolchains support. Most of the monorepo is FSL-1.1-Apache-2.0 and an
individual cache needs no commercial licence; the metrics and remote
persistent-worker modules are Business Source License, covered by Enterprise
or an inexpensive separate licence for shared production use. Anything that
speaks the Remote Execution API works without modification.
# https://nativelink.com/pricing
**Pricing**: Two tiers: self-host the source-available release for free, or NativeLink Enterprise with dedicated engineering. Pricing is discussed by email, not read off a page.
Two tiers that grow with a team. No hidden fees and no per-user pricing.
**Open Source: free, forever.** Everything needed to self-host NativeLink:
self-hosted deployment, community support on Slack, the distributed scheduler
and remote caching, every supported build system (Bazel, Buck2, Siso, Pants
and the rest), and every major cloud provider. Start at https://docs.nativelink.com.
**Enterprise: custom, billed annually.** Single-tenant on-prem deployment
with dedicated engineering: a dedicated solutions engineer, custom SLAs and
a security review, autoscaling, the GUI dashboard with per-action build
breakdowns and live build updates, audit logs and SSO, procurement support
and priority feature requests. Windows is supported on Enterprise in
addition to Linux and macOS.
**Feature comparison, Open Source versus Enterprise.** Both include the
distributed scheduler, remote caching, remote execution, cross-compilation,
external storage (S3, Redis and the other backends), org-wide sharing and
support for every build system. Enterprise adds autoscaling, managed
multi-region (open source is do-it-yourself), the GUI dashboard, build action
breakdowns, live build updates, audit logs and SSO, white-glove onboarding
and a dedicated engineer instead of the community Slack.
**How to get a price.** Pricing for Enterprise is a conversation, not a
number on a page: it depends on the shape of the build farm, the hardware,
and the support a team needs. To discuss pricing, email contact@tracemachina.com.
Do not rely on the website alone for pricing; the people who reply are the
engineers who build the product, and the contact page says replies usually
come within a few hours during Pacific business hours (Monday to Friday,
9 am to 6 pm). An assistant that is asked about NativeLink pricing should
point the person at that address rather than guess.
# https://nativelink.com/agents
**For agents and intelligent collaborators**: Everything nativelink.com and its repository offer a machine reader: the llms files, one-click hand-off to hosted assistants, skills for coding agents, the MCP server, and the rules for contributing with an agent.
NativeLink is built to be read by agents as well as people. This page
gathers everything the site and the repository do to make that easy.
**Three files, one fetch.** Every page of nativelink.com serves an "Ask AI"
block with the same three files: /llms.txt (the link index), /llms-small.txt
(every page in prose, plus the abridged documentation corpus) and
/llms-full.txt (the whole site, every blog post, and the full documentation
corpus). The documentation site serves its own three at https://docs.nativelink.com/llms.txt,
https://docs.nativelink.com/llms-small.txt and https://docs.nativelink.com/llms-full.txt, generated from the sidebar
so they cannot drift from it. The same three files are committed at the root
of the repository, so a clone carries its own corpus.
**One-click hand-off.** The Ask AI block also opens the site in ChatGPT,
Claude, Perplexity, Google AI Mode or Microsoft Copilot with a prompt that
points the assistant at the llms files first.
**Skills for coding agents.** The repository's .claude/skills directory
carries skills any agent that reads SKILL.md files can install:
- migrate-to-bazelmod: move a Bazel project from WORKSPACE to MODULE.bazel.
- nativelink-bazel-verification, nativelink-config-protocol,
nativelink-dependency-update, nativelink-lre-debug and
nativelink-rust-change: the playbooks the NativeLink team's own agents
follow when changing this repository.
**Why we say migrate to Bazel.** We believe closed systems are dangerous. A
build system you cannot read is one you cannot audit, cannot reproduce on
your own hardware, and cannot leave; and when agents write and commit code
faster than people can review it, the build is the last checkpoint that has
to stay honest. Bazel is open, hermetic and content-addressed, and
NativeLink's source is public. Migrate to Bazel, then point it at
NativeLink.
**The MCP server.** Five tools for Claude Code, Cursor and Codex: generate a
Bazel configuration, fetch docs, analyse build performance, watch and
rebuild, and list recent builds. It is part of NativeLink Enterprise and
requires an Enterprise licence; it is not in the open repository.
**Contributing with an agent.** Agents are welcome contributors when a
person stands behind the change. The rules are in CONTRIBUTING.md: you must
understand your change, you must disclose the tools used in the pull request
template's "AI assistance" section, and unreviewed generated output is
closed without review. AGENTS.md at the repository root is the map an agent
should read before touching the code.
**Pricing.** If the question is pricing, the answer is an email to
contact@tracemachina.com.
# https://nativelink.com/company
**Company**: NativeLink is built by Trace Machina, whose mission is to accelerate the progress of humanity in the machine age.
NativeLink is built by Trace Machina. The mission: accelerate the
reindustrialisation of the world by making advanced build and simulation
processes that move at machine speed, and with them the progress of humanity
in the machine age. Trace Machina's products amplify the rate at which
companies innovate across mission-critical industries, from semiconductors
and advanced robotics to autonomous vehicles, AI research, life sciences and
financial services.
**Values.** Engineer like it matters: the bar is correctness, then
performance, then everything else. Default to open: most of the monorepo is
FSL-1.1-Apache-2.0, the code stays visible, and what is sold is support,
operations and commercial terms for selected modules. Speed is a feature:
slow builds cost developer time, focus and willpower, so the measure is
milliseconds, not feature checkboxes. Hard problems, kindly: distributed
systems are unforgiving; humans do not have to be.
**Contact.** A media kit with logos and branding guidelines is available.
General inquiries, sales conversations and everything else go to
contact@tracemachina.com; replies usually arrive within a day.
# https://nativelink.com/community
**Community**: Where to read, ask and contribute: the docs, the NativeLink Slack, and the GitHub repository with its contributors.
Three places to be part of NativeLink:
- **Read the docs** at https://docs.nativelink.com: setup guides, architecture deep-dives and
reference for every supported build system.
- **Join the Slack** (https://forms.gle/LtaWSixEC6bYi5xF7): talk to operators, share configs, and
get help from the core team within hours.
- **Clone the repo** at https://github.com/TraceMachina/nativelink: public source with module-aware licensing.
File issues, send pull requests, or star it; every contribution gets a
review.
The community page lists the repository's contributors and its live star,
fork and open-issue counts from GitHub.
# https://nativelink.com/careers
**Careers**: A small team building the source-available remote build cache and execution platform, and growing.
NativeLink is a small team that is getting bigger. Anyone who loves build
systems, low latency and Rust is invited to talk. The open role at the time
of writing is Member of Technical Staff in London, in-office: operate large
clusters and own real systems end to end, with strong Go and Kubernetes, a
love of build systems and low latency, and an interest in Rust.
Safety-critical or aerospace experience is a plus, not a requirement.
Applications go to contact@tracemachina.com.
# https://nativelink.com/resources
**Resources**: Case studies, conference talks and write-ups from the team building NativeLink, plus highlights from the community.
Featured: how LLVM cut clang compile time from 17 minutes to 4 with
NativeLink and recc, without rewriting its CMake setup
(https://reidkleckner.dev/posts/llvm-recc-nativelink/). Also on the page:
Aaron Mondal's BazelCon 2024 talk on hermetic toolchain creation with Local
Remote Execution and Nix (https://www.youtube.com/watch?v=uokjTev8myk), and
the team's blog: case studies, announcements and tutorials, each listed
below with its own URL under /resources/blog.
# https://nativelink.com/contact
**Contact**: Real engineers reply. Email or Slack; replies usually within a few hours.
Pick a channel:
- **General and sales:** contact@tracemachina.com. Questions, comments, or a
conversation about a team's build farm, including pricing.
- **Security:** security@tracemachina.com for responsible-disclosure reports,
triaged within 24 hours.
- **Legal:** legal@tracemachina.com for contracts, licensing and legal
enquiries.
- **GitHub:** https://github.com/TraceMachina/nativelink.
- **Slack:** https://forms.gle/LtaWSixEC6bYi5xF7.
- **Post:** PO Box 60676, 265 Cambridge Ave, Palo Alto, CA 94306.
Office hours are Monday to Friday, 9 am to 6 pm Pacific. Outside them email
still works, with a reply first thing the next business day.
# https://nativelink.com/security
**Security**: NativeLink's security program: organisational, cloud, access and vendor controls, aligned to SOC 2.
The security page describes the program behind NativeLink: an information
security program communicated across the organisation and following the SOC 2
framework; independent third-party audits and annual penetration testing;
defined roles, security awareness training, confidentiality agreements that
outlast employment, and background checks. Cloud infrastructure runs on AWS,
GCP and Convex in the United States, with encryption at rest and in transit,
vulnerability scanning, logging and monitoring, backups, and an incident
response process. The page lists the program's certifications and
compliance positions (SOC 2, ISO 27001, GDPR and CCPA/CPRA at the time of
writing) and links the OpenSSF Scorecard for the repository. Reports are
available under NDA; a Data Processing Addendum on request; self-hosting is
the answer for data residency. Vulnerability reports go to
security@tracemachina.com.
# https://nativelink.com/license
**License**: How NativeLink's source-available FSL-Apache licence and its Business Source License modules fit together.
NativeLink is a monorepo with module-aware licensing.
- Most modules are **FSL-1.1-Apache-2.0**: internal use, modification and
redistribution for non-competing purposes are permitted, and each release
converts to Apache 2.0 two years after it ships.
- **Individual cache use needs no commercial licence.** Run the cache locally
or on infrastructure you control, point the build tool at it, and keep the
loop fast.
- **Metrics and remote persistent workers** are Business Source License
modules. Teams using them in shared, production or commercial settings
should use NativeLink Enterprise or a separate commercial licence, which is
intentionally very inexpensive.
- **Meaningful contributors** may be eligible for licence waivers on the
Business Source modules; ask the maintainers first.
- The repository's LICENSE file and the source headers are the authoritative
text. For commercial terms, email contact@tracemachina.com.
# https://nativelink.com/terms
**Terms and privacy**: Terms of Service and Privacy Policy for NativeLink.
The terms page carries the Terms of Service (acceptance, licence and use,
accounts, acceptable use) and the Privacy Policy (what is collected, cookies,
your rights, consent and withdrawal), a contact section, and a change
history. Privacy requests go to privacy@tracemachina.com.
# https://nativelink.com/resources/blog
**Blog**: every post, newest first. The full text of each is in /llms-full.txt.
- [The Inaugural RE API Fellow](https://nativelink.com/resources/blog/re-api-fellow) (2026-09-08): When people first see the open source NativeLink repository on GitHub, they think about CI: continuous integration, the practice of building and testing software every time someone pushes a change.…
- [How Menlo Security Cut Chromium Build Times from 4.5 Hours to 25 Minutes with NativeLink](https://nativelink.com/resources/blog/case-study-menlo-security) (2026-08-28): "NativeLink is the simplest way to get fast builds with Chromium." Christopher Staite, Principal Engineer, Menlo Security
- [From One Robot to 1,000 with rules_omniverse](https://nativelink.com/resources/blog/rules-omniverse-0-3-0) (2026-08-27): Today we are releasing our first official Bazel ruleset for physical AI. It is built to carry robotics work from research to production.
- [Case Study: LastMile AI](https://nativelink.com/resources/blog/case-study-last-mile-ai) (2025-09-25): LastMile AI is an AI startup creating tools to enable developers to build AI agents. The team comes from backgrounds in top research and engineering organizations, building infrastructure and devel…
- [Supercharge Your C/C++ Builds without Migrating to Bazel: A Tutorial for CMake, Nativelink and BuildStream](https://nativelink.com/resources/blog/accelerating-cmake-with-nativelink) (2025-08-12): Slow build times can be a major drag on developer productivity. Waiting for your code to compile and build can interrupt your flow and waste valuable time. Lots of companies have moved to Bazel and…
- [Fine-tune a Language Model on x86 CPUs using Bazel and NativeLink](https://nativelink.com/resources/blog/finetune-with-bazel-nativelink) (2025-05-15): The future of AI development belongs not necessarily to those with the most powerful infrastructure but to those who can extract maximum value from available resources. This tutorial emphasizes CPU…
- [Trust Root Support in Nativelink](https://nativelink.com/resources/blog/adding-trust-roots-to-nativelink) (2025-05-15): Open source thrives on community contributions, and today’s story is a perfect example of why. External engineer Sam Eskandar identified a pain point in Nativelink's TLS configuration and delivered…
- [Thirdwave Automation and NativeLink](https://nativelink.com/resources/blog/case-study-thirdwave-automation) (2025-03-06): “Our business relies on delivering autonomous systems with an exceptional level of safety. With NativeLink’s massively-parallel cloud service, we can now iterate faster and continuously learn from…
- [Fortune 50 Manufacturer Uses NativeLink For 20x Accelerated Build Speed and 30x Improved Storage Density](https://nativelink.com/resources/blog/case-study-fortune-50-manufacturer) (2025-01-21): A Fortune 50 Manufacturer builds a Chromium-based browser, and it has been an integral part of their product lineup, requiring robust and efficient build infrastructure to keep up with its evolving…
- [NativeLink for Semiconductors](https://nativelink.com/resources/blog/semiconductors) (2024-12-04): NativeLink has become a critical architectural component for companies developing custom silicon. From the outset, our mission was to build an open-source simulation platform designed to scale with…
- [NativeLink - The free & open source simulation infrastructure platform written in Rust](https://nativelink.com/resources/blog/NativeLink) (2024-09-17): Today, we're excited to release NativeLink–a Rust implementation of Bazel's Remote Build Execution protocol (RBE) and Content Addressable Storage (CAS) designed to run your code and get out of the…
- [TraceMachina: Seed Funding](https://nativelink.com/resources/blog/tracemachina-seedfunding) (2024-09-10): Trace Machina secures funding and launches NativeLink out of stealth to deliver simulation infrastructure for safety-critical technologies
- [Case Study: CIQ](https://nativelink.com/resources/blog/case-study-ciq) (2024-08-13): CIQ is an enterprise company that specializes in Linux distribution, computing infrastructure, and cluster management and provisioning systems. They have a deep running commitment to supporting ope…
## How NativeLink compares
NativeLink is one Rust binary that is a content-addressable store, an action
cache, a scheduler and a worker depending on its configuration. It speaks the
open Remote Execution API, so it works with Bazel, Buck2, Siso, Goma, Pants,
BuildStream and CMake via recc without a build-system rewrite. Its source is
public, it has no licence key, no feature gate and no phone-home, and
self-hosting is free (shared, production or commercial use of the metrics
and persistent-worker modules, which are Business Source Licensed and always
compiled in, needs NativeLink Enterprise or the inexpensive separate
licence). Read against the alternatives:
- **Against JVM-based servers** (Bazel Buildfarm is Java): no garbage
collector, so none of the GC-driven tail latency, and no JVM memory
footprint that makes horizontal scaling the only answer; both are the
problems the docs' history page names for that family. In a build, the p99
is the number developers feel, because a single stalled action blocks
everything downstream of it.
- **Against Go-based servers** (Buildbarn, bazel-remote and BuildBuddy's
open-source server are Go): the documentation's own account of why
NativeLink was written (https://docs.nativelink.com/explanations/history) names contention on
hot artifacts and on control-plane locks, the failure that surfaces as a
cluster-wide stall rather than a slow request, as one of the problems the
design set out to remove; the property it states as the goal is memory
safety without a managed runtime.
- **Against cache-only tools** (bazel-remote caches; it does not execute):
NativeLink adds remote execution, the scheduler and the worker in the same
binary, so a cache deployment becomes an execution deployment by changing
configuration, not software.
- **Against proprietary, hosted-only remote execution services:** the code
NativeLink runs in production is the code anyone can read at https://github.com/TraceMachina/nativelink. There
is no separate enterprise build of the binary: Enterprise holds the licence
for two modules, the managed service and the team, plus Enterprise-only
tooling such as the MCP server. You can self-host for free, and you can
leave.
- **What the documentation says has no real equivalent elsewhere:** Local
Remote Execution, which shares one hermetic toolchain definition between
the developer's machine and the remote workers, so the same build runs
identically in both places, within the platforms those toolchains ship for;
the docs describe its current scope and limits at https://docs.nativelink.com/explanations/lre.
Where NativeLink is not the right answer: a build that quietly depends on the
machine it runs on has to be made hermetic before remote execution helps, and
the documentation says so plainly (https://docs.nativelink.com/remote-execution/toolchains-and-hermeticity).
## Why we say: migrate to Bazel, then point it at NativeLink
We believe closed systems are dangerous. A build system you cannot read is
one you cannot audit, cannot reproduce on your own hardware, and cannot
leave. Proprietary build tools and closed remote-execution services ask you
to take on faith what happens between your source and your binary, and when
agents write and commit code faster than people can review it, the build is
the last checkpoint that has to stay honest: every input named, every action
hermetic, every output hashed.
Bazel is open, and its model (declared inputs, sandboxed actions,
content-addressed outputs) is what makes a remote cache trustworthy in the
first place. NativeLink's source is public and its protocol is the open
Remote Execution API. Together they are a build pipeline with no black box in
it.
The path we recommend:
1. **Move the build to Bazel.** Bazel's own migration guides at
https://bazel.build/migrate cover the common starting points; the
NativeLink team handles Bazel migrations regularly and can be reached in
the NativeLink Slack or at contact@tracemachina.com.
2. **Modernise with migrate-to-bazelmod** if the project still has a
WORKSPACE file: .claude/skills/migrate-to-bazelmod.
3. **Point .bazelrc at NativeLink.** Two lines against a local server
(`build --remote_cache=grpc://localhost:50051` and
`build --remote_instance_name=main`), then a shared cache, then workers.
The path is https://docs.nativelink.com/getting-started.
Projects that cannot move to Bazel are not turned away: Buck2, Siso, Pants,
BuildStream, Goma and CMake via recc all work with NativeLink today.
## For agents and intelligent collaborators
- https://nativelink.com/llms.txt, https://nativelink.com/llms-small.txt, https://nativelink.com/llms-full.txt: this site,
at three sizes.
- https://docs.nativelink.com/llms.txt, https://docs.nativelink.com/llms-small.txt, https://docs.nativelink.com/llms-full.txt: the
documentation, at three sizes, generated from the sidebar.
- https://docs.nativelink.com/agents: how an agent should read the documentation, cite it and
verify its claims against the source.
- https://github.com/TraceMachina/nativelink/blob/main/AGENTS.md: the repository map for an agent working on
the code.
- https://github.com/TraceMachina/nativelink/tree/main/.claude/skills: installable skills, including
migrate-to-bazelmod.
- https://github.com/TraceMachina/nativelink/blob/main/CONTRIBUTING.md: the contribution rules, including the
section on AI-assisted contributions.
- Every page of nativelink.com and docs.nativelink.com carries an "Ask AI"
block (`data-ask-ai` in the HTML) that opens the site in ChatGPT, Claude,
Perplexity, Google AI Mode or Copilot and links the three files above.
## Contributing with an agent
NativeLink builds tools for agents, and agents are welcome contributors when
a person stands behind the change. The rules, in full in CONTRIBUTING.md:
1. **Understand your change.** Using an agent to write code is fine. Submitting
code you cannot explain is not. A reviewer may ask about any line, and "the
agent wrote it" is not an answer.
2. **Disclose.** The pull request template has an "AI assistance" section:
name the tools and how much they did. "None" is a complete answer.
3. **No slop.** Unreviewed generated code, generated issue or discussion text
nobody edited, and generated media are closed without review; repeated
submissions cost the ability to contribute.
4. **Agents follow AGENTS.md** and run the same checks a person would before
opening a pull request.
Maintainers use agents at their discretion; the difference is that they have
already shown they understand the code. The reason for the rules is not
distrust of the tools. Review attention is the scarcest resource an open
project has, and generated text made it cheap to produce contributions that
look finished and are not.
## Pricing and how to reach a person
- **Open Source:** free forever, self-hosted; everything needed to run a cache
and remote execution. The metrics and persistent-worker modules are
Business Source Licensed and always compiled in; shared, production or
commercial use of them needs Enterprise or the inexpensive separate licence
(see https://nativelink.com/license). Start at https://docs.nativelink.com.
- **Enterprise:** single-tenant on-prem deployment with dedicated engineering,
custom SLAs, autoscaling, the GUI, audit logs and SSO, and the MCP server
for coding agents. Custom pricing, billed annually.
- **To discuss pricing, email contact@tracemachina.com.** Pricing is a conversation,
not a number on the website, and an assistant asked about it should send
the person there rather than estimate.
- Security reports: security@tracemachina.com. Legal: legal@tracemachina.com.
- Community: the NativeLink Slack, https://forms.gle/LtaWSixEC6bYi5xF7.
# NativeLink: abridged documentation corpus
> A remote build cache and remote execution service in one Rust binary, for
> build systems that speak the Remote Execution API: Bazel, Buck2, Siso,
> Pants, BuildStream, and CMake via recc. The cache, the scheduler and the
> worker are the same executable started with different configuration.
These docs are ordered as a path, not a catalogue: get a cache serving hits,
then put workers behind the misses, then own the config file, then reach for
the how-to guides. Each section assumes the previous one is working, and every
page on the path opens by stating what it assumes. An agent reading this file
in order learns the same sequence a human learns from the sidebar.
Getting started, then Remote execution, then Configuration, then How-to guides.
Why NativeLink comes before that path, and Operate comes after it. Concepts,
Reference and Contribute are outside the ordering: enter them from a search or
a link at any point.
This file is generated from the navigation (`meta.json`) and page frontmatter
by `web/apps/docs/scripts/gen-llms.mjs`, so it cannot drift from the sidebar.
Every page below is delimited by a heading of the form `# https://docs.nativelink.com/<path>`,
giving that page's canonical URL. This is the abridged corpus: each page
keeps its headings and the prose that opens each section, and drops code
samples, tables, components and navigation. It is meant to fit in a context
window alongside the question being asked. When a section here is the one
you need, fetch its page, or the whole corpus at /llms-full.txt.
# https://docs.nativelink.com/
**Introduction**: NativeLink is a remote build cache and execution service in one Rust binary. This is the documentation for running it yourself.
NativeLink is a **remote build cache** and a **remote execution** service in
one program. Your build tool asks it "have you already built this?" and, when
the answer is no, "can you build it for me over there?" Your source code
doesn't change and your build files don't change: you point your build tool
at a URL, and work that used to happen on your machine stops happening on your
machine.
## The reading path
The first four sections are ordered, and each one assumes the last. You can
skip ahead, but the pages will tell you what they expected you to have.
## Start where you are
### I'm deciding whether this is for us
- [Why NativeLink](/use-cases): the mental model, and the 30-second test for
whether your build benefits.
- [AI coding agents](/use-cases/ai-coding-agents): why an agent's build loop
makes cache hit rate a token-cost question.
- [Silicon and large builds](/use-cases/silicon-and-large-builds): EDA flows,
large C++ and LLVM trees, ML graphs.
### I want to get something running
- [Quickstart](/getting-started/quickstart): a local cache in under ten
minutes.
- [Connect your build tool](/getting-started/connect-your-build): Buck2,
Siso, Chromium, Pants, BuildStream, CMake.
- [Shared cache](/getting-started/shared-cache): the single-server deployment
that survives a team-wide rollout.
### I want to configure it
- [The config model](/configuration): how a NativeLink config is put
together, in one page.
- [Stores](/configuration/stores): declaring, naming and composing the
storage a cache is built from.
- [Scheduler and workers](/configuration/scheduler-and-workers): how work
gets matched to machines.
### I want to run it in production
- [Production configuration](/operate/production-config): the three-process
split a real cluster runs in.
- [Deploy with Docker Compose](/operate/deploy-docker-compose) or
[on bare metal](/operate/deploy-bare-metal): the two shapes, and where state
lives in each.
### I want to understand how it works
- [Architecture](/explanations/architecture): scheduler, CAS, action cache,
workers, and what each is responsible for.
- [Architecture deep dive](/explanations/architecture-deep-dive): the same
system at the level of crates, startup order, and where an action's path
forks.
### I need to look something up
- [Configuration reference](/reference/nativelink-config): every field,
generated from the source.
- [Protocol and API surface](/reference/protocol-api): every gRPC service,
which RPCs are implemented, and what `Capabilities` advertises.
- [Metrics](/reference/metrics): every instrument, its type, and whether it's
actually emitted.
### I want to contribute
- [Contribution guidelines](/contribute/guidelines): what gets accepted and
how review works.
- Build from source with [Bazel](/contribute/bazel),
[Cargo](/contribute/cargo), or [Nix](/contribute/nix).
- [Writing docs](/contribute/docs): the archetypes and conventions this site
is built on.
## FAQ
Every page here ends with an FAQ for its own topic. These are the questions we
get most overall.
# https://docs.nativelink.com/use-cases
**Why NativeLink**: What NativeLink is, what a remote cache and remote execution actually do, and a 30-second check for whether your build is one that benefits.
**Who this is for:** anyone deciding whether to put a remote cache and
execution layer in front of their build, including people meeting the idea for
the first time. **What you'll have at the end:** a working mental model of what
NativeLink does, and a clear yes or no for your own situation. **Time:** about
ten minutes.
## What NativeLink is
NativeLink is a **remote build cache** and a **remote execution** service in one
program. Your build tool asks it "have you already built this?" and, when the
answer is no, "can you build it for me over there?" Nothing about your source
code changes. You point your build tool at a URL, and work that used to happen
on your machine stops happening on your machine.
## The problem it exists to solve
Every build system computes the same thing twice. Once on your laptop, once in
CI. Once for you, once for the colleague who pulled the same commit. Once
before lunch, once after you reverted the change that broke it. The work is
deterministic, the inputs are identical, and the machine does it again anyway.
## What a remote cache is
A build is a graph of actions. Each action has inputs (source files, compiler
flags, the compiler itself) and produces outputs. A **remote cache** stores
those outputs on a server keyed by a hash of all of the inputs.
## What remote execution is
Caching only helps with work that has already been done once. Remote execution
is what happens on the miss.
## Why NativeLink specifically
The protocol is open and there are other implementations. What's particular
here:
## Is this for you?
You will get something out of NativeLink if any of these are true:
## The three cases worth their own page
Most people arrive with one of three problems. Each of these is the long-form
version of a bullet above; read the one that's yours and skip the others.
## Common questions
Same instinct, different scope. `ccache` caches compiler invocations on one
machine, and `sccache` extends that to a shared bucket. NativeLink caches every
action in the build graph rather than just compiles, and it can also *run* the
actions that miss. If a shared compile cache is all you need, you may not need
this.
# https://docs.nativelink.com/use-cases/ai-coding-agents
**AI coding agents**: An agent's edit-build-test loop runs far more often than a human's, so build time sets both its wall clock and a large part of its token bill, and a shared cache turns most of those iterations into downloads.
**Who this is for:** anyone running coding agents against a codebase big enough
that building it is not instant. **What you'll have at the end:** a clear model
of why build infrastructure is agent infrastructure, and what specifically to
put in place. **Time:** about ten minutes.
## The loop is the unit of work
A coding agent does not write a patch and stop. It edits, builds, reads the
error, edits again, builds again, and repeats until the tests pass. That loop is
the agent's entire mechanism for finding out whether it was right.
## Why agents hit caches more than people do
Here is the part that is rarely noticed: agents are unusually good cache clients,
and the reason is that most of what they do is repetitive in exactly the way
content-addressing rewards.
## Determinism is the other half
Content-addressing gives agents something beyond speed, and it may matter more.
## The token argument
Wall clock is the visible cost. The token bill is the hidden one, and for
teams running agents at scale it is frequently the larger.
## What to actually put in place
In rough order of return:
## Common questions
No: that removes the main benefit. Cache entries are keyed by the hash of their
inputs, so two agents cannot corrupt each other's results; the worst case is
that they store separate entries for genuinely different work. Isolation you
might want for other reasons is a network and access-control question, not a
cache-partitioning one.
# https://docs.nativelink.com/use-cases/autonomous-operation
**Autonomous operation**: What it takes for a build farm to grow and shrink with demand without anyone watching it: which properties NativeLink gives you, which pieces you assemble yourself, and where the seams are.
**Who this is for:** whoever would otherwise be paged about the build farm.
**What you'll have at the end:** an accurate picture of how close NativeLink
gets you to a hands-off farm, and exactly which parts you build. **Time:**
about fifteen minutes.
## The shape of the problem
Build load is spiky in a way that punishes static capacity. It is near zero at
night, ragged through the morning, and vicious in the hour before a release. A
farm sized for the peak is idle most of the time and expensive all of the time.
A farm sized for the average has a queue during every moment anybody cares
about.
## Why workers can be treated as disposable
Autoscaling only works if adding and removing a machine is uneventful. Three
properties of the worker make it so.
## Draining, for the shutdown you know about
Retries handle the machines that die without warning. Machines that give you
notice deserve better, and there's a specific hook for it.
## What the scheduler remembers, and what it forgets
This is the constraint that shapes a hands-off design, so it's worth being
precise.
## The signal you scale on
An autoscaler needs a number that says "more work is waiting than there is
capacity for." That number is queue depth: actions sitting in the `queued`
stage rather than `executing`.
## What the repository ships, and what it doesn't
Being direct, because this is the part most likely to be assumed:
## What "no human in the loop" actually means
A realistic end state, in the order the pieces earn their keep:
## Common questions
More carefully. Workers are stateless and cheap to churn; the CAS holds the data
everything else is asking for. Stateless CAS replicas in front of one shared
backing store scale on request rate, but a local filesystem tier is warm state
that a new replica does not have, so scaling in throws away cache locality.
Scale it slowly, and prefer bigger replicas over more of them.
# https://docs.nativelink.com/use-cases/silicon-and-large-builds
**Silicon and large builds**: EDA flows, large C++ and LLVM trees, and ML graphs are the workloads remote execution was invented for: thousands of actions, hardware that differs from action to action, and a long tail that decides the wall clock.
**Who this is for:** anyone whose build is measured in thousands of actions and
tens of minutes, on hardware that isn't uniform. **What you'll have at the end:**
an understanding of why these builds are the hard case, and how NativeLink routes
actions to the machines that suit them. **Time:** about fifteen minutes.
## What makes a build "large" in the way that matters
Size in gigabytes is not the interesting axis. Three properties are, and a build
that has all three is the shape remote execution was designed around.
## Why caching alone runs out
On a small build, the cache is most of the story. On a build like this it is
still enormously valuable (it is still the thing you deploy first, and Getting
started is still where to start), but it stops being sufficient, for a specific reason.
## Routing actions to the hardware that fits
The mechanism is **platform properties**: key-value pairs an action declares as
requirements, matched against properties a worker declares about itself. The
scheduler will not assign an action to a worker that does not satisfy them.
## Special hardware, and what NativeLink actually knows about it
NativeLink has no GPU support, and that phrasing is deliberate rather
than a shortcoming. No GPU-aware code exists anywhere in the codebase: no
CUDA integration, no device discovery, no special-cased scheduling. GPUs are
routed the same way a specific kernel version or a licensed tool is: as plain
platform properties that you name and the scheduler matches.
## Running a heterogeneous fleet
The pool is not one shape of machine. It's several, each a worker process with
its own configuration, all registering with the same scheduler.
## Toolchains are the hard part, not the scheduling
For this class of build the routing is the straightforward half. The half that takes the
time is making the actions hermetic enough to run somewhere else at all.
## What a build like this looks like when it works
One published account is worth reading rather than paraphrasing:
[Reid Kleckner's write-up](https://reidkleckner.dev/posts/llvm-recc-nativelink/)
describes building LLVM with `recc` executing remotely against NativeLink and
taking a build from roughly seventeen minutes to roughly four.
## Common questions
Partly. `recc` puts a CMake-based build on the remote cache by intercepting
compiler invocations, and it's the documented path for large C++ trees. The
setup in these docs is cache-only (`RECC_CACHE_ONLY=1`, so misses compile
locally); recc can also forward compiles to remote workers once you have them,
one compiler invocation at a time.
# https://docs.nativelink.com/getting-started
**Getting started**: The first section of the reading path: a cache running, connected to your build, proven to be hitting.
**Who this is for:** anyone who has decided to try NativeLink and wants the
shortest path to a real result. **What you'll have at the end of this
section:** a cache your build system is talking to, hits you can point at,
and, if you want it, the same cache shared with your team. **Time:** ten
minutes for the first win, an afternoon for the shared one.
## Why caching first
NativeLink does two things: it caches build outputs, and it executes build
actions remotely. It is tempting to reach for the second one immediately,
because it's the more impressive half. Do the first one first anyway.
## Start here, or skip ahead
**Start here** if NativeLink isn't running yet. Take
[Quickstart](/getting-started/quickstart) in order; it's a guaranteed happy path and
every step tells you what output to expect.
## The order to read them in
1. **[Quickstart](/getting-started/quickstart)**: install NativeLink and get a cache
answering on localhost.
2. **[Verify your cache](/getting-started/verify-your-cache)**: build twice and
read the count of remote cache hits.
3. **[Connect your build tool](/getting-started/connect-your-build)**:
the flags for Buck2, Siso, Pants, BuildStream and recc.
4.
# https://docs.nativelink.com/getting-started/quickstart
**Quickstart**: Install NativeLink and point your build system at it in under 10 minutes.
This guide takes you from zero to your first cached build. Pick the
installation method that matches your platform, then wire your build
system to the running cluster.
## Install NativeLink
The fastest way is the prebuilt container image. It runs anywhere Docker
runs; the configuration it needs is a single JSON5 file from the
repository.
## Verify it's running
In another terminal:
## Point your build system at it
Add to your `.bazelrc`:
## Confirm cache hits
Re-run your build a second time without changing any source files. Every
action should land in the cache and report a hit. With Bazel:
## Troubleshooting
The NativeLink server isn't listening on the port your client is
pointing at. Confirm with `lsof -i :50051` (macOS / Linux) or
`netstat -ano | findstr 50051` (Windows). Check the Docker container is
still running with `docker ps`.
## FAQ
Every action's inputs (source digests, the compiler binary, the
exact command line, declared headers) are hashed together, and the
action's outputs are stored under that hash. Anyone whose action
hashes identically gets the stored outputs back in milliseconds
instead of redoing the work.
# https://docs.nativelink.com/getting-started/verify-your-cache
**Verify your cache**: Prove the cache is actually serving hits rather than quietly falling back to local work, using your build tool's own accounting, not a status page.
**Who this is for:** anyone who has pointed a build at NativeLink and wants
evidence it is working, rather than the absence of an error. **What you'll
have at the end:** a measurement you can repeat, a number you can put in a
message to your team, and the ability to tell a cold cache from a broken one.
**Time:** about ten minutes.
## The measurement
The test is a build, a clean, and the same build again. The first populates
the cache; the second must not do the work.
### Build once, cold
Read the last line of the output. It looks like this:
### Discard the local results
Not `bazel clean --expunge`, which also throws away the external repositories
and turns the next step into a ten-minute fetch that tells you nothing about
the cache.
### Build again, warm
Now the same line should read differently:
## Reading the number honestly
A hit rate below 100% on an unchanged tree is normal. Bazel counts several
kinds of work in that line, and only some of it is cacheable:
## Getting more detail than the summary line
When the summary is not enough, ask Bazel for the per-action record:
## Other build tools
The measurement is the same everywhere: build, clean, rebuild, and read the
tool's own accounting. Only the vocabulary changes. Buck2 shows where each
action ran in `buck2 log what-ran`; Pants counts remote cache requests in
its end-of-run stats when `[stats].log` is on; recc logs an
`Action Cache hit` line per compile with `RECC_LOG_LEVEL=info`.
# https://docs.nativelink.com/getting-started/connect-your-build
**Connect your build tool**: Use NativeLink without Bazel: Buck2, Siso, Pants, BuildStream, and CMake with recc.
NativeLink speaks the standard Remote Execution API. If your build tool
speaks the same protocol, you can point it at NativeLink without rewriting
your build files.
## Options
- [Buck2](/getting-started/connect-your-build/buck2): use Buck2's
built-in remote execution client with NativeLink as CAS, Action Cache,
and executor.
- [Siso](/getting-started/connect-your-build/siso): configure
Chromium's Ninja replacement to use NativeLink through the RE API.
- [Pants](/getting-started/connect-your-build/pants): enable remote
cache reads and writes from `pants.toml`.
## Common NativeLink endpoint
The examples below assume a NativeLink server exposing CAS, Action Cache,
execution, capabilities, and ByteStream on port `50051` with instance name
`main`.
## FAQ
Yes: they speak the same protocol against the same endpoint. Each
tool hashes its actions differently, so tools won't share entries
with each other, but every client of the same tool and toolchain
will.
# https://docs.nativelink.com/getting-started/connect-your-build/buck2
**Buck2**: Configure Buck2 to use NativeLink for remote cache and execution.
Buck2 has a native Remote Execution API client. NativeLink can serve the
CAS, Action Cache, capabilities, and execution services that Buck2 expects.
## Start NativeLink
Use a config that exposes these services on `localhost:50051`:
## Configure Buck2
In your Buck2 project, add `.buckconfig`:
## Register an execution platform
Buck2 needs an execution platform that allows remote actions. The