<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Community on Kubemoot</title><link>https://kubemoot.org/docs/community/</link><description>Recent content in Community on Kubemoot</description><generator>Hugo</generator><language>en</language><atom:link href="https://kubemoot.org/docs/community/index.xml" rel="self" type="application/rss+xml"/><item><title>Contributing</title><link>https://kubemoot.org/docs/community/contributing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kubemoot.org/docs/community/contributing/</guid><description>&lt;p&gt;Contributions are welcome: bug reports, ideas, documentation fixes, tests, and code.
This page is the process. The &lt;a href="../development/"&gt;Development Guide&lt;/a&gt; covers the repository
layout and how to build and test each component.&lt;/p&gt;
&lt;h2 id="report-a-bug-or-request-a-feature"&gt;Report a bug or request a feature&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Not sure it is a bug, or have a question?&lt;/strong&gt; Open a
&lt;a href="https://github.com/orgs/kubemoot/discussions"&gt;Discussion&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Found a defect?&lt;/strong&gt; Open an issue on the repo where you found it, using the bug
report template. If the &lt;a href="../../introduction/quickstart/"&gt;Quickstart&lt;/a&gt; itself failed, use
the quickstart-failed template; it asks for what is needed to reproduce a
fresh-cluster run.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Have an idea for a feature?&lt;/strong&gt; Start in Discussions, so the shape of the idea can
settle before anyone writes code. A maintainer turns it into an issue when the work
is clear. The feature request template works too when you already know what
you want.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Larger or cross-cutting change?&lt;/strong&gt; Open an issue titled &lt;code&gt;Proposal: &amp;lt;summary&amp;gt;&lt;/code&gt;
describing the problem, the approach, the alternatives, and what it touches (CRDs,
runtime, dashboard, crews). See &lt;a href="../governance/#how-decisions-are-made"&gt;Governance&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="open-a-pull-request"&gt;Open a pull request&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Fork the repository you want to change, clone your fork, and branch off &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Development Guide</title><link>https://kubemoot.org/docs/community/development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kubemoot.org/docs/community/development/</guid><description>&lt;p&gt;This guide covers the repository layout and how to build and test each component. The
process for issues, ideas, and pull requests is on the &lt;a href="../contributing/"&gt;Contributing&lt;/a&gt;
page; the conventions a change is expected to follow are summarized at the end of this
one.&lt;/p&gt;
&lt;h2 id="repositories"&gt;Repositories&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Repository&lt;/th&gt;
 &lt;th&gt;What it holds&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/kubemoot/kubemoot"&gt;kubemoot&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;The operator, agent runtime, dashboard, MCP components, and the component docs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/kubemoot/crews"&gt;crews&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Packaged crews as Helm charts&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/kubemoot/kmctl"&gt;kmctl&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;The command-line tool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/kubemoot/vscode-crewforge"&gt;vscode-crewforge&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;CrewForge for VS Code&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/kubemoot/kubemoot-docs"&gt;kubemoot-docs&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;This site: the Hugo and Docsy shell and the cross-cutting chapters&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="layout-of-the-kubemoot-repository"&gt;Layout of the kubemoot repository&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Path&lt;/th&gt;
 &lt;th&gt;Language / stack&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Operator&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;operator/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Go, controller-runtime, kubebuilder CRDs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Agent runtime&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;agent-runtime/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Java / Quarkus + LangChain4j (GraalVM native)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dashboard&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;dashboard/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SvelteKit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MCP bridge, scheduling and tool servers&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;mcp-bridge/&lt;/code&gt;, &lt;code&gt;scheduling-mcp/&lt;/code&gt;, &lt;code&gt;artifact-access/&lt;/code&gt;, &lt;code&gt;code-sandbox/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Go&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MCP gateway&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;mcp-gateway/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Java&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Discussion gateway, crew liaison, fitness runner&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;discussion-gateway/&lt;/code&gt;, &lt;code&gt;crew-liaison/&lt;/code&gt;, &lt;code&gt;fitness-runner/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Go&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Indexer&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;indexer/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Java&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Query service&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;query-service/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Python&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Quickstart&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quickstart/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Shell&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Integration tests&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;k8s/tests/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Shell&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Go 1.27+ (operator, Go components)&lt;/li&gt;
&lt;li&gt;Java 25+ with Gradle (agent runtime, indexer, MCP gateway)&lt;/li&gt;
&lt;li&gt;Node.js 26+ (dashboard)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; and &lt;code&gt;helm&lt;/code&gt; (v3.8+, for OCI charts)&lt;/li&gt;
&lt;li&gt;Access to a Kubernetes cluster; &lt;code&gt;kind&lt;/code&gt; works for the quickstart&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="build-and-test"&gt;Build and test&lt;/h2&gt;
&lt;p&gt;Every change ships with tests. Run the suite for the component you touched.&lt;/p&gt;</description></item><item><title>Governance</title><link>https://kubemoot.org/docs/community/governance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kubemoot.org/docs/community/governance/</guid><description>&lt;p&gt;Kubemoot is an independent open-source project. Its governance is small and
deliberately simple, and this page states how it works today.&lt;/p&gt;
&lt;h2 id="maintainers"&gt;Maintainers&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Maintainer&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Jonathan Johnson&lt;/td&gt;
 &lt;td&gt;Maintainer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Write access to the repositories in the &lt;code&gt;kubemoot&lt;/code&gt; organization is limited to the
maintainers. Everyone else contributes through forks and pull requests.&lt;/p&gt;
&lt;h2 id="how-decisions-are-made"&gt;How decisions are made&lt;/h2&gt;
&lt;p&gt;The maintainer decides. Day-to-day changes are decided in the pull request or issue
where they come up. Changes that affect the API (the CRDs), the consensus protocol, or
how components fit together are discussed in the open first, so the reasoning is on
record:&lt;/p&gt;</description></item><item><title>Code of Conduct</title><link>https://kubemoot.org/docs/community/code-of-conduct/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kubemoot.org/docs/community/code-of-conduct/</guid><description>&lt;p&gt;Kubemoot follows the &lt;a href="https://www.contributor-covenant.org/version/2/1/code_of_conduct.html"&gt;Contributor Covenant&lt;/a&gt;,
version 2.1. It applies in every project space: GitHub issues, pull requests, and
Discussions, and any other place where someone represents the project in public.&lt;/p&gt;
&lt;p&gt;The full text lives in one place, the
&lt;a href="https://github.com/kubemoot/.github/blob/main/CODE_OF_CONDUCT.md"&gt;&lt;code&gt;CODE_OF_CONDUCT.md&lt;/code&gt;&lt;/a&gt;
file in the organization&amp;rsquo;s &lt;code&gt;.github&lt;/code&gt; repository. GitHub shows it on every repository in
the organization, so it is not copied into each one.&lt;/p&gt;
&lt;h2 id="the-short-version"&gt;The short version&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Be respectful of differing opinions, viewpoints, and experience.&lt;/li&gt;
&lt;li&gt;Give and accept constructive feedback gracefully.&lt;/li&gt;
&lt;li&gt;Take responsibility for mistakes and learn from them.&lt;/li&gt;
&lt;li&gt;Focus on what is best for the community, not only for you.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Harassment, trolling, insulting comments, and publishing others&amp;rsquo; private information
are not acceptable.&lt;/p&gt;</description></item><item><title>Security</title><link>https://kubemoot.org/docs/community/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kubemoot.org/docs/community/security/</guid><description>&lt;h2 id="reporting-a-vulnerability"&gt;Reporting a vulnerability&lt;/h2&gt;
&lt;p&gt;Report vulnerabilities privately to
&lt;a href="mailto:security@kubemoot.org"&gt;security@kubemoot.org&lt;/a&gt;. That address is only for vulnerability
reports; send every other question to &lt;a href="mailto:moot@kubemoot.org"&gt;moot@kubemoot.org&lt;/a&gt; or
&lt;a href="https://github.com/orgs/kubemoot/discussions"&gt;GitHub Discussions&lt;/a&gt;. Do not open a public
issue, Discussion, or pull request for a security report. Where a repository&amp;rsquo;s &lt;strong&gt;Security&lt;/strong&gt;
tab offers &lt;strong&gt;Report a vulnerability&lt;/strong&gt;, GitHub&amp;rsquo;s private reporting works too.&lt;/p&gt;
&lt;p&gt;Include what is affected (repository and version), the steps to reproduce, and what an
attacker gains. The project acknowledges reports within a reasonable period and
coordinates disclosure with the reporter before any public announcement. With a single
maintainer, that is best effort, not a guaranteed response time.&lt;/p&gt;</description></item><item><title>Releases and Versioning</title><link>https://kubemoot.org/docs/community/releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kubemoot.org/docs/community/releases/</guid><description>&lt;p&gt;Every merge to &lt;code&gt;main&lt;/code&gt; builds a release candidate. A maintainer promotes a tested
candidate to a public release. Users install final releases; &lt;code&gt;main&lt;/code&gt; is in development.&lt;/p&gt;
&lt;h2 id="from-merge-to-release"&gt;From merge to release&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Release candidates.&lt;/strong&gt; Each component in a repository has its own release workflow
that runs on a push to &lt;code&gt;main&lt;/code&gt; that changes that component&amp;rsquo;s files. The workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Runs the component&amp;rsquo;s CI.&lt;/li&gt;
&lt;li&gt;Computes the next version from the conventional-commit messages since the
component&amp;rsquo;s last release: &lt;code&gt;fix:&lt;/code&gt;, &lt;code&gt;docs:&lt;/code&gt;, &lt;code&gt;chore:&lt;/code&gt;, and &lt;code&gt;refactor:&lt;/code&gt; bump the patch
number, &lt;code&gt;feat:&lt;/code&gt; bumps the minor, and &lt;code&gt;feat!:&lt;/code&gt;, &lt;code&gt;fix!:&lt;/code&gt;, or a &lt;code&gt;BREAKING CHANGE&lt;/code&gt;
footer bumps the major. See &lt;a href="../contributing/#commit-messages"&gt;Contributing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Tags the commit with a candidate version, &lt;code&gt;X.Y.Z-rc.N&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Builds the candidate image and chart and pushes them to the maintainers&amp;rsquo; own
registry. Candidates are not published publicly and are not meant for installation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Promotion.&lt;/strong&gt; When a candidate has passed its tests, a maintainer runs the
&lt;strong&gt;Promote Release&lt;/strong&gt; workflow. It publishes the exact images that were tested, copied by
digest and not rebuilt, to GHCR under their final version &lt;code&gt;X.Y.Z&lt;/code&gt;. It packages the final
Helm charts with the final image versions, pushes them to &lt;code&gt;oci://ghcr.io/kubemoot/charts&lt;/code&gt;,
tags the candidates&amp;rsquo; commits with the final version, runs the quickstart against the
published chart, and creates the GitHub Release with notes generated from the
conventional commits. Promotion defaults to a dry run that plans the release and
publishes nothing.&lt;/p&gt;</description></item></channel></rss>