<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>John Dietz Blog</title>
        <link>https://jd.goodguy.dev/blog</link>
        <description>John Dietz Blog</description>
        <lastBuildDate>Sat, 22 Aug 2026 09:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Konstruct 0.7: how far we've come]]></title>
            <link>https://jd.goodguy.dev/blog/konstruct-0-7-how-far-weve-come</link>
            <guid>https://jd.goodguy.dev/blog/konstruct-0-7-how-far-weve-come</guid>
            <pubDate>Sat, 22 Aug 2026 09:00:00 GMT</pubDate>
            <description><![CDATA[Nine months ago we shipped Konstruct 0.1. This week I signed into our hosted control plane as a regular customer — personal Gmail, no badge, no shortcuts — created an organization, pointed the platform at a repository, and watched it build my site with buildpacks, ship it through GitOps, and hand me a live URL with metrics flowing. The whole loop, commit to serving traffic, took about eight minutes.]]></description>
            <content:encoded><![CDATA[<p>Nine months ago we shipped Konstruct 0.1. This week I signed into our hosted control plane as a regular customer — personal Gmail, no badge, no shortcuts — created an organization, pointed the platform at a repository, and watched it build my site with buildpacks, ship it through GitOps, and hand me a live URL with metrics flowing. The whole loop, commit to serving traffic, took about eight minutes.</p>
<p>That's the moment worth writing down. Not because a PaaS deploy is novel in 2026, but because of everything underneath it that didn't exist nine months ago.</p>
<h2 class="anchor anchorTargetStickyNavbar_xgjw" id="the-arc">The arc<a href="https://jd.goodguy.dev/blog/konstruct-0-7-how-far-weve-come#the-arc" class="hash-link" aria-label="Direct link to The arc" title="Direct link to The arc" translate="no">​</a></h2>
<p><strong>0.1 (November 2025)</strong> was the skeleton of an internal developer platform: organizations, team management clusters, cluster provisioning, GitOps with Argo CD wired in from the first commit. Honest work, nothing flashy.</p>
<p><strong>0.2 (December)</strong> made applications self-propelled. Environments and pipeline templates meant a registered repo built its own container, published its own auto-generated Helm chart, and rode multi-stage delivery to any environment — zero configuration, with an eject path to your own CI when you outgrow ours.</p>
<p><strong>0.3 (January)</strong> was independence day: no more kubefirst dependency, one umbrella Helm chart, installable on any Kubernetes cluster with no pre-existing infrastructure. The operator bootstraps Argo CD, the GitOps repository, and the platform apps itself.</p>
<p><strong>0.4 (March)</strong> launched the business model. The hosted control plane went live — sign up, create an org, provision a management cluster without installing anything — and workload clusters went multi-cloud: Civo, AWS, and GCP from a single management cluster.</p>
<p><strong>0.5 (May)</strong> matured multi-tenancy with one mental model for global versus org-scoped resources across every shareable thing on the platform, and made AI a first-class operator: MCP-flavoured API keys so assistants like Claude Code can drive Konstruct directly.</p>
<p><strong>0.6 (July)</strong> broadened and hardened: GitLab as a first-class git provider next to GitHub, a rank-based RBAC overhaul, platform-wide broadcasts, MCP diagnostics endpoints so an AI assistant can troubleshoot the platform itself, and a pile of GitOps reliability work.</p>
<h2 class="anchor anchorTargetStickyNavbar_xgjw" id="07-the-platform-gets-a-personality">0.7: the platform gets a personality<a href="https://jd.goodguy.dev/blog/konstruct-0-7-how-far-weve-come#07-the-platform-gets-a-personality" class="hash-link" aria-label="Direct link to 0.7: the platform gets a personality" title="Direct link to 0.7: the platform gets a personality" translate="no">​</a></h2>
<p>0.7 is my favorite release so far, and not just because it's the newest.</p>
<p><strong>Platform Themes</strong> are the headline. The theme-driven PaaS surface got a clean, no-aliases cutover, and the idea underneath deserves the spotlight: a small, versioned contract that lets <em>any</em> frontend drive the same platform. <strong>Konduit</strong> is the flagship — the clean business PaaS every organization gets pinned for free. But the same contract powers <strong>Ship It!</strong>, a retro arcade game where planets are zones and rockets are real deployments with real URLs, and <strong>Metropolis</strong>, which renders your organization as a living 3D city — builds raise construction cranes floor by floor, a failed app is a three-alarm fire, and rooftop gauges draw from real metrics. Themes are views, not silos: switch themes and your zones and apps are all still there, because they were always just platform resources.</p>
<p><strong>The build plane got its shape.</strong> Themes and apps build on the control plane — shared kpack and Harbor for every organization — and serve on zone clusters, which are ordinary workload clusters. That's the machinery behind my eight-minute deploy: kpack noticed my commit within a minute, built with Cloud Native Buildpacks, pushed to Harbor, the operator committed the manifest to GitOps, and Argo CD rolled it onto the zone.</p>
<p><strong>The platform team became a tenant of its own product.</strong> 0.7's organization model gives the platform team a visible platform organization that owns the control plane — it shows up in their clusters graph with every other org's management cluster ghosted alongside for the admins. The control plane is owned now, not ambient.</p>
<p><strong>Civo Bare Metal (alpha)</strong> brings your own data center into the same pane of glass, powered by Colony: racked servers become discoverable hardware, hardware becomes Kubernetes, and those clusters are first-class Konstruct clusters with the same catalog, environments, and templates as your cloud fleet.</p>
<p>And the detail I love most: the docs now include a page on <em>the game formula</em> — why game themes work, with a ready-to-paste prompt for building your own theme with an AI assistant, starting from our theme-starter template. We designed part of the platform to be extended by people describing what they want in a sentence. That's where this industry is going, and I'm glad we're leaning in rather than pretending otherwise.</p>
<h2 class="anchor anchorTargetStickyNavbar_xgjw" id="what-nine-months-taught-me">What nine months taught me<a href="https://jd.goodguy.dev/blog/konstruct-0-7-how-far-weve-come#what-nine-months-taught-me" class="hash-link" aria-label="Direct link to What nine months taught me" title="Direct link to What nine months taught me" translate="no">​</a></h2>
<p>The pattern in the release notes is the same one I've preached my whole career: build the engine before the paint. 0.1 through 0.3 built the engine. 0.4 and 0.5 made it a product you could host and share. 0.6 made it enterprise-shaped. Only then did 0.7 give it a personality — and because the engine was real, the personality is real too. The game isn't a demo; the city isn't a mockup. Every crane is a build and every fire is an incident.</p>
<p>Think big, build small, ship weekly. See you in 0.8.</p>]]></content:encoded>
            <category>Konstruct</category>
            <category>Platform Engineering</category>
            <category>GitOps</category>
            <category>Kubernetes</category>
        </item>
    </channel>
</rss>