# The Layer5 repository: a Gatsby umbrella site that spans six GitHub organisations

> The layer5io/layer5 repository is not a library but the community's front door: a Gatsby site for layer5.io that documents the product family and, unusually, tracks help wanted issues across the meshery, layer5labs, service-mesh-performance, service-mesh-patterns and meshery-extensions organisations in one badge. The build pipeline is the interesting engineering in it, with a lightweight build profile that skips the heaviest routes.

**layer5io/layer5** — Layer5, expect more from your infrastructure

- Repository: https://github.com/layer5io/layer5
- Website: https://layer5.io
- Stars: 1,144 · Forks: 1,653
- Language: JavaScript
- License: Apache-2.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/layer5io-layer5

## What this repository is: the org's site, not its software

The first thing to establish is that layer5io/layer5 is a website repository, and the software lives elsewhere.

The package.json describes it plainly. The name is Layer5, the version is 1.0.0, and it is marked private, so it is not published to any registry. The repository is built with Gatsby, the JavaScript static site generator, with gatsby-config.js, gatsby-node.js, gatsby-browser.js and gatsby-ssr.js at the top level, plus page-wrapper.js, root-wrapper.js and context-wrapper.js. The primary language is JavaScript, and the topics include gatsbyjs alongside the cloud native ones.

So what the repository contains is layer5.io, the marketing and documentation site for the organisation, plus the content that goes on it. The content-learn/ directory holds the learning material, the src/ directory has the pages and the collections, and the static/ and fonts.css and scripts/ directories hold the assets and build tooling.

The organisation's own framing is in the About section. Layer5's cloud native application and infrastructure management software enables you to expect more from your infrastructure, and it says the project embraces developer-defined infrastructure, empowers developers to change how they write applications, supports operators in rethinking how they run modern infrastructure, and enables teams to stop finger-pointing and start collaborating. The documentation is at docs.layer5.io.

The licence is Apache-2.0 with a LICENSE file at the root, and the repository is not archived with the last push on 2026-10-19. There are no GitHub releases, which is right for a site repository.

What makes this repository interesting to read is not the site itself but the structure of the organisation it represents, which the README lays out as a set of separate projects each with their own repository, documentation and logo.

## The product family, and what each project actually is

The README lists the projects, and each entry is short enough to read exactly, which is useful because the naming is not self explanatory.

Meshery is the collaborative cloud native manager that enables the adoption, operation and management of Kubernetes and its workloads, documented at docs.meshery.io. It is the largest of the projects and the one the topic tags name, along with management-plane, kubernetes, orchestration and visual-designer.

Kanvas delivers infrastructure as design, and it is described as an end-to-end management platform to help teams understand problems, deploy designs, apply patterns, and manage and operate deployments and services in real time, with documentation at docs.kanvas.new.

Nighthawk is a Layer 7 performance characterization tool covering HTTP, HTTPS and HTTP2, and the important detail is that it is Envoy's load generator, written in C++. Meshery integrates Nighthawk as one of, currently, three choices of load generator for characterizing and managing the performance of infrastructure and services. That parenthetical, currently, tells you the set of load generators is expected to change.

Layer5 Catalog is described as a central hub for sharing cloud native infrastructure designs, enabling the exchange of best practices, reusable templates and Kubernetes-based operational patterns for multi-cluster Kubernetes clusters and distributed applications, and it is called a marketplace full of curated cloud native infrastructure configurations and operational patterns for DevOps engineers.

Layer5 Academy is a learning platform built into Layer5 Cloud offering structured learning paths, interactive challenges and professional certifications, with content spanning beginner to advanced levels.

And then the two community repositories rather than products. Cloud Native Patterns help you get the most out of Kubernetes and every CNCF project, with each pattern usable as a template and customizable. Cloud Native Performance is the service mesh performance project, with its own assets in the repository under src/assets/images/service-mesh-performance.

The Kanvas name, the design-system and visual-designer topics, and the phrase infrastructure as design all point the same way: this is a project about describing infrastructure declaratively and rendering it, which is a coherent thread across Meshery, Kanvas and the catalog.

## One issue tracker across six organisations

The help wanted badge in the README is a long URL, and the query it encodes says more about how Layer5 is organised than any paragraph does.

The badge searches for open issues that are not archived, across a set of organisations joined by OR: org:layer5io, org:meshery, org:layer5labs, org:service-mesh-performance, org:service-mesh-patterns and org:meshery-extensions, filtered to the label help wanted. And the link it points to is not this repository. It is a GitHub issue search across all of them.

So the layer5 repository is a community hub rather than a code repository, and the badge is how a new contributor finds work without having to know which of the six organisations owns which project. Meshery, the extensions, the service mesh performance work and the patterns all live in different repositories, and Layer5's own repository is where the entry point and the site live.

That structure is also visible in the community links. The Slack invite is at slack.layer5.io, the Twitter and Bluesky accounts are linked.. There is a CODE_OF_CONDUCT.md, a CONTRIBUTING.md and a GOVERNANCE.md in the repository root.

A GOVERNANCE.md is worth noting in a project with this many sub-repositories, because it is where the question of who decides things gets answered. For a contributor, the practical sequence is: pick up a help wanted issue from the badge, read CONTRIBUTING.md, and check the version compatibility requirements, since the site documents version matrices for several of the tools it describes.

The intern project, the internship topic and the hacktoberfest topic point at the same thing. Layer5 runs internship and hacktoberfest tracks, and both work by pointing newcomers at issues in these repositories, which is why the cross-organisation issue search badge is on the front page.

## The build system, and the lightweight profile that keeps the dev server fast

The build tooling is the part of this repository with real engineering in it, and the Makefile explains the design.

The setup target is one line:

```
npm install --legacy-peer-deps
```

The --legacy-peer-deps flag is there because the dependency tree has peer dependency conflicts that npm's strict resolution refuses, and the project has chosen to work around them rather than fix them. That is a common and reasonable choice for a large Gatsby site with many content plugins, and it is worth knowing about if you hit a peer dependency error on a fresh clone.

The interesting target is site, described in a comment as the default lightweight build that keeps the dev server fast by skipping heavy collections:

```
npx cross-env BUILD_FULL_SITE=false LITE_BUILD_PROFILE=$(or $(LITE_BUILD_PROFILE),core) BLOG_YEAR=$(or $(BLOG_YEAR),) env-cmd -f .env.development node scripts/run-gatsby.js develop
```

So there are three axes of trimming. BUILD_FULL_SITE is false, which selects the lightweight path. LITE_BUILD_PROFILE selects which parts are still built, and the default profile is core, with a content profile available that includes content collections while still skipping the heaviest routes. And BLOG_YEAR scopes the blog to particular years.

The blog scoping is computed rather than configured. LATEST_BLOG_YEAR is a shell expression that lists src/collections/blog, greps for four digit directory names, sorts them and takes the last one, and the comment gives the example as 2026. A site-blog target then runs the lightweight build with that profile, and the blog year can be overridden as 2025,2026.

The package scripts mirror the same structure from the JavaScript side. develop is the full build with BUILD_FULL_SITE=true, develop:lite is the lightweight one with BUILD_FULL_SITE=false and LITE_BUILD_PROFILE=core, and the dev and start scripts both point at develop:lite, while start:full points at develop. The build scripts set BUILD_FULL_SITE=true and run the same scripts/run-gatsby.js wrapper, with build:gh-pages and build:preview adding the --prefix-paths flag for the GitHub Pages and preview deployments.

The wrapper script is the key. Every script goes through node scripts/run-gatsby.js rather than calling gatsby directly, which is where the environment handling and the build profile logic lives.

## Lint, tests, patches and the quality gates on a static site

The rest of the tooling tells you what the project considers worth automating, and for a site repository the list is longer than you might expect.

Linting is eslint with --fix for the fix mode and a separate checklint script that does not fix, and there are two eslint configuration files, an older.eslintrc.js and a newer eslint.config.js, which is the flat config format. The pretest script runs eslint with --ignore-path.gitignore, so linting happens before the test script runs, and the test:unit script runs node --test on a single file, src/utils/build-collections.test.js, using the Node built in test runner rather than Jest. The existence of a test for the collection building code suggests that the content collection logic is where the site actually has bugs.

Patches are managed with patch-package, and the postinstall script runs it. That means the project carries patches against dependencies in node_modules, applied automatically after install. It is a common way to keep a site building against a dependency that has not released a fix, and it is also a place where a contributor should look before debugging an install failure.

Git hooks are husky, with a.husky/ directory and a prepare script, and lint-staged is configured with a.lintstagedrc.js so that staged JavaScript files get formatted and linted before the commit lands.

There is a Lighthouse setup, with both a.lighthouserc.js and a.desktop-lighthouserc.js, which is the standard way to hold a separate performance budget for desktop against the one for mobile, since a single budget tends to be either too strict for mobile or too loose for desktop.

There is a.babelrc, a.npmrc, a.nvmrc, a.gitpod.yml for a one click cloud dev environment, and a.env.development file that the env-cmd invocation loads.

There is also a check:contributing-versions script, run through node.github/scripts/check-contributing-versions.cjs. Since the site documents version compatibility matrices for several of the projects Layer5 publishes, that script is a consistency check between the documentation and something else in the repository, and it is a good example of the kind of automation a documentation site needs once it starts being read as a reference rather than as marketing.

## Conclusion

The Layer5 repository fits a contributor who wants to fix a typo, improve a pattern description or work on the Layer5 site itself, and it is the right place to start if you want to understand what Layer5 actually ships rather than what its marketing says. It is the wrong repository to depend on, since it is a website and a community hub rather than a library or a service, and nothing in it is published as a package you would import. Before contributing, read CONTRIBUTING.md and GOVERNANCE.md, run make setup and make site rather than the full build, and check the version compatibility script the package scripts reference, since the site carries version matrices for several of the projects it documents.

## FAQ

### What is the Layer5 repository?

It is the Gatsby site for layer5.io, marked private in package.json and built with gatsby-config.js, gatsby-node.js and the rest of the Gatsby entry points. The software itself, Meshery, Kanvas, Nighthawk and the pattern catalog, lives in separate repositories, and this one is the community hub and the front door.

### How do I find a help wanted issue across Layer5 projects?

The help wanted badge in the README points to a GitHub issue search for open, non archived issues labelled help wanted across the layer5io, meshery, layer5labs, service-mesh-performance, service-mesh-patterns and meshery-extensions organisations. The repository also links the Layer5 Slack at slack.layer5.io, plus the Twitter and Bluesky accounts.

### How do I run the Layer5 site locally?

Run make setup, which is npm install --legacy-peer-deps, and then make site for the lightweight build or make develop for the full one. The lightweight build sets BUILD_FULL_SITE=false with LITE_BUILD_PROFILE=core, which keeps the dev server fast by skipping the heaviest routes, and there is a content profile that includes content collections and a blog-year scope for the blog.

### What is Nighthawk and how does it fit into Layer5?

Nighthawk is a Layer 7 performance characterization tool for HTTP, HTTPS and HTTP2, and it is Envoy's load generator, written in C++. Meshery integrates it as one of currently three choices of load generator for characterizing and managing the performance of infrastructure and services.

## Sources

- [Issues](https://github.com/layer5io/layer5/issues)
- [layer5io/layer5 on GitHub](https://github.com/layer5io/layer5)
- [License: Apache-2.0](https://github.com/layer5io/layer5/blob/master/LICENSE)
- [Project website](https://layer5.io)
- [README](https://github.com/layer5io/layer5/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/layer5io-layer5
