<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kpm on Catalyst9 Engineering</title><link>https://blog.catalyst9.ai/tags/kpm/</link><description>Recent content in Kpm on Catalyst9 Engineering</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 04 May 2026 00:00:00 -0600</lastBuildDate><atom:link href="https://blog.catalyst9.ai/tags/kpm/index.xml" rel="self" type="application/rss+xml"/><item><title>I had 47 places I stored secrets. Then I built this.</title><link>https://blog.catalyst9.ai/posts/part-1-scattered-secrets/</link><pubDate>Tue, 21 Apr 2026 00:00:00 -0600</pubDate><guid>https://blog.catalyst9.ai/posts/part-1-scattered-secrets/</guid><description>A few weeks ago I went hunting for an API key. I found my secrets in 47 places. Here&amp;rsquo;s what I built to fix that.</description></item><item><title>Your .env files are a liability — even when they never leave your machine</title><link>https://blog.catalyst9.ai/posts/part-2-env-files-liability/</link><pubDate>Wed, 22 Apr 2026 00:00:00 -0600</pubDate><guid>https://blog.catalyst9.ai/posts/part-2-env-files-liability/</guid><description>Your .env never touched git. The password leaked anyway. Nine separate places, depending on which tools you used that afternoon. Here&amp;rsquo;s the better model.</description></item><item><title>One template tree, twelve clients, zero friction</title><link>https://blog.catalyst9.ai/posts/part-3-multi-client/</link><pubDate>Fri, 24 Apr 2026 00:00:00 -0600</pubDate><guid>https://blog.catalyst9.ai/posts/part-3-multi-client/</guid><description>Switching between clients used to be a fifteen-minute ritual. Now I just cd. Here&amp;rsquo;s the profile system that makes it work.</description></item><item><title>AI coding agents make the secrets problem worse. Here's the fix.</title><link>https://blog.catalyst9.ai/posts/part-4-ai-agents/</link><pubDate>Mon, 27 Apr 2026 00:00:00 -0600</pubDate><guid>https://blog.catalyst9.ai/posts/part-4-ai-agents/</guid><description>When your AI coding agent runs, it should see the Anthropic key and the project context — not your production database password. Unless you explicitly said so.</description></item><item><title>Your AI agent gets short-lived credentials, not your master key</title><link>https://blog.catalyst9.ai/posts/part-5-dynamic-secrets/</link><pubDate>Wed, 29 Apr 2026 00:00:00 -0600</pubDate><guid>https://blog.catalyst9.ai/posts/part-5-dynamic-secrets/</guid><description>Long-lived credentials made sense when humans used them. AI agents run 30 commands per session. The fix: credentials that self-destruct when the session ends.</description></item><item><title>When a credential leaks, you know everything in 30 seconds</title><link>https://blog.catalyst9.ai/posts/part-6-forensics/</link><pubDate>Fri, 01 May 2026 00:00:00 -0600</pubDate><guid>https://blog.catalyst9.ai/posts/part-6-forensics/</guid><description>GitHub emails you at 2am about a leaked token. Old world: rotate everything, file a ticket, investigation takes a week. New world: one command, 30 seconds, ticket closed.</description></item><item><title>Go pro for plugins — how AgentKMS stays small and gets big</title><link>https://blog.catalyst9.ai/posts/part-7-plugin-model/</link><pubDate>Mon, 04 May 2026 00:00:00 -0600</pubDate><guid>https://blog.catalyst9.ai/posts/part-7-plugin-model/</guid><description>AgentKMS is one binary. Everything provider-specific, audit-specific, or compliance-specific is a plugin. Here&amp;rsquo;s why that matters and what the plugin API looks like.</description></item></channel></rss>