<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://meshery.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://meshery.io/" rel="alternate" type="text/html" /><updated>2026-04-27T00:11:47+00:00</updated><id>https://meshery.io/feed.xml</id><title type="html">Meshery</title><subtitle>The extensible cloud native manager. Confidently wrangle cloud native infrastructure with Meshery.</subtitle><author><name>The Meshery Authors</name><email>community@meshery.io</email></author><entry><title type="html">Meshery v1.0 is Generally Available</title><link href="https://meshery.io/blog/meshery-v1.0-general-availability/" rel="alternate" type="text/html" title="Meshery v1.0 is Generally Available" /><published>2026-03-23T08:00:00+00:00</published><updated>2026-03-23T08:00:00+00:00</updated><id>https://meshery.io/blog/meshery-v1.0-general-availability</id><content type="html" xml:base="https://meshery.io/blog/meshery-v1.0-general-availability/"><![CDATA[<p>Today, at KubeCon + CloudNativeCon Europe 2026 in Amsterdam, the Meshery maintainers are proud to announce the general availability of <strong>Meshery v1.0</strong> - the extensible cloud native management platform that has become the governance layer the cloud native stack has long been missing.</p>

<p>This release has been six years in the making. Meshery has been open source from day one, built in public, by a global community, for a global community. v1.0 is not just a version number. It is a statement of production readiness, architectural maturity, and a commitment to the teams who depend on Meshery to manage their most critical infrastructure.</p>

<h2 id="the-problem-v10-solves">The Problem v1.0 Solves</h2>

<p>Cloud native teams have assembled powerful toolchains over the past decade - Kubernetes, Helm, Terraform, Docker, observability stacks - yet lacked a unified layer to govern how those components relate, change, and interact across organizational boundaries. YAML files proliferated. PR diffs became inscrutable. Tribal knowledge calcified in individuals rather than in systems.</p>

<p>AI has accelerated the urgency. LLM-generated configurations can produce syntactically valid but semantically dangerous infrastructure changes at machine speed - outpacing any engineering team’s ability to perform meaningful review. The industry is not lacking automation. It is lacking <em>oversight</em>.</p>

<p>Meshery v1.0 is that oversight layer. Its visual, collaborative design surfaces make infrastructure changes - whether authored by humans or generated by AI - legible, reviewable, and governable before they reach production.</p>

<h2 id="infrastructure-as-design">Infrastructure as Design</h2>

<p>At the core of v1.0 is the <em>Infrastructure as Design</em> model: a shift from managing infrastructure as disconnected text files to operating it as a shared, visual, living artifact. Teams can see the blast radius of a change, review AI-suggested configurations the way they review code, and collaborate in real time across organizational boundaries.</p>

<p>This model is operationalized through <a href="https://www.kanvas.new">Kanvas</a>, with two complementary surfaces:</p>

<p><strong><a href="https://docs.layer5.io/kanvas/designer/">Kanvas Designer</a>  (GA)</strong> is a declarative, drag-and-drop visual design interface - “diagram as code” - where infrastructure is designed, versioned, and diff’ed as a visual artifact rather than a wall of YAML. Import your existing Helm charts, compose multi-cluster topologies, and share designs as first-class GitOps artifacts.</p>

<p><strong><a href="https://docs.layer5.io/kanvas/operator/">Kanvas Operator</a>  (Beta)</strong> is a real-time operations surface providing live resource views and cluster management, giving SRE and platform teams continuous situational awareness across multi-cluster, multi-cloud deployments.</p>

<p>Together, they deliver what no configuration management tool or cluster visualizer alone provides: a single workspace where infrastructure is designed, understood, and operated as a team sport - with human oversight explicitly built into every step of the AI-assisted workflow.</p>

<blockquote>
  <p><em>“Kubernetes gave us the runtime. GitOps gave us the pipeline. Meshery v1.0 gives teams the governance layer - the place where you actually see, understand, and control what’s running across your infrastructure before and after AI touches it.”</em></p>

  <p><strong>- Lee Calcote, Meshery Co-Creator and Maintainer</strong></p>
</blockquote>

<h2 id="community-velocity-that-speaks-for-itself">Community Velocity That Speaks for Itself</h2>

<p>The community behind this release is itself a proof point. Meshery has been formally recognized as the <a href="https://www.cncf.io/blog/2026/03/04/scaling-organizational-structure-with-mesherys-expanding-ecosystem/">sixth highest-velocity project in the CNCF</a> - an extraordinary distinction among 237 CNCF projects, especially for a project at the Sandbox maturity level. Over the past year, the project recorded a 350% increase in code commits, driven by a global community of more than 3,000 contributors, 10,000 GitHub stars, and 10,000 community members.</p>

<p>Meshery is also the <strong>#1 most applied-to internship in the Linux Foundation’s LFX Mentorship program</strong>, with over 10,000 applicants to date. It continues as a flagship participant in Google Summer of Code. The developer interest in Meshery reflects a broader industry recognition: governance tooling for cloud native infrastructure is not a niche concern. It is the next foundational layer.</p>

<h2 id="governance-by-architecture-the-dual-org-model">Governance by Architecture: The Dual-Org Model</h2>

<p>To govern its own explosive growth sustainably, Meshery has restructured its GitHub footprint into two distinct organizations:</p>

<ul>
  <li><a href="https://github.com/meshery"><strong>meshery</strong></a> - The core platform: Meshery Operator, MeshSync, and foundational architecture - governed by core maintainers to ensure absolute v1.0 stability.</li>
  <li><a href="https://github.com/meshery-extensions"><strong>meshery-extensions</strong></a> - A community-centric space for the project’s 300+ integrations, adapters, and ecosystem tooling - enabling independent teams to innovate rapidly without introducing instability into the core.</li>
</ul>

<p>This model is itself a statement about governance: a project serious about production-grade reliability must impose the same rigor on its own development process that it asks engineering teams to apply to their infrastructure.</p>

<h2 id="the-certified-meshery-contributor-program">The Certified Meshery Contributor Program</h2>

<p>Alongside v1.0, we are launching the <strong>Certified Meshery Contributor (CMC) program</strong> - the <a href="https://www.cncf.io/blog/2025/10/27/announcing-the-certified-meshery-contributor-cmc/">first contributor certification in the CNCF</a> - designed to validate the proficiency of developers actively shaping the Meshery ecosystem.</p>

<p>The free certification comprises five exams spanning Meshery’s major architectural domains: Server, CLI, UI, Models, and Extensibility. Tailored for practitioners skilled in Go, React, and OpenAPI schemas, the CMC credential formally recognizes the human expertise that keeps AI-assisted infrastructure management safe, auditable, and correct.</p>

<p>The AI era does not diminish the value of human expertise. It amplifies it.</p>

<blockquote>
  <p><em>“Meshery v1.0 is the culmination of years of collaborative design, relentless engineering, and a profoundly dedicated global community. Pairing our 1.0 release with a new multi-organization extension model and the CMC program perfectly encapsulates our dual mission: delivering a world-class, extensible cloud native manager, while cultivating the most inclusive, high-velocity open-source community in the CNCF.”</em></p>

  <p><strong>- Sangram Rath, Meshery Maintainer</strong></p>
</blockquote>

<h2 id="what-the-community-is-saying">What the Community Is Saying</h2>

<blockquote>
  <p><em>“Kanvas has me rethinking how I approach interactions with team members. The ability to visually design, import existing Helm charts, and collaborate on changes in a single GitOps workflow might just eliminate my cross-team friction. Workspaces in Kanvas are my new Google Drive for infrastructure work.”</em></p>

  <p><strong>- Venil Noronha, Tech Lead at Stripe</strong></p>
</blockquote>

<blockquote>
  <p><em>“Meshery is simply incredible: just give it a try and it might fill the void you never knew you had. It provides the standardization and visibility and an easy path to scalable infrastructure.”</em></p>

  <p><strong>- Mars Toktonaliev, CNCF Ambassador and Senior Systems Integrator at KGPCo.</strong></p>
</blockquote>

<blockquote>
  <p><em>“I started looking for a suitable open-source project to contribute to in late 2025. While exploring projects under the CNCF, Meshery immediately caught my attention. Around the same time, I came across a CNCF blog post announcing the Certified Meshery Contributor certification. That’s when I decided to join the community just before the Christmas holidays. In hindsight, it turned out to be one of the best decisions I’ve made.”</em></p>

  <p><strong>- Kavitha Karunakaran, Meshery Community Manager</strong></p>
</blockquote>

<h2 id="get-started-with-meshery-v10">Get Started with Meshery v1.0</h2>

<p>Meshery v1.0 is available today. If you are at KubeCon EU 2026, visit the Meshery booth to experience the release in action, explore the Infrastructure as Design model firsthand, and learn how to earn your Certified Meshery Contributor credential. Project maintainers are available for briefings and technical deep-dives throughout the conference.</p>

<ul>
  <li><strong>Download Meshery v1.0:</strong> <a href="/get-started">Get Started</a></li>
  <li><strong>Explore integrations:</strong> <a href="/integrations">Explore Integrations</a></li>
  <li><strong>Earn your CMC:</strong> <a href="/learn/certification">Earn your CMC</a></li>
  <li><strong>Join the community:</strong> <a href="https://slack.meshery.io">https://slack.meshery.io</a></li>
</ul>

<p>Six years ago, a small team started building in public with the conviction that cloud native infrastructure deserved better tooling - tooling that was visual, collaborative, and open. Today, with v1.0, that conviction has a name, a community of thousands, and a production-ready platform behind it.</p>

<p>Thank you to every contributor, reviewer, mentee, mentor, and community member who made this release possible. This is your milestone as much as ours.</p>

<p><em>- The Meshery Maintainers</em></p>]]></content><author><name>Meshery Maintainers</name></author><category term="meshery" /><category term="releases" /><category term="cloud-native" /><category term="kubecon" /><summary type="html"><![CDATA[Today, at KubeCon + CloudNativeCon Europe 2026 in Amsterdam, the Meshery maintainers are proud to announce the general availability of Meshery v1.0 - the extensible cloud native management platform that has become the governance layer the cloud native stack has long been missing.]]></summary></entry><entry><title type="html">Mesheryctl Relationship Commands Promoted From Experimental</title><link href="https://meshery.io/blog/2026/03/2026-03-10-mesheryctl-relationship-cmds/" rel="alternate" type="text/html" title="Mesheryctl Relationship Commands Promoted From Experimental" /><published>2026-03-10T00:00:00+00:00</published><updated>2026-03-10T00:00:00+00:00</updated><id>https://meshery.io/blog/2026/03/mesheryctl-relationship-cmds</id><content type="html" xml:base="https://meshery.io/blog/2026/03/2026-03-10-mesheryctl-relationship-cmds/"><![CDATA[<p>If you are managing cloud-native infrastructure with Meshery, understanding how your components interact is critical. This post walks you through the <code class="language-plaintext highlighter-rouge">mesheryctl relationship</code> commands and celebrates an important milestone: their <strong>officially graduated from experimental mode</strong>.</p>

<h3 id="from-mesheryctl-exp-relationship-to-mesheryctl-relationship">From <code class="language-plaintext highlighter-rouge">mesheryctl exp relationship</code> to <code class="language-plaintext highlighter-rouge">mesheryctl relationship</code></h3>

<p>After a period of stabilization, community feedback, and real-world usage, <strong>the relationship commands have been promoted to stable</strong> and moved to the top-level namespace:</p>

<table>
  <thead>
    <tr>
      <th>Before (experimental)</th>
      <th>After (stable)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">mesheryctl exp relationship generate</code></td>
      <td><code class="language-plaintext highlighter-rouge">mesheryctl relationship generate</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">mesheryctl exp relationship list</code></td>
      <td><code class="language-plaintext highlighter-rouge">mesheryctl relationship list</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">mesheryctl exp relationship search</code></td>
      <td><code class="language-plaintext highlighter-rouge">mesheryctl relationship search</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">mesheryctl exp relationship view</code></td>
      <td><code class="language-plaintext highlighter-rouge">mesheryctl relationship view</code></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>What is a Meshery Relationship?</strong><br />
In the Meshery ecosystem, a <strong>relationship</strong> defines how two or more <a href="https://docs.meshery.io/concepts/logical/components">components</a> are interconnected. Relationships capture the dependencies, policies, and interactions between components within a <a href="https://docs.meshery.io/concepts/logical/models">model</a>. They are organized by <strong>kind</strong> (e.g., <code class="language-plaintext highlighter-rouge">hierarchical</code>, <code class="language-plaintext highlighter-rouge">edge</code>), <strong>type</strong>, and <strong>subtype</strong> (e.g., <code class="language-plaintext highlighter-rouge">parent</code>, <code class="language-plaintext highlighter-rouge">binding</code>) and are evaluated by Meshery’s policy engine to enforce design constraints and visualize architectural intent.<br />
<a href="https://docs.meshery.io/concepts/logical/relationships">Learn more about Meshery Relationships</a></p>
</blockquote>

<p>The <code class="language-plaintext highlighter-rouge">mesheryctl relationship</code> command gives you a convenient CLI interface to interact with the relationships registered in your Meshery Server. It exposes four subcommands — <code class="language-plaintext highlighter-rouge">list</code>, <code class="language-plaintext highlighter-rouge">search</code>, <code class="language-plaintext highlighter-rouge">view</code>, and <code class="language-plaintext highlighter-rouge">generate</code> — each targeting a specific use case.</p>

<hr />

<h2 id="base-command-mesheryctl-relationship">Base command: <code class="language-plaintext highlighter-rouge">mesheryctl relationship</code></h2>

<p><strong>Description:</strong> The root command for managing relationships. On its own, it prints usage information. Combined with the <code class="language-plaintext highlighter-rouge">--count</code> flag, it returns the total number of relationships registered in Meshery Server.</p>

<p><strong>Flags:</strong></p>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Short</th>
      <th>Default</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--count</code></td>
      <td><code class="language-plaintext highlighter-rouge">-c</code></td>
      <td><code class="language-plaintext highlighter-rouge">false</code></td>
      <td>Get the total number of relationships</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--help</code></td>
      <td><code class="language-plaintext highlighter-rouge">-h</code></td>
      <td> </td>
      <td>Display help for the command</td>
    </tr>
  </tbody>
</table>

<p><strong>Example — display the total count of registered relationships:</strong></p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~<span class="nv">$ </span>mesheryctl relationship <span class="nt">--count</span>
Total number of relationships: 597
</code></pre></div></div>

<hr />

<h2 id="mesheryctl-relationship-list"><code class="language-plaintext highlighter-rouge">mesheryctl relationship list</code></h2>

<p><strong>Description:</strong> Lists all relationships registered in Meshery Server, displaying their ID, kind, API version, model name, subtype, and type in a tabular format. Supports paginated output so you can navigate through large sets of results interactively.</p>

<p><strong>Flags:</strong></p>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Short</th>
      <th>Default</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--page</code></td>
      <td><code class="language-plaintext highlighter-rouge">-p</code></td>
      <td><code class="language-plaintext highlighter-rouge">1</code></td>
      <td>List next set of relationships at the specified page number</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--pagesize</code></td>
      <td> </td>
      <td><code class="language-plaintext highlighter-rouge">10</code></td>
      <td>Number of results per page</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--count</code></td>
      <td><code class="language-plaintext highlighter-rouge">-c</code></td>
      <td><code class="language-plaintext highlighter-rouge">false</code></td>
      <td>Display the total count of relationships only</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--help</code></td>
      <td><code class="language-plaintext highlighter-rouge">-h</code></td>
      <td> </td>
      <td>Display help for the command</td>
    </tr>
  </tbody>
</table>

<p><strong>Example — list all relationships (page 1, 10 results):</strong></p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~<span class="nv">$ </span>mesheryctl relationship list
Total number of relationships: 597
Page: 1
ID                                    KIND          API VERSION  MODEL NAME                             SUB TYPE   TYPE
0f9ba842-d709-4d2b-a60e-f4c2b46d02ad  edge          v1.0.0       aws-apigatewayv2-controller            network    non-binding
c360e677-c0e2-4f21-a50f-94c5318a4e21  edge          v1.0.0       aws-apigatewayv2-controller            reference  non-binding
023becab-18f5-4eae-bdd2-1ef03eecffd6  edge          v1.0.0       aws-apigatewayv2-controller            reference  non-binding
7a77e701-bf34-4a07-9aff-41e61b1d87dd  edge          v1.0.0       aws-apigatewayv2-controller            reference  non-binding
13f0e4f2-81f1-4714-b850-88a8fe0d8acd  edge          v1.0.0       aws-apigatewayv2-controller            reference  non-binding
644b97c4-7f9e-41d8-9676-deb34b873cea  hierarchical  v1.0.0       aws-apigatewayv2-controller            inventory  parent
896cb3d1-1b37-47cc-91af-5f9003ef5182  edge          v1.0.0       aws-apigatewayv2-controller            reference  non-binding
343d7ee3-bf0c-41fa-95ad-deb2d6562ba8  edge          v1.0.0       aws-applicationautoscaling-controller  reference  non-binding
ec82ff50-d8dc-4c55-bb0b-a5633546b0ca  edge          v1.0.0       aws-applicationautoscaling-controller  reference  non-binding
b98483ea-b70d-40fd-915f-7e624290cf42  edge          v1.0.0       aws-applicationautoscaling-controller  reference  non-binding
</code></pre></div></div>

<p><strong>Additional usage examples:</strong></p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># List relationships on a specific page</span>
mesheryctl relationship list <span class="nt">--page</span> 2

<span class="c"># List relationships with a custom page size</span>
mesheryctl relationship list <span class="nt">--pagesize</span> 25

<span class="c"># Display only the total count of relationships</span>
mesheryctl relationship list <span class="nt">--count</span>
</code></pre></div></div>

<hr />

<h2 id="mesheryctl-relationship-search"><code class="language-plaintext highlighter-rouge">mesheryctl relationship search</code></h2>

<p><strong>Description:</strong> Searches registered relationships used by different models. You can narrow down results by kind, type, subtype, and/or model name. At least one filter flag is required.</p>

<p><strong>Flags:</strong></p>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Short</th>
      <th>Default</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--kind</code></td>
      <td><code class="language-plaintext highlighter-rouge">-k</code></td>
      <td> </td>
      <td>Search relationships of a particular kind (e.g., <code class="language-plaintext highlighter-rouge">hierarchical</code>, <code class="language-plaintext highlighter-rouge">edge</code>)</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--type</code></td>
      <td><code class="language-plaintext highlighter-rouge">-t</code></td>
      <td> </td>
      <td>Search relationships of a particular type</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--subtype</code></td>
      <td><code class="language-plaintext highlighter-rouge">-s</code></td>
      <td> </td>
      <td>Search relationships of a particular subtype (e.g., <code class="language-plaintext highlighter-rouge">parent</code>, <code class="language-plaintext highlighter-rouge">binding</code>)</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--model</code></td>
      <td><code class="language-plaintext highlighter-rouge">-m</code></td>
      <td> </td>
      <td>Search relationships belonging to a particular model</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--page</code></td>
      <td><code class="language-plaintext highlighter-rouge">-p</code></td>
      <td><code class="language-plaintext highlighter-rouge">1</code></td>
      <td>Page number of results to fetch</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--help</code></td>
      <td><code class="language-plaintext highlighter-rouge">-h</code></td>
      <td> </td>
      <td>Display help for the command</td>
    </tr>
  </tbody>
</table>

<p><strong>Example — search for hierarchical relationships:</strong></p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~<span class="nv">$ </span>mesheryctl relationship search <span class="nt">--kind</span> hierarchical
Total number of relationships: 194
Page: 1
ID                                    KIND          API VERSION  MODEL NAME                    SUB TYPE   TYPE
644b97c4-7f9e-41d8-9676-deb34b873cea  hierarchical  v1.0.0       aws-apigatewayv2-controller   inventory  parent
b236f6ba-60a8-4e5e-a36d-f0c8b2fd87f4  hierarchical  v1.0.0       aws-documentdb-controller     inventory  parent
2efa3365-5e2d-4cd2-a313-408363419d4f  hierarchical  v1.0.0       aws-dynamodb-controller       inventory  parent
4b5fa9d9-80e7-44fa-a563-ad03ef590e83  hierarchical  v1.0.0       aws-ec2-controller            inventory  parent
f5303970-cbde-49f9-9878-4f13f31ec9ff  hierarchical  v1.0.0       aws-ec2-controller            inventory  parent
853279e4-c4b7-4b95-819a-4b3ec14319a4  hierarchical  v1.0.0       aws-ecs-controller            inventory  parent
eb0da592-9e2b-44de-8e4c-457f3743f2a5  hierarchical  v1.0.0       aws-efs-controller            inventory  parent
1a848bd2-14a9-4a4c-a6ff-2dda7116d1d6  hierarchical  v1.0.0       aws-eks-controller            inventory  parent
a933d19d-e447-4e13-a252-eba9451a3a6c  hierarchical  v1.0.0       aws-emrcontainers-controller  inventory  parent
4d6d9799-496a-46b6-84fa-c033f2e85b26  hierarchical  v1.0.0       aws-eventbridge-controller    inventory  parent
</code></pre></div></div>

<p><strong>Additional usage examples:</strong></p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Search by subtype</span>
mesheryctl relationship search <span class="nt">--subtype</span> parent

<span class="c"># Search by model and kind</span>
mesheryctl relationship search <span class="nt">--model</span> kubernetes <span class="nt">--kind</span> edge

<span class="c"># Search with pagination</span>
mesheryctl relationship search <span class="nt">--type</span> binding <span class="nt">--page</span> 2
</code></pre></div></div>

<hr />

<h2 id="mesheryctl-relationship-view"><code class="language-plaintext highlighter-rouge">mesheryctl relationship view</code></h2>

<p><strong>Description:</strong> Views the full definition of a specific relationship belonging to a given model. The command fetches the relationships registered for the model you specify, then presents an interactive selection prompt so you can pick the exact relationship you want to inspect. The output is rendered in YAML format by default, or in JSON if requested. You can also save the output to a file.</p>

<p><strong>Flags:</strong></p>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Short</th>
      <th>Default</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--output-format</code></td>
      <td><code class="language-plaintext highlighter-rouge">-o</code></td>
      <td><code class="language-plaintext highlighter-rouge">yaml</code></td>
      <td>Format to display in: <code class="language-plaintext highlighter-rouge">json</code> or <code class="language-plaintext highlighter-rouge">yaml</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--save</code></td>
      <td><code class="language-plaintext highlighter-rouge">-s</code></td>
      <td><code class="language-plaintext highlighter-rouge">false</code></td>
      <td>Save the output as a JSON or YAML file</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--help</code></td>
      <td><code class="language-plaintext highlighter-rouge">-h</code></td>
      <td> </td>
      <td>Display help for the command</td>
    </tr>
  </tbody>
</table>

<p><strong>Example — view relationships of the <code class="language-plaintext highlighter-rouge">kubernetes</code> model:</strong></p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~<span class="nv">$ </span>mesheryctl relationship view kubernetes
Use ↑/↓/←/→ to navigate, Ctrl+C to cancel
? Select item:
    kind: edge, EvaluationPolicy: , SubType: reference
    kind: edge, EvaluationPolicy: , SubType: firewall
  ▸ kind: edge, EvaluationPolicy: , SubType: firewall
    kind: edge, EvaluationPolicy: , SubType: mount
    kind: edge, EvaluationPolicy: , SubType: mount
↓   kind: edge, EvaluationPolicy: , SubType: mount
</code></pre></div></div>

<details><summary><b>kubernetes example</b></summary>

<div class="highlight">
  <pre class="highlight">
  <code yaml="">
id: a12b458d-221a-4559-95c9-b6e6e3f8bf6e
capabilities: null
evaluationQuery: ""
kind: edge
metadata:
    description: ""
    styles:
        primaryColor: ""
        svgColor: ""
        svgWhite: ""
    isAnnotation: false
    additionalproperties: {}
model:
    version: v1.0.0
    name: kubernetes
    displayName: Kubernetes
    id: 00000000-0000-0000-0000-000000000000
    registrant:
        kind: github
    model:
        version: v1.35.0-rc.1
modelid: 00000000-0000-0000-0000-000000000000
schemaVersion: relationships.meshery.io/v1alpha3
selectors:
    - allow:
        from:
            - id: null
              kind: StorageClass
              match:
                from:
                    - id: null
                      kind: self
                      mutatedRef:
                        - - component
                          - kind
                        - - displayName
                to:
                    - id: null
                      kind: PersistentVolumeClaim
                      mutatorRef:
                        - - component
                          - kind
                        - - configuration
                          - spec
                          - storageClassName
              match_strategy_matrix: []
              model:
                version: ""
                name: kubernetes
                displayName: ""
                id: 00000000-0000-0000-0000-000000000000
                registrant:
                    kind: github
                model:
                    version: ""
              patch: null
        to:
            - id: null
              kind: PersistentVolume
              match:
                from:
                    - id: null
                      kind: PersistentVolumeClaim
                      mutatedRef:
                        - - configuration
                          - spec
                          - storageClassName
                        - - configuration
                          - spec
                          - volumeName
                to:
                    - id: null
                      kind: self
                      mutatorRef:
                        - - displayName
                        - - configuration
                          - spec
                          - storageClassName
              match_strategy_matrix: []
              model:
                version: ""
                name: kubernetes
                displayName: ""
                id: 00000000-0000-0000-0000-000000000000
                registrant:
                    kind: github
                model:
                    version: ""
              patch: null
      deny:
        from: []
        to: []
subType: mount
status: enabled
type: binding
version: v1.0.0

  </code>
  </pre>
</div>

</details>

<p><strong>Additional usage examples:</strong></p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># View relationships in JSON format</span>
mesheryctl relationship view kubernetes <span class="nt">--output-format</span> json

<span class="c"># View relationships and save the output to a file</span>
mesheryctl relationship view kubernetes <span class="nt">--output-format</span> json <span class="nt">--save</span>
</code></pre></div></div>

<hr />

<h2 id="mesheryctl-relationship-generate"><code class="language-plaintext highlighter-rouge">mesheryctl relationship generate</code></h2>

<p><strong>Description:</strong> Generates a relationships documentation file (JSON format) by reading data from a Google Spreadsheet. This is primarily a maintainer-facing command used to keep the Meshery documentation up to date with the latest relationship definitions. It requires a valid spreadsheet ID and base64-encoded Google API credentials.</p>

<p><strong>Flags:</strong></p>

<table>
  <thead>
    <tr>
      <th>Flag</th>
      <th>Short</th>
      <th>Default</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--spreadsheet-id</code></td>
      <td> </td>
      <td> </td>
      <td><em>(Required)</em> Google Spreadsheet ID containing relationship data</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--spreadsheet-cred</code></td>
      <td> </td>
      <td> </td>
      <td><em>(Required)</em> Base64-encoded Google API credentials</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">--help</code></td>
      <td><code class="language-plaintext highlighter-rouge">-h</code></td>
      <td> </td>
      <td>Display help for the command</td>
    </tr>
  </tbody>
</table>

<p><strong>Example — generate relationship documentation from a spreadsheet:</strong></p>

<p>```shell
~$ mesheryctl relationship generate <br />
    –spreadsheet-id spreadsheet-id <br />
    –spreadsheet-cred $CRED
Relationships data generated in docs/_data/RelationshipsData.json
—</p>

<h2 id="conclusion">Conclusion</h2>

<p>The <code class="language-plaintext highlighter-rouge">mesheryctl relationship</code> commands give you direct CLI access to the relationship layer of the Meshery model ecosystem. Whether you want a quick count of registered relationships, need to search for a specific kind, want to inspect a full relationship definition, or are maintaining the documentation data, there is a subcommand for every need.</p>

<p>As a next step, try combining <code class="language-plaintext highlighter-rouge">search</code> and <code class="language-plaintext highlighter-rouge">view</code> together: use <code class="language-plaintext highlighter-rouge">search</code> to find a relationship relevant to your model, then use <code class="language-plaintext highlighter-rouge">view</code> to inspect its full definition and save it locally for reference.</p>

<p>For more details on how relationships work under the hood, visit the official documentation:</p>

<ul>
  <li><a href="https://docs.meshery.io/concepts/logical/relationships">Meshery Relationships concept</a></li>
  <li><a href="https://docs.meshery.io/reference/mesheryctl/relationship">mesheryctl relationship CLI reference</a></li>
</ul>]]></content><author><name>Matthieu Evrin</name></author><category term="mesheryctl" /><summary type="html"><![CDATA[If you are managing cloud-native infrastructure with Meshery, understanding how your components interact is critical. This post walks you through the mesheryctl relationship commands and celebrates an important milestone: their officially graduated from experimental mode.]]></summary></entry><entry><title type="html">Meshery Workspaces</title><link href="https://meshery.io/blog/2026/02/2026-02-16-meshery-workspaces-enabling-cross-team-collaboration/" rel="alternate" type="text/html" title="Meshery Workspaces" /><published>2026-02-16T16:00:00+00:00</published><updated>2026-02-16T16:00:00+00:00</updated><id>https://meshery.io/blog/2026/02/meshery-workspaces-enabling-cross-team-collaboration</id><content type="html" xml:base="https://meshery.io/blog/2026/02/2026-02-16-meshery-workspaces-enabling-cross-team-collaboration/"><![CDATA[<p>In modern cloud-native environments, platform engineering teams face a persistent challenge: how do you enable multiple teams to collaborate on infrastructure designs, share best practices, and maintain consistency across diverse deployment environments—all while preserving team autonomy and security boundaries?</p>

<p>Enter <strong>Meshery Workspaces</strong>: a powerful organizational construct designed to facilitate exactly this kind of cross-team collaboration. Workspaces provide isolated, multi-tenant environments where teams can design, test, and share cloud-native infrastructure patterns without stepping on each other’s toes.</p>

<h2 id="what-are-meshery-workspaces">What Are Meshery Workspaces?</h2>

<p>At their core, <a href="https://docs.meshery.io/concepts/logical/workspaces">Workspaces</a> are logical boundaries within Meshery that allow you to organize your infrastructure designs, deployments, and environments. Think of them as collaborative project spaces where:</p>

<ul>
  <li><strong>Teams maintain separate environments</strong> for development, staging, and production</li>
  <li><strong>Designs and configurations are scoped</strong> to specific organizational units or projects</li>
  <li><strong>Access controls ensure</strong> that only authorized team members can view or modify resources</li>
  <li><strong>Shared catalog items</strong> can be imported and customized without affecting the source</li>
</ul>

<p>Each Workspace operates as an independent namespace, complete with its own set of:</p>
<ul>
  <li><strong>Designs</strong>: Visual topology configurations for your infrastructure</li>
  <li><strong>Environments</strong>: Kubernetes clusters and cloud provider connections</li>
  <li><strong>Credentials</strong>: Securely stored access tokens and keys</li>
  <li><strong>Team members</strong>: Role-based access control for collaborators</li>
</ul>

<h2 id="why-platform-engineers-love-workspaces">Why Platform Engineers Love Workspaces</h2>

<p>Platform engineering is fundamentally about creating self-service capabilities that empower development teams while maintaining organizational standards. Workspaces excel at this by providing:</p>

<h3 id="1-isolation-with-collaboration">1. <strong>Isolation with Collaboration</strong></h3>
<p>Workspaces give each team their own sandbox to experiment and iterate, while still allowing platform engineers to share golden paths and reference architectures across the organization.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Organization
├── Platform Team Workspace
│   ├── Reference architectures
│   ├── Approved patterns
│   └── Baseline configurations
├── Backend Team Workspace
│   ├── Microservices infrastructure
│   └── API gateway configurations
└── Data Team Workspace
    ├── Data pipeline designs
    └── Analytics infrastructure
</code></pre></div></div>

<h3 id="2-design-reusability">2. <strong>Design Reusability</strong></h3>
<p>Rather than reinventing the wheel, teams can clone proven designs from Meshery’s <a href="https://meshery.io/catalog">public Catalog</a> or from other internal Workspaces. This accelerates development while ensuring consistency with organizational standards.</p>

<h3 id="3-environment-management">3. <strong>Environment Management</strong></h3>
<p>Platform engineers can configure multiple Kubernetes clusters and cloud environments within a Workspace, making it trivial to promote designs from dev to staging to production with confidence.</p>

<h3 id="4-audit-and-compliance">4. <strong>Audit and Compliance</strong></h3>
<p>Every action within a Workspace is tracked, providing clear visibility into who made what changes and when. This audit trail is invaluable for compliance and troubleshooting.</p>

<h2 id="real-world-example-multi-team-microservices-platform">Real-World Example: Multi-Team Microservices Platform</h2>

<p>Let’s walk through a practical scenario. Imagine you’re a platform engineer at a company building a microservices platform. You have:</p>
<ul>
  <li>A <strong>Platform Team</strong> maintaining infrastructure standards</li>
  <li>Multiple <strong>application teams</strong> deploying microservices</li>
  <li>A <strong>security team</strong> enforcing policies</li>
</ul>

<p>Here’s how you’d leverage Workspaces:</p>

<h3 id="step-1-create-the-golden-path-workspace">Step 1: Create the Golden Path Workspace</h3>
<p>The Platform Team creates a Workspace containing reference architectures:</p>
<ul>
  <li>Service mesh baseline (Istio with mTLS enabled)</li>
  <li>Observability stack (Prometheus, Grafana, Jaeger)</li>
  <li>Ingress patterns with rate limiting</li>
  <li>Database operator configurations</li>
</ul>

<p>These designs are marked as “approved” and published to your organization’s internal catalog section.</p>

<h3 id="step-2-application-teams-clone-and-customize">Step 2: Application Teams Clone and Customize</h3>
<p>The Backend Team needs to deploy a new microservice. Instead of starting from scratch:</p>

<ol>
  <li>They navigate to the <a href="https://meshery.io/catalog">Meshery Catalog</a></li>
  <li>Find the “Service Mesh Baseline” design from the Platform Team’s published patterns</li>
  <li>Click <strong>“Clone to Workspace”</strong></li>
  <li>The design appears in their Workspace, ready for customization</li>
</ol>

<p>Now they can:</p>
<ul>
  <li>Adjust resource limits for their specific workload</li>
  <li>Add application-specific sidecars</li>
  <li>Configure custom routing rules</li>
  <li>Deploy to their dev environment for testing</li>
</ul>

<h3 id="step-3-iterate-with-confidence">Step 3: Iterate with Confidence</h3>
<p>As the Backend Team refines their design:</p>
<ul>
  <li>Changes are isolated to their Workspace</li>
  <li>They can validate configurations against Kubernetes and OPA policies</li>
  <li>The visual designer shows real-time topology updates</li>
  <li>Once tested, they promote to staging and production environments</li>
</ul>

<h3 id="step-4-share-back-to-the-organization">Step 4: Share Back to the Organization</h3>
<p>After proving their pattern works, the Backend Team can publish their customized design back to the internal catalog with a description like “High-Throughput API Service Pattern.” Now other teams benefit from their learnings.</p>

<h2 id="workspace-features-that-drive-adoption">Workspace Features That Drive Adoption</h2>

<h3 id="visual-design-collaboration">Visual Design Collaboration</h3>
<p>Meshery’s <a href="https://docs.meshery.io/concepts/logical/designs">visual designer</a> is Workspace-aware, meaning multiple team members can collaborate on the same infrastructure design in real-time, similar to Figma for infrastructure-as-code.</p>

<h3 id="environment-promotion">Environment Promotion</h3>
<p>Workspaces support <a href="https://docs.meshery.io/concepts/logical/environments">multi-environment workflows</a>, allowing you to:</p>
<ul>
  <li>Test designs in a sandbox cluster</li>
  <li>Validate in staging with production-like data</li>
  <li>Deploy to production with a single click (with appropriate RBAC checks)</li>
</ul>

<h3 id="team-management">Team Management</h3>
<p>Fine-grained <a href="https://docs.meshery.io/concepts/logical/teams">role-based access control</a> ensures:</p>
<ul>
  <li><strong>Owners</strong> can manage Workspace settings and membership</li>
  <li><strong>Editors</strong> can modify designs and environments</li>
  <li><strong>Viewers</strong> can browse designs without making changes</li>
</ul>

<h3 id="integration-with-gitops">Integration with GitOps</h3>
<p>Workspaces integrate seamlessly with GitOps workflows:</p>
<ul>
  <li>Export designs as Kubernetes manifests or Helm charts</li>
  <li>Commit to your Git repository</li>
  <li>Let your CI/CD pipeline apply changes</li>
  <li>Meshery tracks drift between desired and actual state</li>
</ul>

<h2 id="try-it-yourself-clone-a-design-from-the-catalog">Try It Yourself: Clone a Design from the Catalog</h2>

<p>Ready to experience the power of Workspaces? Here’s a hands-on challenge:</p>

<ol>
  <li><strong>Sign up for Meshery Cloud</strong> (free tier available) or <a href="https://docs.meshery.io/installation">install Meshery locally</a></li>
  <li><strong>Navigate to the Catalog</strong> at <a href="https://meshery.io/catalog">meshery.io/catalog</a></li>
  <li><strong>Find a design that interests you</strong>, such as:
    <ul>
      <li><a href="https://meshery.io/catalog?search=observability">Kubernetes Observability Stack</a></li>
      <li><a href="https://meshery.io/catalog?search=istio">Istio Service Mesh Deployment</a></li>
      <li><a href="https://meshery.io/catalog?search=nginx">NGINX Ingress with Rate Limiting</a></li>
    </ul>
  </li>
  <li><strong>Click “Clone to Workspace”</strong> - this imports the design into your personal Workspace</li>
  <li><strong>Open the Visual Designer</strong> and explore the topology:
    <ul>
      <li>See how components are connected</li>
      <li>Adjust configurations to match your environment</li>
      <li>Add or remove resources as needed</li>
    </ul>
  </li>
  <li><strong>Connect your Kubernetes cluster</strong> (if you haven’t already)</li>
  <li><strong>Deploy the design</strong> to your environment with a single click</li>
  <li><strong>Monitor the deployment</strong> through Meshery’s built-in observability features</li>
</ol>

<p>Within minutes, you’ll have a production-ready infrastructure pattern running in your cluster, customized to your needs. That’s the power of Workspaces and the Catalog working together.</p>

<h2 id="best-practices-for-workspace-organization">Best Practices for Workspace Organization</h2>

<p>Based on patterns we’ve seen from successful platform engineering teams:</p>

<h3 id="structure-by-team-and-environment">Structure by Team and Environment</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>├── platform-team-workspace
│   ├── Environment: prod-cluster
│   ├── Environment: staging-cluster
│   └── Designs: Reference architectures
├── backend-team-dev-workspace
│   ├── Environment: dev-cluster-1
│   └── Designs: Experimental features
└── backend-team-prod-workspace
    ├── Environment: prod-cluster
    └── Designs: Production deployments
</code></pre></div></div>

<h3 id="establish-naming-conventions">Establish Naming Conventions</h3>
<ul>
  <li>Workspaces: <code class="language-plaintext highlighter-rouge">&lt;team&gt;-&lt;environment&gt;-workspace</code></li>
  <li>Designs: <code class="language-plaintext highlighter-rouge">&lt;service&gt;-&lt;version&gt;-&lt;purpose&gt;</code></li>
  <li>Environments: <code class="language-plaintext highlighter-rouge">&lt;cluster-name&gt;-&lt;region&gt;</code></li>
</ul>

<h3 id="implement-a-promotion-workflow">Implement a Promotion Workflow</h3>
<ol>
  <li>Develop and test in team dev Workspace</li>
  <li>Promote stable designs to team staging Workspace</li>
  <li>After validation, promote to team prod Workspace</li>
  <li>Share successful patterns to organization-wide Workspace</li>
</ol>

<h3 id="leverage-teams-and-rbac">Leverage Teams and RBAC</h3>
<ul>
  <li>Create Teams that span multiple Workspaces</li>
  <li>Grant minimum necessary permissions</li>
  <li>Use Viewer role for cross-team visibility</li>
  <li>Reserve Owner role for platform engineers</li>
</ul>

<h2 id="the-future-of-collaborative-infrastructure">The Future of Collaborative Infrastructure</h2>

<p>Meshery Workspaces represent a fundamental shift in how platform engineering teams approach infrastructure management. By combining:</p>
<ul>
  <li><strong>Visual design</strong> tools that make complex topologies understandable</li>
  <li><strong>Collaborative features</strong> that break down silos</li>
  <li><strong>Reusable patterns</strong> through the Catalog</li>
  <li><strong>Strong isolation</strong> with flexible sharing</li>
</ul>

<p>Workspaces empower organizations to move faster without sacrificing control. They enable the kind of self-service infrastructure that development teams crave, while giving platform engineers the governance capabilities they need.</p>

<h2 id="get-started-today">Get Started Today</h2>

<p>Whether you’re managing infrastructure for a small startup or orchestrating deployments across a large enterprise, Meshery Workspaces can transform how your teams collaborate.</p>

<p><strong>Start your journey:</strong></p>
<ul>
  <li>📚 <a href="https://docs.meshery.io/concepts/logical/workspaces">Read the Workspaces documentation</a></li>
  <li>🎨 <a href="https://docs.meshery.io/concepts/logical/designs">Explore the Visual Designer</a></li>
  <li>📦 <a href="https://meshery.io/catalog">Browse the Catalog</a></li>
  <li>🚀 <a href="https://docs.meshery.io/installation">Install Meshery</a></li>
</ul>

<p><strong>Join the community:</strong></p>
<ul>
  <li>💬 <a href="http://slack.meshery.io">Slack</a></li>
  <li>🐙 <a href="https://github.com/meshery/meshery">GitHub</a></li>
  <li>🐦 <a href="https://twitter.com/mesheryio">Twitter</a></li>
</ul>

<p>Clone a design, customize it in your Workspace, and deploy it to your cluster today. Experience firsthand how Workspaces can accelerate your platform engineering efforts while maintaining the control and visibility your organization demands.</p>

<hr />

<p><em>Have questions about Workspaces or want to share your use case? Join us in the <a href="https://slack.meshery.io">Meshery community</a> - we’d love to hear from you!</em></p>]]></content><author><name>Meshery Team</name></author><category term="meshery" /><category term="workspaces" /><category term="platform-engineering" /><category term="collaboration" /><summary type="html"><![CDATA[In modern cloud-native environments, platform engineering teams face a persistent challenge: how do you enable multiple teams to collaborate on infrastructure designs, share best practices, and maintain consistency across diverse deployment environments—all while preserving team autonomy and security boundaries?]]></summary></entry><entry><title type="html">Certified Meshery Contributors Share Their Experiences</title><link href="https://meshery.io/blog/2026/01/2026-01-28-certified-meshery-contributors-share-their-experience/" rel="alternate" type="text/html" title="Certified Meshery Contributors Share Their Experiences" /><published>2026-01-28T13:00:00+00:00</published><updated>2026-01-28T13:00:00+00:00</updated><id>https://meshery.io/blog/2026/01/certified-meshery-contributors-share-their-experience</id><content type="html" xml:base="https://meshery.io/blog/2026/01/2026-01-28-certified-meshery-contributors-share-their-experience/"><![CDATA[<p>The launch of the <a href="https://cloud.meshery.io/academy/certifications/c5ada327-8a58-4c8a-b9fa-51b95696488c/certified-meshery-contributor">Certified Meshery Contributor (CMC)</a> certification marked an important milestone for the Meshery project — the first CNCF certification of its kind - designed to uplevel and validate the skills of contributors, who are actively shaping the Meshery ecosystem through real, hands-on open source work. Following the <a href="/blog/2025/10/2025-10-27-certified-meshery-contributor/">announcement</a>, contributors from across the community stepped forward to take the CMC and share their journey. In this post, Certified Meshery Contributors talk about what the certification was really like, what they learned along the way, and why they believe the CMC is worth pursuing.</p>

<h2 id="what-preparing-for-the-cmc-looked-like">What Preparing for the CMC Looked Like</h2>

<p>The Certified Meshery Contributor certification validates technical proficiency gained through contributing to Meshery across its major <a href="https://docs.meshery.io/concepts/architecture">architectural domains</a>, including Meshery Server, CLI, UI, Models, and Extensibility.</p>

<p>For most contributors, preparing for the CMC was a natural extension of their existing work in the project.</p>

<blockquote>
  <p>“CMC was a really good learning experience for me. During the process, I explored Meshery more deeply — the documentation, concepts, and workflows, and understood better how the community works and how contributions are reviewed.” — <a href="https://cloud.meshery.io/user/f457b1bd-cc89-4709-9127-0afbcfbdd972">Bhumika Garg</a></p>
</blockquote>

<div style="text-align: center;">
<a href="https://cloud.meshery.io/academy/certificates/9c6c8d01-28ee-449e-a73c-09003ae984ac"><img alt="Certified Meshery Contributor Credential" src="/assets/images/posts/2026/certified-meshery-contributors-share-their-experience/example-certified-meshery-contributor-credential.png" style="max-width:100%; height:auto;" /></a><br />
<a href="https://cloud.meshery.io/academy/certificates/9c6c8d01-28ee-449e-a73c-09003ae984ac">View Certified Meshery Contributor credential</a>
</div>

<h2 id="the-exam-experience">The Exam Experience</h2>

<p>The CMC exam is a time-bound, online assessment designed to reflect real contribution scenarios rather than theoretical knowledge.</p>

<blockquote>
  <p>“Calling it ‘just a certification’ would be an understatement. Before going through it, I didn’t know how to approach such a large codebase. The self-paced lectures and resources in the academy made contributing significantly easier. The exam felt closely aligned with the kind of understanding you build while working hands-on in the project.” — Pragalva Sapkota</p>
</blockquote>

<blockquote>
  <p>“CMC feels less like a conventional certification and more like a structured way to deepen understanding of Meshery. Even though the assessment is MCQ-based, preparing for it naturally pushes you to explore the documentation thoroughly, connect different parts of the system, and reason from real contribution experience. It encourages learning by understanding how things fit together rather than memorizing facts, which makes the certification both meaningful and practical for contributors.” — Kaivalaya Dua</p>
</blockquote>

<p><br /></p>

<p><img src="/assets/images/posts/2026/certified-meshery-contributors-share-their-experience/celebrated-certified-meshery-contributors-2.png" alt="Certified Meshery Contributors" style="max-width:100%; display: block; margin: auto;" /></p>

<h3 id="what-contributors-learned-through-the-certification-journey">What Contributors Learned Through the Certification Journey</h3>

<p>Through the certification journey, contributors deepened their understanding of Meshery as a platform and as a community-driven open source project.</p>

<blockquote>
  <p>“Certification helped me understand Meshery in a clear and structured way, with all the concepts and tools explained together in one place. It helped me understand schema-driven development and how Meshery maintains a single source of truth across the Server, UI, and CLI. The documentation quality is really good and well-maintained, which makes learning much smoother.” — Suhani
“The CMC has been a very good learning journey for me. Before this, I knew a little about Meshery, but through this certification I understood it in a much better and more practical way. While preparing, I explored the documentation, tried things on my own, and learned how the community works and supports new contributors.” — Anmol Sah</p>
</blockquote>

<p><br /></p>

<p><img src="/assets/images/posts/2026/certified-meshery-contributors-share-their-experience/celebrated-certified-meshery-contributors-4.png" alt="Certified Meshery Contributors" style="max-width:100%; display: block; margin: auto;" /></p>

<h4 id="what-earning-the-certification-means-to-contributors">What Earning the Certification Means to Contributors</h4>

<p>Earning the Certified Meshery Contributor badge represents recognition of consistent, meaningful contributions to the project.</p>

<blockquote>
  <p>“If you feel stuck or unsure about how to start contributing to Meshery or any open source project, this program teaches you a lot. I’ve explored other communities and projects too, but the quality of this course is genuinely remarkable.” — Pragalva Sapkota</p>
</blockquote>

<p><br /></p>

<p><img src="/assets/images/posts/2026/certified-meshery-contributors-share-their-experience/celebrated-certified-meshery-contributors-3.png" alt="Certified Meshery Contributors" style="max-width:100%; display: block; margin: auto;" /></p>

<h3 id="advice-for-future-certified-meshery-contributor-candidates">Advice for Future Certified Meshery Contributor Candidates</h3>

<p>Certified contributors also shared advice for those considering the CMC certification.</p>

<blockquote>
  <p>“Don’t just read, try things hands-on, go through the documentation properly, and ask questions in the community whenever you’re stuck.” — Bhumika Garg</p>
</blockquote>

<blockquote>
  <p>“Don’t rush through the certification. Take time to understand each concept, try things hands-on while going through the units, and don’t hesitate to ask questions in the community whenever you feel stuck.” — Suhani</p>
</blockquote>

<p><br /></p>

<p><img src="/assets/images/posts/2026/certified-meshery-contributors-share-their-experience/celebrated-certified-meshery-contributors-1.png" alt="Certified Meshery Contributors" style="max-width:100%; display: block; margin: auto;" /></p>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>The Certified Meshery Contributor certification reflects what open source contribution is all about, learning by doing, collaborating openly, and growing alongside a community.
The experiences shared by Certified Meshery Contributors highlight that the CMC is not just an exam, but recognition of the skills and understanding gained through real participation in the Meshery ecosystem. Visit the <a href="https://cloud.meshery.io/academy/certifications/c5ada327-8a58-4c8a-b9fa-51b95696488c/certified-meshery-contributor">Certified Meshery Contributor exam page</a> to learn more and register.
If you’re already contributing to Meshery or planning to start, the CMC is a meaningful next step in that journey.</p>

<p><em>- Meshery Maintainers</em></p>]]></content><author><name>Meshery Maintainers</name></author><category term="community" /><category term="open-source" /><summary type="html"><![CDATA[The launch of the Certified Meshery Contributor (CMC) certification marked an important milestone for the Meshery project — the first CNCF certification of its kind - designed to uplevel and validate the skills of contributors, who are actively shaping the Meshery ecosystem through real, hands-on open source work. Following the announcement, contributors from across the community stepped forward to take the CMC and share their journey. In this post, Certified Meshery Contributors talk about what the certification was really like, what they learned along the way, and why they believe the CMC is worth pursuing.]]></summary></entry><entry><title type="html">The Meshery Umbrella Expands</title><link href="https://meshery.io/blog/2025/meshery-ecosystem-expansion" rel="alternate" type="text/html" title="The Meshery Umbrella Expands" /><published>2025-11-04T18:00:00+00:00</published><updated>2025-11-04T18:00:00+00:00</updated><id>https://meshery.io/blog/2025/meshery-extensions-org</id><content type="html" xml:base="https://meshery.io/blog/2025/meshery-ecosystem-expansion"><![CDATA[<p>Meshery’s <a href="/blog/sixth-highest-velocity-cncf-project">high project velocity</a> necessitates a revision in its governance and organizational structure to align with the scale of its growing complexity and community contributions. To best serve its expansive ecosystem, Meshery maintainers have opted to partition its numerous GitHub repositories into two distinct organizations: <a href="https://github.com/meshery">Meshery</a> for the core platform and <a href="https://github.com/meshery-extensions">Meshery Extensions</a> for <a href="https://meshery.io/extensions">extensions</a>.</p>

<p>This strategic move aims to enhance the project’s structure, manageability, scalability, and community engagement. This post outlines the rationale, suggested governance structure, support expectations, and project mechanics behind this decision, drawing parallels with similar strategies employed by other graduated projects.</p>

<h2 id="rationale-for-repository-partitioning">Rationale for Repository Partitioning</h2>

<p>The decision to split Meshery’s repositories into two GitHub organizations is driven by several strategic considerations.</p>

<h3 id="project-architecture">Project Architecture</h3>

<p>Meshery’s architectural project structure is that of a highly extensible, self-service, management platform. With every feature developed, rigorous consideration is given to extensibility as is evident by the ubiquity of <a href="https://docs.meshery.io/extensibility#extension-points">extension points</a> throughout Meshery’s architecture.</p>

<h3 id="modularity-and-focus">Modularity and Focus</h3>

<p>Separating the core platform from extensions allows the Meshery core team to concentrate on maintaining and enhancing the primary platform, which includes critical components like Meshery Operator and MeshSync. Extensions, such as adapters for specific cloud native technologies, can be developed and maintained independently by community contributors or specialized teams. This modularity ensures that the core platform remains robust and focused.</p>

<h3 id="project-scalability">Project Scalability</h3>

<p>As Meshery supports over 300 integrations and continues to grow, the number of extensions is expected to increase. Managing these within a single organization could become unwieldy. A separate organization for extensions simplifies permission management, contribution processes, and release cycles, making the ecosystem more scalable.</p>

<ul>
  <li><strong>Community Ownership and Maintenance:</strong> Projects within <code class="language-plaintext highlighter-rouge">meshery-extensions</code> are generally initiated, developed, and maintained by members of the wider Meshery community, rather than the core Meshery maintainers. This allows the ecosystem to scale beyond what the core team can directly support.</li>
  <li><strong>Clearer Support Expectations:</strong> Separating community contributions makes it clearer that projects in <code class="language-plaintext highlighter-rouge">meshery-extensions</code> might have different maintenance levels, release cadences, and support guarantees compared to the core Meshery components. Users understand they are relying on community support for these specific integrations.</li>
</ul>

<h3 id="community-engagement">Community Engagement</h3>

<p>By providing a dedicated space for extensions, Meshery encourages community contributions. Developers can create and maintain extensions without needing deep involvement in the core platform’s development, fostering a vibrant ecosystem. This approach aligns with Meshery’s emphasis on collaborative design and operation, as highlighted in its documentation (Meshery Overview). In essence, <code class="language-plaintext highlighter-rouge">meshery-extensions</code> fosters a vibrant ecosystem around Meshery by providing a designated, community-centric space for extensions, integrations, and tooling, keeping the core project focused and manageable while enabling broad community participation.</p>

<ul>
  <li><strong>Incubation and Experimentation:</strong> The separate organization acts as an incubator for new ideas, providers, or tooling related to Meshery. Projects might start here and, if they gain significant traction and stability, could potentially be considered for migration or closer integration with the core project.</li>
  <li><strong>Ecosystem Growth:</strong> Part of Meshery’s power lies in its ability to manage <em>any</em> infrastructure via Providers, <a href="https://docs.meshery.io/concepts/logical/models">Models</a>, Adapters, and its other extension points. Since there are countless APIs and services, <code class="language-plaintext highlighter-rouge">meshery-extensions</code> serves as the place for the community to build and share Providers for less common cloud services, specific SaaS platforms, or even internal company APIs, without needing official endorsement or maintenance from the core maintainers.</li>
</ul>

<h2 id="governance-structure">Governance Structure</h2>

<p>This expansion allows for different governance models or maintainer structures for community projects compared to the core project. To effectively manage the two organizations, Meshery can adopt a governance model that balances control over the core platform with flexibility for extensions, drawing from its existing governance (Meshery Governance) and Kubernetes’ SIG model.</p>

<h3 id="core-platform-githubcommeshery">Core Platform (<a href="https://github.com/meshery">github.com/meshery</a>)</h3>

<ul>
  <li><strong>Governance</strong>: Governed by the core Meshery maintainers, as outlined in the project’s governance document. Roles include contributors, organization members, and maintainers, with clear processes for becoming a maintainer (e.g., nomination, voting by existing maintainers).</li>
  <li><strong>Responsibilities</strong>: Maintainers review, approve, and merge pull requests, manage releases, and ensure the platform’s stability and alignment with CNCF standards.</li>
  <li><strong>Decision-Making</strong>: Decisions are made through consensus among maintainers, with regular meetings and transparent communication via Slack and community forums.</li>
</ul>

<h3 id="extensions-githubcommeshery-extensions">Extensions (<a href="https://github.com/meshery-extensions">github.com/meshery-extensions</a>)</h3>

<ul>
  <li><strong>Governance</strong>: Each extension may have its own maintainers, potentially with a lighter governance structure to encourage innovation. A review process by the core team ensures extensions meet quality and compatibility standards.</li>
  <li><strong>Maintainer Selection</strong>: Extension maintainers can be nominated by community members or self-nominated, with approval from the core team based on contribution history and technical expertise.</li>
  <li><strong>Autonomy</strong>: Extension teams have autonomy over their development processes, provided they adhere to Meshery’s code of conduct and integration guidelines.</li>
</ul>

<h3 id="oversight-and-coordination">Oversight and Coordination</h3>

<ul>
  <li><strong>Steering Committee</strong>: A steering committee, comprising core maintainers and representatives from active extension teams, oversee cross-organization alignment, resolve conflicts, and approve new extensions.</li>
  <li><strong>Transparency</strong>: Both organizations maintain open communication with public meeting minutes, discussion forums, and regular updates to the community.</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>Core Platform</th>
      <th>Extensions</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Governance</strong></td>
      <td>Structured, led by core maintainers</td>
      <td>Flexible, per-extension maintainers</td>
    </tr>
    <tr>
      <td><strong>Maintainer Selection</strong></td>
      <td>Nomination, 2/3rds majority vote</td>
      <td>Nomination, core team approval</td>
    </tr>
    <tr>
      <td><strong>Decision-Making</strong></td>
      <td>Consensus among maintainers</td>
      <td>Extension team consensus, core oversight</td>
    </tr>
    <tr>
      <td><strong>Communication</strong></td>
      <td>Public meetings, Slack, forums</td>
      <td>Public issues, Slack, optional meetings</td>
    </tr>
  </tbody>
</table>

<h2 id="delineated-support-expectations">Delineated Support Expectations</h2>

<p>Support expectations differ between the core platform and extensions to reflect their distinct roles and maintenance models.</p>

<h3 id="core-platform">Core Platform</h3>

<ul>
  <li><strong>Full Support</strong>: The core team provides regular updates, bug fixes, and feature enhancements, ensuring stability for critical components like Meshery Operator and MeshSync.</li>
  <li><strong>Documentation</strong>: Comprehensive guides, such as installation instructions and CLI usage, are maintained (Meshery Documentation).</li>
  <li><strong>Community Support</strong>: Active engagement through Slack, forums, and weekly newcomer meetings supports users and contributors.</li>
</ul>

<h3 id="extensions">Extensions</h3>

<ul>
  <li><strong>Variable Support</strong>: Support depends on the extension’s maintainers. Core team-maintained extensions (e.g., Istio adapter) receive robust support, while community-maintained ones may have limited support.</li>
  <li><strong>Clear Labeling</strong>: Documentation should indicate the support level (e.g., “Official” vs. “Community”) for each extension to set user expectations.</li>
  <li><strong>Integration Support</strong>: The core platform provides stable APIs and extension points, ensuring compatibility, with guidelines for developers (Meshery Extensions).</li>
</ul>

<h3 id="user-guidance">User Guidance</h3>

<ul>
  <li><strong>Documentation</strong>: Both core and extension documentation should be accessible, with clear instructions on installation, usage, and troubleshooting.</li>
  <li><strong>Community Channels</strong>: Users can seek help via <a href="https://slack.meshery.io">Slack</a>, GitHub issues, or the <a href="https://meshery.io/community#discussion-forums">discussion forum</a>.</li>
</ul>

<h2 id="project-mechanics">Project Mechanics</h2>

<p>The mechanics of managing two organizations involve distinct development, testing, and integration processes to ensure a cohesive ecosystem.Development Process</p>

<ul>
  <li><strong>Platform</strong>: Follows a structured release cycle with <a href="https://docs.meshery.io/project/contributing/build-and-release">stable and edge channels</a>. Changes undergo rigorous review to maintain stability. Notify platform extenders and system integrators of upcoming changes in the underlying framework to ensure time is afforded to maintain compatibility.</li>
  <li><strong>Extensions</strong>: Operate on independent release cycles, allowing rapid iteration. Developers use Meshery’s extension points to integrate with the core platform, following <a href="https://docs.meshery.io/project/contributing">contribution guidelines</a>.</li>
</ul>

<h3 id="integration-testing">Integration Testing</h3>

<ul>
  <li><strong>Compatibility Testing</strong>: Extensions are tested against multiple core platform versions to ensure compatibility, using guidance for <a href="https://docs.meshery.io/extensibility/verify-compatibility">verifying compatibility</a> between core platform and extensions.</li>
  <li><strong>Automated Pipelines</strong>: GitHub Actions automate testing and snapshot generation, as seen in extensions like <a href="https://meshery.io/extensions/helm-kanvas-snapshot">Helm Kanvas Snapshot</a>.</li>
  <li><strong>Performance Testing</strong>: Meshery’s performance management features can be used to benchmark extensions, ensuring they meet efficiency standards.</li>
</ul>

<h3 id="documentation-and-onboarding">Documentation and Onboarding</h3>

<ul>
  <li><strong>Comprehensive Guides</strong>: Documentation covers core platform usage, extension development, and integration (<a href="https://docs.meshery.io">Meshery Docs</a>). The Newcomers’ Guide and MeshMates program aid onboarding (<a href="https://meshery.io/community">Meshery Community</a>).</li>
  <li><strong>Catalog and Templates</strong>: Meshery’s catalog of design templates includes extension configurations, promoting best practices (<a href="https://meshery.io/catalog">See Meshery Catalog</a>).</li>
  <li><strong>Community Resources</strong>: Weekly meetings, Slack channels, and the <a href="https://docs.meshery.io/community/handbook">community handbook</a> provide ongoing support.</li>
</ul>

<h2 id="reflections-on-other-projects">Reflections on Other Projects</h2>

<p>Meshery’s expansion strategy draws inspiration from successful models within the Cloud Native Computing Foundation (CNCF), like Argo, Crossplane, and Kubernetes. These projects demonstrate effective approaches to decentralized governance and focused development through the separation of core and community-contributed components.</p>

<p>Meshery aims to emulate Crossplane’s model of maintaining a clear distinction between its core platform (<a href="https://github.com/crossplane">github.com/crossplane</a>) and community contributions (<a href="https://github.com/crossplane-contrib">github.com/crossplane-contrib</a>). This separation allows third-party developers to extend Crossplane’s capabilities without affecting the core’s stability, a model that supports Meshery’s approach to fostering innovation while maintaining a reliable core.</p>

<p>Similarly, Meshery Extension teams operate with autonomy over their development processes, provided they adhere to Meshery’s core component frameworks and integration guidelines. This mirrors Argo’s model (<a href="https://github.com/argoproj-labs">github.com/argoproj-labs</a>), where projects function independently but align with broader project goals.</p>

<p>Kubernetes provides a robust model for decentralized governance through its use of <a href="https://github.com/kubernetes">github.com/kubernetes</a> for core components and <a href="https://github.com/kubernetes-sigs">github.com/kubernetes-sigs</a> for Special Interest Groups (SIGs). Each SIG acts as a mini-community with its own charter, leadership, and processes, all while aligning with overarching project goals, as outlined in the <a href="https://github.com/kubernetes/community/blob/master/governance.md">Kubernetes Governance</a>. Meshery’s extension organization can adopt a similar structure, enabling extension teams to operate autonomously within defined guidelines.</p>

<h2 id="meshery-umbrella-expands">Meshery Umbrella Expands</h2>

<p>See the current list of repositories under each organization: <a href="https://github.com/orgs/meshery/repositories">meshery org repos</a> and <a href="https://github.com/orgs/meshery-extensions/repositories">meshery-extensions org repos</a>.</p>

<p>Meshery’s partitioning of repositories into <a href="https://github.com/meshery">github.com/meshery</a> and <a href="https://github.com/meshery-extensions">github.com/meshery-extensions</a> is a strategic move to enhance modularity, scalability, and community engagement. By adopting a governance structure that balances control and flexibility, delineating clear support expectations, and implementing robust project mechanics, Meshery can effectively manage its growing ecosystem. Drawing inspiration from graduated projects, this approach positions Meshery to remain a leading CNCF project, empowering collaborative cloud native management.</p>

<link href="https://fonts.googleapis.com/css2?family=Baloo+Bhaina+2:wght@600&amp;display=swap" rel="stylesheet" />

<style type="text/css">
  .highlighted-text {
    font-family: 'Baloo Bhaina 2', cursive;
    text-align: center;
  }
  ul, li { line-height: 1rem;}
  ol li { line-height: 1rem;}
  .circular-callout {
    height: content-fit;
    text-align: center;
    align-content: center;
    block-size: fit-content;
    background-color: var(--color-primary-super-dark);
    > p {
      margin: 1rem 3rem;
      color: var(--color-primary-dark-light);
    }
  }
</style>]]></content><author><name>Lee Calcote, Sangram Rath, Matthieu Evrin, Mia Grenell</name></author><category term="meshery" /><category term="open-source" /><category term="governance" /><category term="extensions" /><summary type="html"><![CDATA[Meshery’s high project velocity necessitates a revision in its governance and organizational structure to align with the scale of its growing complexity and community contributions. To best serve its expansive ecosystem, Meshery maintainers have opted to partition its numerous GitHub repositories into two distinct organizations: Meshery for the core platform and Meshery Extensions for extensions.]]></summary></entry><entry><title type="html">Meshery, the Rocket Ship</title><link href="https://meshery.io/blog/sixth-highest-velocity-cncf-project" rel="alternate" type="text/html" title="Meshery, the Rocket Ship" /><published>2025-11-04T06:00:00+00:00</published><updated>2025-11-04T06:00:00+00:00</updated><id>https://meshery.io/blog/meshery-6th-highest-velocity-cncf-project</id><content type="html" xml:base="https://meshery.io/blog/sixth-highest-velocity-cncf-project"><![CDATA[<p>Meshery, the extensible cloud native management platform, has achieved a remarkable milestone: recognition as the sixth highest-velocity project within the Cloud Native Computing Foundation (CNCF). This accomplishment is impressive for any project, but <em>especially noteworthy given Meshery’s Sandbox maturity level</em> and its position among 237 CNCF projects! Just six months ago, we celebrated reaching the ninth spot in our <a href="https://meshery.io/blog/ninth-highest-velocity-cncf-project/">April 2025 announcement</a>. Climbing three ranks in such a short time underscores the project’s accelerating momentum and the unwavering dedication of our global community.</p>

<h2 id="from-humble-beginnings-to-high-velocity-powerhouse">From Humble Beginnings to High-Velocity Powerhouse</h2>

<p>Meshery’s journey reflects a consistent trajectory of growth and innovation in the cloud native ecosystem. As detailed in our incubation proposal and previous updates, the project’s velocity rankings have steadily improved:</p>

<ul>
  <li>2020-2021 (Jan): 33rd highest velocity</li>
  <li>2021-2022 (Jan): 31st highest velocity</li>
  <li>2022-2023 (Jan): 19th highest velocity</li>
  <li>2023-2024 (Jan): 10th highest velocity</li>
  <li>2024-2025 (Apr): 9th highest velocity</li>
  <li>2025-2025 (Jul): 6th highest velocity</li>
</ul>

<p>This progression is fueled by a 350% increase in code commits over the past year, surpassing 10,000 GitHub stars, and contributions from over 3,000 open source contributors. Our community now boasts more than 10,000 members, all united by a shared passion for simplifying cloud native infrastructure management.</p>

<p>As an extensible engineering platform, Meshery has blossomed far beyond its initial scope. Originally housed in a single GitHub organization, its expansive <a href="/blog/2025/meshery-ecosystem-expansion">ecosystem of extensions now spans two primary organizations</a>: <a href="https://github.com/meshery">meshery</a> for core components, and <a href="https://github.com/meshery-extensions">meshery-extensions</a> for ecosystem extensions and integrations. This structure supports over 300 out-of-the-box integrations with CNCF projects, enabling seamless lifecycle, configuration, and performance management across multi-cluster and multi-cloud environments.</p>

<p>Meshery empowers DevOps, Platform, SRE, and Application teams with features like collaborative GitOps, distributed performance management, and a visual designer for deployments. By addressing key challenges in cloud native operations, Meshery accelerates learning and experimentation, allowing users to explore CNCF projects hands-on.</p>

<h2 id="leading-the-way-in-mentorship-and-community-engagement">Leading the Way in Mentorship and Community Engagement</h2>

<p>Meshery’s success is deeply rooted in its vibrant, inclusive community. Our Newcomer Onboarding Program ensures contributions are accessible to all, fostering high activity in code commits, pull requests, and issue resolutions.</p>

<p>We’re proud to highlight Meshery’s role in nurturing the next generation of cloud native experts:</p>

<ul>
  <li><strong>#1 Most Popular Internship in the LFX Program</strong>: With over 10,000 applicants and over a 100 internship graduates, Meshery stands out as the <a href="https://mentorship.lfx.linuxfoundation.org/project/0d6fd362-04a1-4086-a6e7-ec753ed4a60b">top choice for aspiring developers</a> in the Linux Foundation’s LFX Mentorship program, offering hands-on projects in areas like model relationships for cloud services (AWS, GCP, Azure), workflow engines, and end-to-end testing. With terms spanning Spring, Summer, and Fall, mentees gain practical experience in DevOps, Kubernetes, and cloud native tools.</li>
  <li><strong>Marquee Project in Google Summer of Code (GSoC)</strong>: As a flagship participant in GSoC, Meshery provides <a href="https://summerofcode.withgoogle.com/programs/2025/organizations/meshery">mentees with opportunities to tackle real-world challenges</a> in distributed systems and best-practice patterns. Projects for 2025 include support for Azure in Meshery, end-to-end testing with BATS, kubectl plugins, and hands-on tutorials using Meshery Playground. This program emphasizes self-assessment, impact, and long-term relationships, ensuring mentees emerge with valuable experience.</li>
</ul>

<p>These initiatives embody our pay-it-forward mentality, where maintainers and MeshMates guide newcomers in an inclusive environment. Join us on <a href="https://slack.meshery.io">Slack</a> to collaborate and contribute!</p>

<h2 id="join-the-meshery-movement">Join the Meshery Movement</h2>

<p>This sixth-place velocity ranking is a collective triumph, reflecting the hard work of our contributors and the project’s growing relevance in the cloud native landscape. As Meshery continues to evolve, we invite you to be part of this exciting journey. Whether you’re a developer, operator, or enthusiast, there’s a place for you in our community.</p>

<p>Download Meshery today, explore our integrations, and help shape the future of cloud native management. Together, we’re not just managing infrastructure—we’re redefining it.</p>

<p>For more details on our progress, revisit our <a href="https://meshery.io/blog/ninth-highest-velocity-cncf-project/">previous announcement</a> and project statistics on <a href="https://meshery.devstats.cncf.io/d/8/dashboards">DevStats</a>. Stay tuned for more updates, and let’s keep the momentum going! 🚀</p>]]></content><author><name>Meshery Authors</name></author><category term="community" /><category term="milestones" /><summary type="html"><![CDATA[Meshery, the extensible cloud native management platform, has achieved a remarkable milestone: recognition as the sixth highest-velocity project within the Cloud Native Computing Foundation (CNCF). This accomplishment is impressive for any project, but especially noteworthy given Meshery’s Sandbox maturity level and its position among 237 CNCF projects! Just six months ago, we celebrated reaching the ninth spot in our April 2025 announcement. Climbing three ranks in such a short time underscores the project’s accelerating momentum and the unwavering dedication of our global community.]]></summary></entry><entry><title type="html">Meshery CLI Commands for Organization, Workspaces, and Connections</title><link href="https://meshery.io/blog/2025/11/2025-10-31-mesheryctl-new-cmds-org-workspace/" rel="alternate" type="text/html" title="Meshery CLI Commands for Organization, Workspaces, and Connections" /><published>2025-11-03T05:00:00+00:00</published><updated>2025-11-03T05:00:00+00:00</updated><id>https://meshery.io/blog/2025/11/mesheryctl-new-cmds-org-workspace</id><content type="html" xml:base="https://meshery.io/blog/2025/11/2025-10-31-mesheryctl-new-cmds-org-workspace/"><![CDATA[<p>Introducing new <code class="language-plaintext highlighter-rouge">mesheryctl</code> commands that enhance organization and workspace management capabilities. These commands empower users to efficiently manage their Meshery organizations and workspaces directly from the command line.</p>

<p>Whether you’re just getting started with Meshery or expanding collaboration across teams, these experimental commands bring day-to-day actions—like listing organizations, creating workspaces, and managing connections—into a consistent CLI workflow.</p>

<h3 id="what-youll-find-in-this-blog-post">What you’ll find in this blog post</h3>

<ul>
  <li>A quick primer to understand more about Organizations, Workspaces and Connections in Meshery.</li>
  <li>Step-by-step usage for each command with examples.</li>
  <li>Notes, tips, and troubleshooting guidance to avoid common pitfalls.</li>
</ul>

<p>Note on stability: All commands in this post are currently experimental. Behavior and output formats may change as the features mature.</p>

<h3 id="quick-primer-terminology">Quick primer (terminology)</h3>

<ul>
  <li>Organization: Your Meshery Cloud tenant. Users belong to one or more organizations.</li>
  <li>Workspace: A collaboration area within an organization. Use workspaces to group Designs, Environments, teams, or projects.</li>
  <li>Connection: An integration endpoint (for example, Kubernetes clusters or Meshery platforms) associated with your Meshery profile.</li>
</ul>

<h3 id="prerequisites">Prerequisites</h3>

<ul>
  <li><code class="language-plaintext highlighter-rouge">mesheryctl</code> installed and configured.</li>
  <li>Logged in to Meshery Cloud with access to at least one organization.</li>
  <li>Appropriate permissions in the target organization to list and/or create resources.</li>
</ul>

<p>Tip: If a command fails with “unauthorized” or “forbidden,” verify that you are logged in with the correct account and that your role in the organization allows the requested action.</p>

<h2 id="connection">Connection</h2>

<p><code class="language-plaintext highlighter-rouge">connection</code> command helps users to view and manage Meshery connections with respect to the user’s profile in Meshery. This command is currently in <code class="language-plaintext highlighter-rouge">experimental</code> mode. Using this command, one can view the number of connections associated with their profile in Meshery and can delete unused connections if present. To know more info about Meshery connections concept in general, please refer to <a href="https://docs.meshery.io/concepts/logical/connections">Connections in Meshery</a></p>

<h3 id="base-command-syntax">Base command syntax</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mesheryctl exp connections
</code></pre></div></div>

<p>Current available subcommands present are: delete and list.
delete - This subcommand is used to delete a connection in Meshery
list - List all available Meshery connections</p>

<p>Flags available:
-c,–count - To display total number of available connections</p>

<p>Examples:
For listing connections:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; mesheryctl exp connections list
Total number of connections: 5
Page: 1
ID                                    NAME                     TYPE      KIND        STATUS
b0122ae9-...  in-cluster               platform  kubernetes  connected
467fd193-...  meshery-shocker-0        platform  meshery     connected
b481abd6-...  meshery-m.o.d.o.k.-3     platform  meshery     connected
4d51bff0-...  kubernetes-meshfusion-3  platform  kubernetes  not found
a85478df-...  meshery-sentinel-1       platform  meshery     connected
</code></pre></div></div>

<p>For deleting a connection:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; mesheryctl exp connections delete 22xg3…
Connection deleted
</code></pre></div></div>

<h3 id="notes-and-tips">Notes and tips</h3>

<ul>
  <li>“not found” status usually indicates the target system is no longer reachable. Consider removing such connections.</li>
  <li>Deleting a connection cannot be undone. Ensure the ID is correct before deleting.</li>
  <li>If you manage multiple environments, run list regularly to keep connections tidy.</li>
</ul>

<h3 id="troubleshooting">Troubleshooting</h3>

<ul>
  <li>“resource not found”: Verify the connection ID from the latest list output.</li>
  <li>“forbidden” or “unauthorized”: Confirm your Meshery login and account permissions.</li>
</ul>

<h2 id="organization">Organization</h2>

<p><code class="language-plaintext highlighter-rouge">organization</code> command allows users to view organizations which they are part of in the Meshery Cloud. This command is in <code class="language-plaintext highlighter-rouge">experimental</code> mode and users can currently view the organizations they are in as a member.</p>

<h3 id="base-syntax">Base syntax</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mesheryctl exp organization
</code></pre></div></div>

<h3 id="available-subcommands">Available subcommands</h3>

<p>list - List all organizations that user is part of in Meshery Cloud</p>

<p>Example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; mesheryctl exp organization list
Total number of organizations:2
Page: 1
NAME      ID                  CREATED-AT
Meshery   c5ada327-...    2025/September/10
XYZ   ce8a571e-...    2024/August/19
</code></pre></div></div>

<h3 id="notes-and-tips-1">Notes and tips</h3>

<ul>
  <li>If you expect to see an organization but don’t, ask an admin to confirm your membership.</li>
  <li>Use the organization ID from this list when creating or listing workspaces.</li>
</ul>

<h3 id="troubleshooting-1">Troubleshooting</h3>

<ul>
  <li>“no organizations found”: Confirm that your Meshery account is connected to Meshery Cloud and that you’ve been invited to an organization.</li>
</ul>

<h2 id="workspaces">Workspaces</h2>

<p><code class="language-plaintext highlighter-rouge">workspace</code> command allows users to create workspaces within an organization which can act as a hub for teams to work and collaborate in Meshery. Workspaces are useful to organize project-based work or to create domains of responsibility for your teams or segregate Designs and Environments and track team activity.</p>

<p>Currently, this command is in <code class="language-plaintext highlighter-rouge">experimental</code> mode and users can create workspaces in the organisation they are in, list workspaces present. For more info about workspaces in Meshery, please refer to <a href="https://docs.meshery.io/concepts/logical/workspaces">Workspaces in Meshery</a>.</p>

<h3 id="base-command">Base command</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mesheryctl exp workspace
</code></pre></div></div>

<p>Available subcommands:
create - Create a workspace within an organization in Meshery
list - List all available workspaces present within an organization in Meshery</p>

<p>Example:
To list workspaces in an organization:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; mesheryctl exp workspace list --orgId ce8ffxe-...
Total number of workspaces:3
Page: 1
ID                                    NAME        DESCRIPTION
9a21b6e1-...  platform-team  Platform engineering workspace
b77c19f9-...  test-1         Test workspace
c05a3c3a-...  staging        Staging experiments
</code></pre></div></div>

<p>To create a workspace in an organization:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; mesheryctl exp workspace create --orgId ce8ffxe-... --name test-1 --desc "Test workspace"
Workspace created: test-1
</code></pre></div></div>

<h3 id="notes-and-tips-2">Notes and tips</h3>

<ul>
  <li>Workspace names should be clear to your team (for example, “platform-team” or “payments-observability”).</li>
  <li>Use the organization ID from the Organization section to scope workspace operations.</li>
  <li>If creation fails, confirm you have permissions to create resources in the target organization.</li>
</ul>

<h3 id="troubleshooting-2">Troubleshooting</h3>

<ul>
  <li>“invalid orgId”: Copy the ID exactly as shown in organization list output.</li>
  <li>“workspace already exists”: Choose a unique name or delete the existing workspace if appropriate.</li>
</ul>

<p>NOTE: These commands are evolving. Share feedback, report issues, and help improve the experience so teams can collaborate more effectively in Meshery.</p>]]></content><author><name>Aadhitya Amarendiran</name></author><category term="mesheryctl" /><summary type="html"><![CDATA[Introducing new mesheryctl commands that enhance organization and workspace management capabilities. These commands empower users to efficiently manage their Meshery organizations and workspaces directly from the command line.]]></summary></entry><entry><title type="html">Mesheryctl End-To-End Testing Introduction</title><link href="https://meshery.io/blog/2025/10/2025-10-30-mesehryctl-e2e-test-introduction/" rel="alternate" type="text/html" title="Mesheryctl End-To-End Testing Introduction" /><published>2025-10-30T13:00:00+00:00</published><updated>2025-10-30T13:00:00+00:00</updated><id>https://meshery.io/blog/2025/10/mesehryctl-e2e-test-introduction</id><content type="html" xml:base="https://meshery.io/blog/2025/10/2025-10-30-mesehryctl-e2e-test-introduction/"><![CDATA[<p>You want to create a test for a new or existing Meshery command? Good. This tutorial explains how to do so. In this tutorial, we will introduce mesheryctl end-to-end testing using <strong>B</strong>ash <strong>A</strong>utomating <strong>T</strong>esting <strong>S</strong>ystem (<strong>BATS</strong>).</p>

<h2 id="understand-meshery-ecosystem">Understand Meshery ecosystem</h2>

<p>The best advice that we can share is first of all, <strong>be familiarized with Meshery ecosystem</strong>, this is the key to be able to implement tests.</p>

<p>Be familiar with the different components and concepts in Meshery’s world, this can be done by reading the official documentation where you will find detailed explanations of the both <a href="https://docs.meshery.io/concepts/architecture">architectural</a> and <a href="https://docs.meshery.io/concepts/logical">logical</a> concepts.</p>

<p><code class="language-plaintext highlighter-rouge">mesheryctl</code> is Meshery’s CLI</p>

<p>Meshery CLI is written in Golang built on the Cobra framework and interacts with Meshery Server’s <a href="https://docs.meshery.io/reference/rest-apis">REST API</a>. By creating end-to-end tests during the development lifecycle, it ensures that changes or new features are behaving as expected.</p>

<h2 id="how-to-create-a-test">How to create a test</h2>

<p>Before starting, be sure you read the contributing guide that will provide you the requirements and the implementation standards <a href="https://docs.meshery.io/project/contributing/contributing-cli-tests">here</a>.</p>

<h3 id="scenario">Scenario</h3>

<p>We will use a fictitious command named <code class="language-plaintext highlighter-rouge">awesome</code> through this tutorial that has 3 subcommands <code class="language-plaintext highlighter-rouge">create</code>, <code class="language-plaintext highlighter-rouge">list</code> and <code class="language-plaintext highlighter-rouge">view</code> that need to be tested. Now, let’s define how they should behave to implement the test.</p>

<p><strong>Subcommands behavior expected:</strong></p>

<ul>
  <li>
    <p><strong>create:</strong></p>

    <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Create `test`</span>
~<span class="nv">$ </span>mesheryctl awesome create <span class="nb">test
test </span>has been created successfully

<span class="c"># Create missing argument</span>
~<span class="nv">$ </span>mesheryctl awesome create
Error: no name was provided. 
Please provide the name that you want to create
</code></pre></div>    </div>
  </li>
  <li>
    <p><strong>list:</strong></p>

    <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~<span class="nv">$ </span>mesheryctl awesome list
Total number of elements: 3
Page: 1
NAME     DESCRIPTION
<span class="nb">test     </span>description of <span class="nb">test
</span>test-1   description of <span class="nb">test </span>1
test-2   description of <span class="nb">test </span>2
</code></pre></div>    </div>
  </li>
  <li>
    <p><strong>view:</strong></p>

    <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># View `test`</span>
~<span class="nv">$ </span>mesheryctl awesome view <span class="nb">test
</span>Name: <span class="nb">test</span>

<span class="c"># View missing argument</span>
~<span class="nv">$ </span>mesheryctl awesome view
Error: no name was provided. 
Please provide the name that you want to view

<span class="c"># View no existing elements</span>
~<span class="nv">$ </span>mesheryctl awesome view non-existing
No element with name <span class="s2">"non-existing"</span> has been found. 
Ensure to provided an existing name. <span class="sb">`</span>mesheryctl awesome list<span class="sb">`</span> to list existing element.
</code></pre></div>    </div>
  </li>
</ul>

<p>All is set now to create required tests.</p>

<h3 id="folder-structure">Folder structure</h3>

<p>All End-To-End tests are stored in <code class="language-plaintext highlighter-rouge">mesheryctl/tests/e2e</code></p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>tests/
└── e2e
    ├── 000-prerequisites
    ├── 001-system
    ├── 002-model
    ├── 003-design
    ├── 004-perf
    ├── 005-component
    └── helpers

8 directories
</code></pre></div></div>

<h3 id="implementation">Implementation</h3>

<p>You need to create a new folder that will contain all the tests for this command.</p>

<p>Following the implementation standard, the folder will be <code class="language-plaintext highlighter-rouge">tests/e2e/006-awesome</code>, then we will create a file for each subcommand, this is the expected result</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>tests/
└── e2e
    ├── 000-prerequisites
    ├── 001-system
    ├── 002-model
    ├── 003-design
    ├── 004-perf
    ├── 005-component    
    ├── 006-awesome
    │   ├── 00-awesome.bats
    │   ├── 01-awesome-create.bats
    │   ├── 02-awesome-list.bats
    │   └── 03-awesome-view.bats
    └── helpers
</code></pre></div></div>

<h4 id="create">Create</h4>

<p>Content of 01-awesome-create.bats</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  <span class="c">#!/usr/bin/env bats</span>

  <span class="c"># Add helpers functions to not reinvent the wheel</span>
  setup<span class="o">()</span> <span class="o">{</span>
    load <span class="s2">"</span><span class="nv">$E2E_HELPERS_PATH</span><span class="s2">/bats_libraries"</span>
    _load_bats_libraries
  <span class="o">}</span>

  @test <span class="s2">"create command without arguments fails"</span> <span class="o">{</span>
    run <span class="nv">$MESHERYCTL_BIN</span> awesome create
    
    
    assert_failure
    assert_output <span class="nt">--partial</span> <span class="s2">"Error: no name was provided."</span>
    assert_output <span class="nt">--partial</span> <span class="s2">"Please provide the name that you want to create"</span>
  <span class="o">}</span>

  @test <span class="s2">"create command with argument succeeds"</span> <span class="o">{</span>
    run <span class="nv">$MESHERYCTL_BIN</span> awesome create <span class="nb">test
    
    </span>assert_success
    
    assert_output <span class="s2">"Name: test"</span>
  <span class="o">}</span>
</code></pre></div></div>

<h4 id="list">List</h4>

<p>Content of 02-awesome-list.bats</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/usr/bin/env bats</span>

<span class="c"># Add helpers functions to not reinvent the wheel</span>
setup<span class="o">()</span> <span class="o">{</span>
   load <span class="s2">"</span><span class="nv">$E2E_HELPERS_PATH</span><span class="s2">/bats_libraries"</span>
	_load_bats_libraries
<span class="o">}</span>

@test <span class="s2">"list command succeeds"</span> <span class="o">{</span>
  run <span class="nv">$MESHERYCTL_BIN</span> awesome list   
  
  assert_success
  
  assert_output <span class="nt">--partial</span> Total number of elements: 3
  assert_output <span class="nt">--partial</span> Page: 1
  assert_output <span class="nt">--partial</span> NAME     DESCRIPTION
  assert_output <span class="nt">--partial</span> <span class="nb">test     </span>description of <span class="nb">test
  </span>assert_output <span class="nt">--partial</span> test-1   description of <span class="nb">test </span>1
  assert_output <span class="nt">--partial</span> test-2   description of <span class="nb">test </span>2
<span class="o">}</span>
</code></pre></div></div>

<h4 id="view">View</h4>

<p>Content of 03-awesome-view.bats</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/usr/bin/env bats</span>

<span class="c"># Add helpers functions to not reinvent the wheel</span>
setup<span class="o">()</span> <span class="o">{</span>
   load <span class="s2">"</span><span class="nv">$E2E_HELPERS_PATH</span><span class="s2">/bats_libraries"</span>
	_load_bats_libraries
<span class="o">}</span>

@test <span class="s2">"view command without arguments fails"</span> <span class="o">{</span>
  run <span class="nv">$MESHERYCTL_BIN</span> awesome view
   
  
  assert_failure
  assert_output <span class="nt">--partial</span> <span class="s2">"Error: no name was provided."</span>
  assert_output <span class="nt">--partial</span> <span class="s2">"Please provide the name that you want to view"</span>
<span class="o">}</span>

@test <span class="s2">"view command with existing awesome name is displaying name"</span> <span class="o">{</span>
  run <span class="nv">$MESHERYCTL_BIN</span> awesome view <span class="nb">test
   
  </span>assert_success
  
  assert_output <span class="s2">"Name: test"</span>
<span class="o">}</span>

@test <span class="s2">"view command with non-existing awesome name is displaying non existing message"</span> <span class="o">{</span>
  run <span class="nv">$MESHERYCTL_BIN</span> awesome view non-existing
   
  assert_success
  
  assert_output  <span class="nt">--partial</span> <span class="s2">"No element with name "</span>non-existing<span class="s2">" has been found."</span>
  assert_output  <span class="nt">--partial</span> <span class="s2">"Ensure to provide an existing name. </span><span class="sb">`</span>mesheryctl awesome list<span class="sb">`</span><span class="s2"> to list existing element."</span>
<span class="o">}</span>
</code></pre></div></div>

<h3 id="run-added-end-to-end-tests">Run added End-To-End tests</h3>

<p>Now you have created a new suite of tests, you can confirm it is working as expected by running the following command and see an example of output</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/mesheryctl/ <span class="nv">$ </span>make e2e-no-build <span class="nv">BATS_FOLDER_PATTERN</span><span class="o">=</span>006-awesome


<span class="c">#### MESHERYCTL END-TO-END TESTING - START ####</span>

00-awesome.bats
01-awesome-create.bats
 ✓ create <span class="nb">command </span>without arguments fails
 ✓ create <span class="nb">command </span>with argument succeed
02-awesome-list.bats
 ✓ list <span class="nb">command </span>succeed
03-awesome-view.bats
 ✓ view <span class="nb">command </span>without arguments fails
 ✓ view <span class="nb">command </span>with existing awesome name is displaying name
 ✓ view <span class="nb">command </span>with non-existing awesome name is displaying non existing message

 6 tests, 0 failures


<span class="c">#### MESHERYCTL END-TO-END TESTING - DONE ####</span>
</code></pre></div></div>

<h2 id="conclusion">Conclusion</h2>

<p>You now have a small, repeatable e2e test suite for your imaginary <code class="language-plaintext highlighter-rouge">awesome</code> command. Practice:</p>

<ul>
  <li>keep tests small and independent,</li>
  <li>use the helpers to avoid duplication,</li>
  <li>prefer deterministic assertions (exact when possible, partial when needed),</li>
  <li>and run them locally before pushing so CI stays happy.</li>
</ul>

<p>If a test fails: write a better assertion, fix the bug, or add a regression test. Rinse and repeat.</p>

<p>Happy testing — may your CI logs be short and your green checks plentiful.</p>]]></content><author><name>Matthieu EVRIN</name></author><category term="mesheryctl" /><category term="test" /><summary type="html"><![CDATA[You want to create a test for a new or existing Meshery command? Good. This tutorial explains how to do so. In this tutorial, we will introduce mesheryctl end-to-end testing using Bash Automating Testing System (BATS).]]></summary></entry><entry><title type="html">mesheryctl model init and build explained</title><link href="https://meshery.io/blog/2025/10/2025-10-29-mesheryctl-model-init/" rel="alternate" type="text/html" title="mesheryctl model init and build explained" /><published>2025-10-29T00:00:00+00:00</published><updated>2025-10-29T00:00:00+00:00</updated><id>https://meshery.io/blog/2025/10/mesheryctl-model-init</id><content type="html" xml:base="https://meshery.io/blog/2025/10/2025-10-29-mesheryctl-model-init/"><![CDATA[<p>If you are new to the Meshery ecosystem and want to create your own models, this post will show you how to do so using Meshery CLI (mesheryctl).</p>

<blockquote>
  <p><strong>What is a Meshery Model?</strong><br />
Meshery models are reusable definitions of cloud-native infrastructure and workloads. They help you describe, package, and share your architecture.<br />
<a href="https://docs.meshery.io/concepts/logical/models">Learn more about Meshery models</a>.</p>
</blockquote>

<h2 id="quick-start-a-new-model--a-twostep-story">Quick start a new model — a two‑step story</h2>

<p>You have an idea and want to try it quickly with Meshery. In this short tutorial you will:</p>

<ol>
  <li>scaffold a new model with mesheryctl, then</li>
  <li>build it into a runnable artifact.</li>
</ol>

<p>Treat this as a skeleton: commands, expected behavior, and places to expand. Fill in examples, flags, and troubleshooting later.</p>

<h3 id="step-1--scaffold-mesheryctl-model-init">Step 1 — scaffold: <code class="language-plaintext highlighter-rouge">mesheryctl model init</code></h3>

<p><strong>Purpose:</strong> Generates a folder structure and guides the user on model creation.</p>

<p><strong>Documentation:</strong> <a href="https://docs.meshery.io/reference/mesheryctl/model/init">https://docs.meshery.io/reference/mesheryctl/model/init</a></p>

<p>In our example we will create a new model in a dedicated path in a specific format using the following values:</p>

<ul>
  <li><strong>name:</strong> my-awesome-model</li>
  <li><strong>path:</strong> my-awesome-models</li>
  <li><strong>format:</strong> json</li>
</ul>

<h4 id="create">Create</h4>

<p><strong>Example:</strong></p>

<p>In my destination path, nothing is present.</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>~/my-awesome-models<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-l</span>
total 0
</code></pre></div></div>

<p>Now you can create your scaffold by running the following command</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>mesheryctl model init my-awesome-model <span class="nt">--path</span> ./my-awesome-models <span class="nt">--output-format</span> json

Creating new Meshery model: my-awesome-model
Creating directory structure...
Generating model definition...
Adding sample components...
Creating sample relationships...
Adding sample connections...
Creating sample credentials...
Created my-awesome-model model at my-awesome-models/my-awesome-model
</code></pre></div></div>

<p>This command creates a new model named <code class="language-plaintext highlighter-rouge">my-awesome-model</code> in the <code class="language-plaintext highlighter-rouge">my-awesome-models</code> directory with the following structure:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>my-awesome-models/
└── my-awesome-model
    └── v0.1.0
        ├── components
        │   └── component.json
        ├── connections
        ├── credentials
        ├── model.json
        └── relationships
            └── relationship.json

6 directories, 3 files
</code></pre></div></div>

<p>You can see that the required folders/files have been created.</p>

<p>Next steps:</p>

<ol>
  <li><code class="language-plaintext highlighter-rouge">cd /home/user/my-awesome-models/my-awesome-model</code></li>
  <li>Edit <code class="language-plaintext highlighter-rouge">model.json</code> to customize your model configuration</li>
  <li>Add your components in the <code class="language-plaintext highlighter-rouge">components/</code> directory</li>
  <li>Define relationships in the <code class="language-plaintext highlighter-rouge">relationships/</code> directory</li>
  <li>Add your connections in the <code class="language-plaintext highlighter-rouge">connections/</code> directory</li>
  <li>Define credentials in the <code class="language-plaintext highlighter-rouge">credentials/</code> directory</li>
  <li>Use <code class="language-plaintext highlighter-rouge">mesheryctl model build</code> to package your model</li>
</ol>

<p>To import this model into Meshery:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>mesheryctl model import /home/user/my-awesome-models/my-awesome-model
</code></pre></div></div>

<p>To export this model as OCI image:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mesheryctl model build my-awesome-model/v0.1.0 <span class="nt">--path</span> /home/user/my-awesome-models
</code></pre></div></div>

<p>Detailed guide: <a href="https://docs.meshery.io/guides/creating-new-model-with-mesheryctl">https://docs.meshery.io/guides/creating-new-model-with-mesheryctl</a></p>

<p>What this does (high level):</p>

<ul>
  <li>creates a directory with the model name and a subdirectory with the version of the model</li>
  <li>generates the files needed for a valid model</li>
  <li>Details each step</li>
  <li>gives you the next actions to take</li>
</ul>

<p>Let’s see what we have in the <code class="language-plaintext highlighter-rouge">my-awesome-models</code> folder</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">.</span>
└── my-awesome-model
    └── v0.1.0
        ├── components
        │   └── component.json
        ├── connections
        ├── credentials
        ├── model.json
        └── relationships
            └── relationship.json

6 directories, 3 files
</code></pre></div></div>

<p>You can see that the required folders/files have been created.</p>

<h4 id="customize">Customize</h4>

<p>Now customize the generated files to represent your model. If you need more than one component or relationship, copy the existing file(s) and adjust them accordingly.</p>

<p>Below are the contents of the generated files; they are provided only to show what is required.</p>

<details><summary><b>model.json</b></summary>

<div class="highlight">
  <pre class="highlight">
  <code json="">
{
  "id": "00000000-0000-0000-0000-000000000000",
  "schemaVersion": "models.meshery.io/v1beta1",
  "version": "v0.0.1",
  "name": "untitled-model",
  "displayName": "Untitled Model",
  "description": "A new Meshery model.",
  "status": "enabled",
  "registrant": {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "",
    "credential_id": "00000000-0000-0000-0000-000000000000",
    "type": "",
    "sub_type": "",
    "kind": "artifacthub",
    "status": "",
    "user_id": "00000000-0000-0000-0000-000000000000",
    "created_at": "0001-01-01T00:00:00Z",
    "updated_at": "0001-01-01T00:00:00Z",
    "deleted_at": null,
    "schemaVersion": "connections.meshery.io/v1beta1",
    "environments": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "name": "",
        "description": "",
        "organization_id": "00000000-0000-0000-0000-000000000000",
        "owner": "00000000-0000-0000-0000-000000000000",
        "created_at": "0001-01-01T00:00:00Z",
        "updated_at": "0001-01-01T00:00:00Z",
        "deleted_at": null,
        "schemaVersion": "environments.meshery.io/v1beta1"
      }
    ]
  },
  "metadata": {
    "capabilities": [],
    "primaryColor": "#00b39f",
    "secondaryColor": "#00D3A9",
    "svgWhite": "&lt;svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"&lt;http://www.w3.org/2000/svg\"&gt;&gt;&lt;path d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/&gt;&lt;path d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/&gt;&lt;path d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/&gt;&lt;path d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/&gt;&lt;path d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/&gt;&lt;path d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/&gt;&lt;path d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/&gt;&lt;path d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/&gt;&lt;path d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;/svg&gt;",
    "svgColor": "&lt;svg xmlns=\"&lt;http://www.w3.org/2000/svg\&gt;" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"&gt;<defs><style>.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}</style></defs><title>meshery-logo-light</title>&lt;polygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/&gt;&lt;polygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/&gt;&lt;polygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/&gt;&lt;path d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/&gt;&lt;polygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/&gt;&lt;path d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/&gt;&lt;polygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/&gt;&lt;polygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/&gt;&lt;polygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/&gt;&lt;path d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/&gt;&lt;path d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/&gt;&lt;path d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/&gt;&lt;path d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/&gt;&lt;path d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/&gt;&lt;path d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/&gt;&lt;path d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/&gt;&lt;path d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/&gt;&lt;path d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/&gt;&lt;path d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/&gt;&lt;polygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/&gt;&lt;/svg&gt;",
    "svgComplete": "",
    "shape": "circle",
    "isAnnotation": false
  },
  "registrantId": "00000000-0000-0000-0000-000000000000",
  "categoryId": "00000000-0000-0000-0000-000000000000",
  "category": {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "Uncategorized"
  },
  "subCategory": "Uncategorized",
  "model": {
    "version": "v0.0.1"
  },
  "componentsCount": 0,
  "relationshipsCount": 0
}

  </code>
  </pre>
</div>

</details>

<details><summary><b>component.json</b></summary>

<div class="highlight">
  <pre class="highlight">
  <code json="">
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "schemaVersion": "components.meshery.io/v1beta1",
    "version": "v0.0.1",
    "displayName": "Untitled Component",
    "description": "A new Meshery Component.",
    "format": "JSON",
    "model": {
      "id": "00000000-0000-0000-0000-000000000000",
      "schemaVersion": "models.meshery.io/v1beta1",
      "version": "v0.0.1",
      "name": "untitled-model",
      "displayName": "Untitled Model",
      "description": "A new Meshery model.",
      "status": "enabled",
      ...
    },
    ...
  }
{
  "id": "00000000-0000-0000-0000-000000000000",
  "schemaVersion": "components.meshery.io/v1beta1",
  "version": "v0.0.1",
  "displayName": "Untitled Component",
  "description": "A new Meshery Component.",
  "format": "JSON",
  "model": {
    "id": "00000000-0000-0000-0000-000000000000",
    "schemaVersion": "models.meshery.io/v1beta1",
    "version": "v0.0.1",
    "name": "untitled-model",
    "displayName": "Untitled Model",
    "description": "A new Meshery model.",
    "status": "enabled",
    "registrant": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "",
      "credential_id": "00000000-0000-0000-0000-000000000000",
      "type": "",
      "sub_type": "",
      "kind": "artifacthub",
      "status": "",
      "user_id": "00000000-0000-0000-0000-000000000000",
      "created_at": "0001-01-01T00:00:00Z",
      "updated_at": "0001-01-01T00:00:00Z",
      "deleted_at": null,
      "schemaVersion": "connections.meshery.io/v1beta1",
      "environments": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "",
          "description": "",
          "organization_id": "00000000-0000-0000-0000-000000000000",
          "owner": "00000000-0000-0000-0000-000000000000",
          "created_at": "0001-01-01T00:00:00Z",
          "updated_at": "0001-01-01T00:00:00Z",
          "deleted_at": null,
          "schemaVersion": "environments.meshery.io/v1beta1"
        }
      ]
    },
    "metadata": {
      "capabilities": [],
      "primaryColor": "#00b39f",
      "secondaryColor": "#00D3A9",
      "svgWhite": "&lt;svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"&lt;http://www.w3.org/2000/svg\"&gt;&gt;&lt;path d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/&gt;&lt;path d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/&gt;&lt;path d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/&gt;&lt;path d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/&gt;&lt;path d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/&gt;&lt;path d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/&gt;&lt;path d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/&gt;&lt;path d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/&gt;&lt;path d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;/svg&gt;",
      "svgColor": "&lt;svg xmlns=\"&lt;http://www.w3.org/2000/svg\&gt;" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"&gt;<defs><style>.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}</style></defs><title>meshery-logo-light</title>&lt;polygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/&gt;&lt;polygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/&gt;&lt;polygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/&gt;&lt;path d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/&gt;&lt;polygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/&gt;&lt;path d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/&gt;&lt;polygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/&gt;&lt;polygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/&gt;&lt;polygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/&gt;&lt;path d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/&gt;&lt;path d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/&gt;&lt;path d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/&gt;&lt;path d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/&gt;&lt;path d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/&gt;&lt;path d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/&gt;&lt;path d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/&gt;&lt;path d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/&gt;&lt;path d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/&gt;&lt;path d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/&gt;&lt;polygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/&gt;&lt;/svg&gt;",
      "svgComplete": "",
      "shape": "circle",
      "isAnnotation": false
    },
    "registrantId": "00000000-0000-0000-0000-000000000000",
    "categoryId": "00000000-0000-0000-0000-000000000000",
    "category": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "Uncategorized"
    },
    "subCategory": "Uncategorized",
    "model": {
      "version": "v0.0.1"
    },
    "componentsCount": 0,
    "relationshipsCount": 0
  },
  "registrant": {},
  "metadata": {
    "genealogy": "",
    "configurationUISchema": "",
    "isAnnotation": false
  },
  "category": {},
  "modelId": "00000000-0000-0000-0000-000000000000",
  "styles": {
    "primaryColor": "",
    "secondaryColor": "",
    "svgWhite": "",
    "svgColor": "",
    "svgComplete": "",
    "color": "",
    "font-family": "",
    "font-size": "",
    "font-style": "",
    "font-weight": "",
    "text-transform": "",
    "label": "",
    "shape": "",
    "position": {},
    "body-text": "",
    "body-text-wrap": "",
    "body-text-max-width": "",
    "body-text-background-color": "",
    "body-text-color": "",
    "body-text-font-weight": "",
    "body-text-horizontal-align": "",
    "body-text-decoration": "",
    "body-text-vertical-align": "",
    "background-image": "",
    "background-color": "",
    "background-position-x": "",
    "background-position-y": "",
    "background-offset-x": "",
    "background-offset-y": "",
    "background-fit": "",
    "background-clip": "",
    "background-width-relative-to": "",
    "background-height-relative-to": "",
    "border-style": "",
    "border-color": "",
    "text-halign": "",
    "text-valign": "",
    "ghost": "no",
    "active-bg-color": "",
    "active-bg-opacity": "",
    "active-bg-size": "",
    "selection-box-color": "",
    "outside-texture-bg-color": "",
    "shape-polygon-points": "",
    "menu-background-color": "",
    "menu-forground-color": ""
  },
  "animation": {},
  "position": {},
  "capabilities": [
    {
      "schemaVersion": "capability.meshery.io/v1alpha1",
      "version": "0.7.0",
      "displayName": "Performance Test",
      "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
      "kind": "action",
      "type": "operator",
      "subType": "perf-test",
      "key": "",
      "entityState": [
        "instance"
      ],
      "status": "enabled",
      "metadata": null
    },
    {
      "schemaVersion": "capability.meshery.io/v1alpha1",
      "version": "0.7.0",
      "displayName": "Workload Configuration",
      "description": "Configure the workload specific setting of a component",
      "kind": "mutate",
      "type": "configuration",
      "subType": "config",
      "key": "",
      "entityState": [
        "declaration"
      ],
      "status": "enabled",
      "metadata": null
    },
    {
      "schemaVersion": "capability.meshery.io/v1alpha1",
      "version": "0.7.0",
      "displayName": "Labels and Annotations Configuration",
      "description": "Configure Labels And Annotations for  the component ",
      "kind": "mutate",
      "type": "configuration",
      "subType": "labels-and-annotations",
      "key": "",
      "entityState": [
        "declaration"
      ],
      "status": "enabled",
      "metadata": null
    },
    {
      "schemaVersion": "capability.meshery.io/v1alpha1",
      "version": "0.7.0",
      "displayName": "Relationships",
      "description": "View relationships for the component",
      "kind": "view",
      "type": "configuration",
      "subType": "relationship",
      "key": "",
      "entityState": [
        "declaration",
        "instance"
      ],
      "status": "enabled",
      "metadata": null
    },
    {
      "schemaVersion": "capability.meshery.io/v1alpha1",
      "version": "0.7.0",
      "displayName": "Json Schema",
      "description": "View Component Definition ",
      "kind": "view",
      "type": "configuration",
      "subType": "definition",
      "key": "",
      "entityState": [
        "declaration",
        "instance"
      ],
      "status": "enabled",
      "metadata": null
    },
    {
      "schemaVersion": "capability.meshery.io/v1alpha1",
      "version": "0.7.0",
      "displayName": "Styling",
      "description": "Configure the visual styles for the component",
      "kind": "mutate",
      "type": "style",
      "subType": "",
      "key": "",
      "entityState": [
        "declaration"
      ],
      "status": "enabled",
      "metadata": null
    },
    {
      "schemaVersion": "capability.meshery.io/v1alpha1",
      "version": "0.7.0",
      "displayName": "Change Shape",
      "description": "Change the shape of the component",
      "kind": "mutate",
      "type": "style",
      "subType": "shape",
      "key": "",
      "entityState": [
        "declaration"
      ],
      "status": "enabled",
      "metadata": null
    },
    {
      "schemaVersion": "capability.meshery.io/v1alpha1",
      "version": "0.7.0",
      "displayName": "Compound Drag And Drop",
      "description": "Drag and Drop a component into a parent component in graph view",
      "kind": "interaction",
      "type": "graph",
      "subType": "compoundDnd",
      "key": "",
      "entityState": [
        "declaration"
      ],
      "status": "enabled",
      "metadata": null
    }
  ],
  "status": "enabled",
  "instanceDetails": {},
  "configuration": {},
  "component": {
    "version": "",
    "kind": "",
    "schema": ""
  }
}

  </code>
  </pre>
</div>
  
</details>

<details><summary><b>relationship.json</b></summary>
<div class="highlight">
  <pre class="highlight">
  <code json="">

{
  "id": "00000000-0000-0000-0000-000000000000",
  "schemaVersion": "relationships.meshery.io/v1alpha3",
  "version": "v0.0.1",
  "model": {
    "id": "00000000-0000-0000-0000-000000000000",
    "schemaVersion": "models.meshery.io/v1beta1",
    "version": "v0.0.1",
    "name": "untitled-model",
    "displayName": "Untitled Model",
    "description": "A new Meshery model.",
    "status": "enabled",
    "registrant": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "",
      "credential_id": "00000000-0000-0000-0000-000000000000",
      "type": "",
      "sub_type": "",
      "kind": "artifacthub",
      "status": "",
      "user_id": "00000000-0000-0000-0000-000000000000",
      "created_at": "0001-01-01T00:00:00Z",
      "updated_at": "0001-01-01T00:00:00Z",
      "deleted_at": null,
      "schemaVersion": "connections.meshery.io/v1beta1",
      "environments": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "",
          "description": "",
          "organization_id": "00000000-0000-0000-0000-000000000000",
          "owner": "00000000-0000-0000-0000-000000000000",
          "created_at": "0001-01-01T00:00:00Z",
          "updated_at": "0001-01-01T00:00:00Z",
          "deleted_at": null,
          "schemaVersion": "environments.meshery.io/v1beta1"
        }
      ]
    },
    "metadata": {
      "capabilities": [],
      "primaryColor": "#00b39f",
      "secondaryColor": "#00D3A9",
      "svgWhite": "&lt;svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"&lt;http://www.w3.org/2000/svg\"&gt;&gt;&lt;path d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/&gt;&lt;path d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/&gt;&lt;path d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/&gt;&lt;path d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/&gt;&lt;path d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/&gt;&lt;path d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/&gt;&lt;path d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/&gt;&lt;path d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;path d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/&gt;&lt;path d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/&gt;&lt;/svg&gt;",
      "svgColor": "&lt;svg xmlns=\"&lt;http://www.w3.org/2000/svg\&gt;" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"&gt;<defs><style>.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}</style></defs><title>meshery-logo-light</title>&lt;polygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/&gt;&lt;polygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/&gt;&lt;polygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/&gt;&lt;path d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/&gt;&lt;polygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/&gt;&lt;path d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/&gt;&lt;polygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/&gt;&lt;polygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/&gt;&lt;polygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/&gt;&lt;path d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/&gt;&lt;polygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/&gt;&lt;path d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/&gt;&lt;path d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/&gt;&lt;path d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/&gt;&lt;path d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/&gt;&lt;path d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/&gt;&lt;path d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/&gt;&lt;path d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/&gt;&lt;path d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/&gt;&lt;path d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/&gt;&lt;polygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/&gt;&lt;/svg&gt;",
      "svgComplete": "",
      "shape": "circle",
      "isAnnotation": false
    },
    "registrantId": "00000000-0000-0000-0000-000000000000",
    "categoryId": "00000000-0000-0000-0000-000000000000",
    "category": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "Uncategorized"
    },
    "subCategory": "Uncategorized",
    "model": {
      "version": "v0.0.1"
    },
    "componentsCount": 0,
    "relationshipsCount": 0
  },
  "metadata": {},
  "kind": "hierarchical",
  "subType": "inventory",
  "type": "parent",
  "status": "enabled",
  "evaluationQuery": "",
  "capabilities": [],
  "selectors": []
}
  </code>
  </pre>
</div>
</details>

<h3 id="step-2--build-mesheryctl-model-build">Step 2 — build: <code class="language-plaintext highlighter-rouge">mesheryctl model build</code></h3>

<p><strong>Purpose:</strong> Create an OCI-compliant package from the model files.</p>

<p><strong>Documentation:</strong> <a href="https://docs.meshery.io/reference/mesheryctl/model/build">https://docs.meshery.io/reference/mesheryctl/model/build</a></p>

<p><strong>Example:</strong></p>

<p>Now you have already customized your model and want to create an artifact.</p>

<ul>
  <li><strong>name:</strong> my-awesome-model</li>
  <li><strong>path:</strong> my-awesome-models</li>
  <li><strong>version:</strong> v0.1.0</li>
</ul>

<p>Be sure to move into the folder where the model was created (here: <code class="language-plaintext highlighter-rouge">my-awesome-models</code>)</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># move in the root folder where you store your models</span>

~/<span class="nv">$ </span><span class="nb">cd</span> ~/my-awesome-models

~/my-awesome-models<span class="nv">$ </span>mesheryctl model build my-awesome-model/v0.1.0
Building meshery model from path my-awesome-model/v0.1.0
Saving OCI artifact as my-awesome-model-v0-1-0.tar
</code></pre></div></div>

<p>What this does (high level):</p>

<ul>
  <li>build the model from the path provided</li>
  <li>save it as an OCI artifact</li>
</ul>

<p>Let’s see what we have in <code class="language-plaintext highlighter-rouge">my-awesome-models</code> folder</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">.</span>
├── my-awesome-model
│   └── v0.1.0
│       ├── components
│       │   └── component.json
│       ├── connections
│       ├── credentials
│       ├── model.json
│       └── relationships
│           └── relationship.json
└── my-awesome-model-v0-1-0.tar

6 directories, 4 files
</code></pre></div></div>

<p>You can see that an artifact has been generated properly</p>

<h3 id="what-to-expect-next">What to expect next</h3>

<p>If you would like to use that model, we will have another dedicated tutorial post to achieve this.</p>

<p>I hope this quick introduction gives you a starting point to create your own model and enjoy the tools provided in the Meshery ecosystem.</p>]]></content><author><name>Matthieu Evrin</name></author><category term="releases" /><category term="mesheryctl" /><summary type="html"><![CDATA[If you are new to the Meshery ecosystem and want to create your own models, this post will show you how to do so using Meshery CLI (mesheryctl).]]></summary></entry><entry><title type="html">Announcing the Certified Meshery Contributor (CMC)</title><link href="https://meshery.io/blog/2025/10/2025-10-27-certified-meshery-contributor/" rel="alternate" type="text/html" title="Announcing the Certified Meshery Contributor (CMC)" /><published>2025-10-27T13:00:00+00:00</published><updated>2025-10-27T13:00:00+00:00</updated><id>https://meshery.io/blog/2025/10/certified-meshery-contributor</id><content type="html" xml:base="https://meshery.io/blog/2025/10/2025-10-27-certified-meshery-contributor/"><![CDATA[<p>Open source projects thrive or die based in large part on their community of contributors. It behooves maintainers to make opportunities for recognition and support of their contributors abundant. As a tool to allow contributors to showcase and validate their expertise, Meshery maintainers are thrilled to announce the launch of the Certified Meshery Contributor (CMC) certification — the project’s first certification and a first of its kind for the CNCF — crafted to acknowledge and authenticate the proficiency of developers actively shaping the Meshery ecosystem.</p>

<p>Meshery, recognized as the CNCF’s sixth highest-velocity project, offers a thoughtfully designed contributor onboarding experience. This includes weekly newcomer meetings, self-paced training, and now a new certification program to validate contributors’ expertise.</p>

<h2 id="about-the-certification">About the Certification</h2>

<p>The <a href="https://cloud.meshery.io/academy/certifications/c5ada327-8a58-4c8a-b9fa-51b95696488c/certified-meshery-contributor">Certified Meshery Contributor (CMC) certification</a> validates technical proficiency in contributing to the Meshery open source project through written assessments. The certification consists of five distinct exams, each dedicated to one of Meshery’s major <a href="https://docs.meshery.io/architecture">architectural domains</a>: Meshery Server, Meshery CLI, Meshery UI, Meshery Models, and Meshery Extensibility.</p>

<p>Tailored for developers possessing intermediate skills in Go, React, and OpenAPI schemas, and with hands-on experience in Meshery’s codebase, this certification affirms an individual’s capability to make substantial contributions to project development. This includes adept code implementation, thorough testing, seamless integration, and strategic optimization.</p>

<ul>
  <li><strong>Track:</strong> Developers</li>
  <li><strong>Target Audience:</strong> Developers, technical writers, and community members.</li>
  <li><strong>Prerequisites:</strong> Proficiency in Git and GitHub, familiar with Meshery’s architecture, and healthy understanding of open source collaboration.</li>
  <li><strong>Key Focus:</strong> Ability to competently participate as an open source contributor across the core collection of Meshery’s architectural domains, demonstrating understanding of code (Go, JavaScript), documentation, and CI-based project enhancements.</li>
  <li><strong>Exam Format:</strong> Multiple-choice/online assessment</li>
  <li><strong>Project Contributions:</strong> There is no minimum number of project contributions, like accepted pull requests (PRs) that are required for certification. However, successful candidates of this program typically demonstrate a sustained history of meaningful contributions to Meshery projects such as well-reviewed pull requests, documentation and tutorial improvements, issue triage and resolutions, and active participation in community discussions which collectively demonstrates the skills, judgement, and commitment required for certification.</li>
  <li><strong>Duration:</strong> 2 hours</li>
  <li><strong>Passing Rate:</strong> 70%</li>
  <li><strong>Cost:</strong> Free</li>
  <li><strong>Validity:</strong> 2 years</li>
</ul>

<p>The Certified Meshery Contributor exams have been created and reviewed by maintainers from each of Meshery’s major architectural domains. This first Meshery certification is part of a larger initiative to establish a comprehensive certification program for the Meshery ecosystem.</p>

<h2 id="introducing-the-meshery-certification-program">Introducing the Meshery Certification Program</h2>

<p>The Certified Meshery Contributor program is part of the broader Meshery Certification Program, which offers a structured pathway for professionals to validate their skills in managing and contributing to Meshery. The program includes certifications for administrators, developers, and open source contributors, each tailored to different levels of expertise and roles within the Meshery ecosystem.</p>

<div style="text-align: center;">
<a href="https://kanvas.new/extension/meshmap?catalog-design=c2141477-379b-432e-b47e-1c89600235a5"><img alt="Certified Meshery Contributor Badge" src="/assets/images/posts/2025/certified-meshery-contributor/meshery-certification-program.png" style="max-width:800px" /></a><br />
<a href="https://kanvas.new/extension/meshmap?catalog-design=c2141477-379b-432e-b47e-1c89600235a5">Explore the Meshery Certification Program design</a>
</div>

<h3 id="certification-tracks-tiers-and-exam-structure">Certification Tracks, Tiers and Exam Structure</h3>

<p>The Meshery Certification program offers specialized tracks designed for distinct audiences: Administrators, Developers, and Community members. Each track is structured with progressive tiers, catering to specific levels of expertise and fostering growth within the community.</p>

<h4 id="administrators-track">Administrators Track</h4>

<p>The Administrators track is tailored for operators and advanced users of Meshery. Certifications in this track range from validating foundational knowledge of the platform’s core concepts to verifying deep expertise in extending and troubleshooting Meshery as a platform. All certifications assess practical abilities in using Meshery for real-world infrastructure design, lifecycle, and performance management.</p>

<p><strong>Certifications:</strong></p>

<ol>
  <li>Certified Meshery Associate</li>
  <li>Certified Meshery Professional</li>
  <li>Certified Meshery Expert</li>
</ol>

<p><img align="center" src="/assets/images/posts/2025/certified-meshery-contributor/administrators-track.png" alt="Meshery Certification Program - Administrators Track" style="max-width:800px" /></p>

<h3 id="developers-track">Developers Track</h3>

<p>The Developers track targets contributors and engineers focused on building and extending Meshery. Certifications here validate skills from open source contributions to advanced development and integration, ensuring participants can effectively enhance the platform’s capabilities.</p>

<p><strong>Certifications:</strong></p>

<ol>
  <li>Certified Meshery Contributor</li>
  <li>Certified Meshery Developer</li>
</ol>

<p><img align="center" src="/assets/images/posts/2025/certified-meshery-contributor/administrators-track.png" alt="Meshery Certification Program - Developers Track" style="max-width:800px" /></p>

<h2 id="certification-exams">Certification Exams</h2>

<p>Each Meshery certification is meticulously designed to validate specific levels of expertise within the cloud-native ecosystem, with a keen focus on the Meshery platform. Spanning from entry-level foundational knowledge to advanced technical and leadership roles, these certifications feature hands-on, performance-based exams that mirror real-world scenarios in cloud-native environments. The program is organized into tracks for Administrators, Developers, and Community members, featuring progressive tiers to support ongoing professional development.</p>

<p><strong>Scores needed to pass exams</strong></p>

<p>All exam scores are reported on a percentage basis, with a passing threshold of 70% or greater. Exams vary in the number, type, and complexity of questions. While questions may be uniformly weighted, they can also differ in point value based on difficulty, as determined by exam creators. Unless specified otherwise, each question holds equal value (typically two points). Passing is determined by demonstrating the requisite knowledge, skills, and competence, considering question difficulty.</p>

<h2 id="an-addition-to-mesherys-existing-recognition-program">An Addition to Meshery’s Existing Recognition Program</h2>

<p>The new certification program compliments Meshery’s existing practice of <a href="/blog/2023/09/2023-9-2-meshery-badge-program/">recognizing users and contributors</a> in their journey with Meshery. New certification badges now join the ranks of recognition program are a tangible way for us to recognize and honor the exceptional efforts put forth by our contributors and the milestones achieved by our users. These badges are a representation of your participation and milestones that you achieve together and in solidarity with the Meshery community. Badges are how users demonstrate their prowess with the projects and how contributors identify their ownership, dedication, and skills. There are several badges each representing a specific user achievement or contributor skill.</p>

<p>Recognition badges come in different flavors and now include a new category for certfications:</p>

<ul>
  <li><strong>Achievement Badges</strong>: User-focused (e.g., “Shipped” for first deployment).</li>
  <li><strong>Project Badges</strong>: Contribution-focused (e.g., “Meshery Catalog”).</li>
  <li><strong>Community Badges</strong>: Community and no-code focused (e.g., “MeshMate” for mentoring).</li>
  <li><strong>Certification Badges</strong>: User and Contributor-focused (e.g., “Certified Meshery Contributor” for passing the CMC exam).</li>
</ul>

<figure style="text-align: center;">
  <a href="/assets/images/posts/2025/certified-meshery-contributor/certified-meshery-contributor-badge.png">
<img alt="Certified Meshery Contributor Badge" src="/assets/images/posts/2025/certified-meshery-contributor/certified-meshery-contributor-badge.png" style="max-width:200px" /></a>
  <figcaption><b>New Certified Meshery Contributor Badge</b>: Recognizes developers who have successfully passed the Certified Meshery Contributor exam, validating their skills in contributing to the Meshery open source project.
</figcaption>
</figure>

<p>There’s no time to waste. Start your journey to becoming a Certified Meshery Contributor today! Visit the <a href="https://cloud.meshery.io/academy/certifications/c5ada327-8a58-4c8a-b9fa-51b95696488c/certified-meshery-contributor">Certified Meshery Contributor exam page</a> to learn more and register for the exam. Embrace this opportunity to validate your skills and contribute meaningfully to the Meshery ecosystem.</p>

<p><em>- Meshery Maintainers</em></p>]]></content><author><name>Meshery Maintainers</name></author><category term="community" /><category term="open-source" /><summary type="html"><![CDATA[Open source projects thrive or die based in large part on their community of contributors. It behooves maintainers to make opportunities for recognition and support of their contributors abundant. As a tool to allow contributors to showcase and validate their expertise, Meshery maintainers are thrilled to announce the launch of the Certified Meshery Contributor (CMC) certification — the project’s first certification and a first of its kind for the CNCF — crafted to acknowledge and authenticate the proficiency of developers actively shaping the Meshery ecosystem.]]></summary></entry></feed>