<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Clef.sh</title>
    <description>The latest articles on DEV Community by Clef.sh (@clef_sh).</description>
    <link>https://dev.to/clef_sh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3843731%2F70f9b1ce-5d19-462a-819a-3866b187358b.png</url>
      <title>DEV Community: Clef.sh</title>
      <link>https://dev.to/clef_sh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/clef_sh"/>
    <language>en</language>
    <item>
      <title>I Was Tired of Paying $0.40/Secret/Month, So I spent a month building a CLI tool to manage it.</title>
      <dc:creator>Clef.sh</dc:creator>
      <pubDate>Thu, 02 Apr 2026 03:08:53 +0000</pubDate>
      <link>https://dev.to/clef_sh/i-was-tired-of-paying-040secretmonth-so-i-spent-a-month-building-a-cli-tool-to-manage-it-44g3</link>
      <guid>https://dev.to/clef_sh/i-was-tired-of-paying-040secretmonth-so-i-spent-a-month-building-a-cli-tool-to-manage-it-44g3</guid>
      <description>&lt;p&gt;Last month I looked at my AWS bill for a side project — a static site on S3 and a Lambda function that maybe 3 people use, including me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The most expensive line item was secrets management.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Secrets Manager charges $0.40 per secret per month, plus $0.05 per 10,000 API calls. I had 12 secrets across two environments. That's $4.80/month just to &lt;em&gt;store&lt;/em&gt; a Stripe key and a database URL — for a project that costs $1.20/month in compute.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Alternatives All Suck
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSM Parameter Store&lt;/strong&gt; — free tier exists, but no encryption at rest for SecureString without KMS ($1/month/key), no rotation, no structure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardcoded env vars&lt;/strong&gt; — works until you need to rotate something, or onboard a teammate, or remember what staging is actually pointing at.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.env&lt;/code&gt; files in a private repo&lt;/strong&gt; — congratulations, your secrets are now in plaintext in git history forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HashiCorp Vault&lt;/strong&gt; — I need a &lt;em&gt;server&lt;/em&gt; to store 12 key-value pairs?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I Actually Wanted
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Secrets stored alongside my code (one source of truth)&lt;/li&gt;
&lt;li&gt;Encrypted at rest (not plaintext in git)&lt;/li&gt;
&lt;li&gt;History of every change (who changed what, when)&lt;/li&gt;
&lt;li&gt;Works across environments (dev, staging, production)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  So I Built Clef
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/clef-sh/clef" rel="noopener noreferrer"&gt;Clef&lt;/a&gt; is a CLI that manages encrypted secrets in your git repo using &lt;a href="https://github.com/getsops/sops" rel="noopener noreferrer"&gt;Mozilla SOPS&lt;/a&gt; and &lt;a href="https://age-encryption.org" rel="noopener noreferrer"&gt;age encryption&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Setup takes about 2 minutes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @clef-sh/cli
clef init &lt;span class="nt"&gt;--namespaces&lt;/span&gt; api &lt;span class="nt"&gt;--non-interactive&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This generates an age key (modern, simple encryption — no GPG), creates a &lt;code&gt;clef.yaml&lt;/code&gt; manifest, and scaffolds encrypted files for each namespace × environment.&lt;/p&gt;

&lt;p&gt;Setting a secret:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;clef &lt;span class="nb"&gt;set &lt;/span&gt;api/production STRIPE_KEY sk_live_abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The value is encrypted immediately. The file in git looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;STRIPE_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ENC[AES256_GCM,data:7a3b9c...,type:str]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key names visible (great for diffs and code review), values encrypted. Getting it back:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;clef get api/production STRIPE_KEY
&lt;span class="c"&gt;# sk_live_abc123&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Injecting into a process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;clef &lt;span class="nb"&gt;exec &lt;/span&gt;api/production &lt;span class="nt"&gt;--&lt;/span&gt; node server.js
&lt;span class="c"&gt;# STRIPE_KEY is now in process.env&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What It Replaced
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;AWS Secrets Manager&lt;/th&gt;
&lt;th&gt;Clef&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0.40/secret/month + API calls&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AWS managed&lt;/td&gt;
&lt;td&gt;Your git repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;History&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CloudTrail (extra cost)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git log&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IAM policies&lt;/td&gt;
&lt;td&gt;Age keys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Infrastructure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AWS account required&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Offline access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vendor lock-in&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No (it's just encrypted YAML)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Tradeoffs (Being Honest)
&lt;/h2&gt;

&lt;p&gt;Clef isn't a Vault replacement. It's for a different use case:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No runtime secret injection&lt;/strong&gt; — you decrypt at build time or via &lt;code&gt;clef exec&lt;/code&gt;. There's no API your app calls at runtime (though there is an &lt;a href="https://github.com/clef-sh/clef/tree/main/packages/agent" rel="noopener noreferrer"&gt;agent sidecar&lt;/a&gt; if you want that).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No automatic rotation&lt;/strong&gt; — you rotate by running &lt;code&gt;clef set&lt;/code&gt; with a new value and pushing. No Lambda rotation functions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust model is simpler&lt;/strong&gt; — if someone has the age key, they can decrypt everything they're a recipient on. There's no per-secret ACL. For a solo dev or small team, this is fine. For a 200-person org, use KMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Side projects where secrets management costs more than the project itself&lt;/li&gt;
&lt;li&gt;Small teams (2-5 people) tired of sharing &lt;code&gt;.env&lt;/code&gt; files over Slack&lt;/li&gt;
&lt;li&gt;Anyone who wants secrets versioned in git with real encryption, not base64 encoding&lt;/li&gt;
&lt;li&gt;Developers who don't want to run infrastructure just to store 10 key-value pairs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who This Is Not For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Large orgs that need centralized access control and audit&lt;/li&gt;
&lt;li&gt;Teams that need runtime secret rotation without redeployment&lt;/li&gt;
&lt;li&gt;Anyone already happy with their current setup (seriously, don't switch for the sake of it)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The repo is at &lt;a href="https://github.com/clef-sh/clef" rel="noopener noreferrer"&gt;github.com/clef-sh/clef&lt;/a&gt;. It's MIT licensed. Stars appreciated but not required.&lt;/p&gt;

&lt;p&gt;If you've ever looked at your AWS bill and wondered why storing a database password costs more than running the database, give it a try.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>aws</category>
      <category>security</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Gap Between Encrypting Secrets and Proving You Handled Them Right</title>
      <dc:creator>Clef.sh</dc:creator>
      <pubDate>Wed, 01 Apr 2026 15:12:20 +0000</pubDate>
      <link>https://dev.to/clef_sh/the-gap-between-encrypting-secrets-and-proving-you-handled-them-right-c0</link>
      <guid>https://dev.to/clef_sh/the-gap-between-encrypting-secrets-and-proving-you-handled-them-right-c0</guid>
      <description>&lt;p&gt;There's a moment in every secrets pipeline that nobody talks about.&lt;/p&gt;

&lt;p&gt;You encrypt your secrets at rest. You store them in git as ciphertext. You manage KMS keys with IAM policies. You rotate credentials. You might even use SOPS or sealed-secrets or Vault. Your secrets management story sounds solid in an architecture review.&lt;/p&gt;

&lt;p&gt;But at some point, something has to decrypt those secrets and do something with them. And that something runs on a CI runner.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Plaintext Moment
&lt;/h2&gt;

&lt;p&gt;Think about what happens during a typical deployment. Your CI pipeline checks out the repo, decrypts SOPS-encrypted files, merges the right values for the target service and environment, re-encrypts them into a deployment artifact, and pushes it somewhere your runtime can consume it.&lt;/p&gt;

&lt;p&gt;For a brief window, plaintext secrets exist in memory on a general-purpose compute environment. The same environment that runs your test suite, your linters, your build tools, and whatever transitive dependencies those tools pulled in this week.&lt;/p&gt;

&lt;p&gt;The ciphertext in your git repo is inert. Your KMS keys in isolation are useless. But the moment ciphertext meets decryption capability in the same execution context — that's when plaintext is born. And that moment happens on your CI runner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Less Than You Think (And More Than You Think)
&lt;/h2&gt;

&lt;p&gt;If you self-host your CI runners, you probably trust them. You control the machine, the network, the software. Telling you "your CI runner might be compromised" is arguing against your own operational confidence, and it's a hard sell.&lt;/p&gt;

&lt;p&gt;But here's the thing: trusting your CI runner and being able to &lt;em&gt;prove&lt;/em&gt; what your CI runner did are two different things.&lt;/p&gt;

&lt;p&gt;When an auditor asks "what code processed these secrets during the last deployment," the honest answer from most pipelines is "we trust that our CI ran the right code." That's an assertion, not evidence. The CI logs say what happened — but the CI wrote those logs. If the runner were compromised, the logs would say whatever the attacker wanted them to say.&lt;/p&gt;

&lt;p&gt;This isn't a security gap in the traditional sense. It's a provenance gap. You might be doing everything right, but you can't prove it cryptographically.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Cryptographic Provenance Looks Like
&lt;/h2&gt;

&lt;p&gt;Imagine if the "pack" operation — the moment where ciphertext meets KMS decryption and plaintext is born — ran inside hardware-isolated memory. The host operating system can't read it. The hypervisor can't read it. Root access on the machine can't read it.&lt;/p&gt;

&lt;p&gt;Now imagine the hardware produces a signed attestation document that says "this exact binary, with this exact image hash, ran this operation." And your KMS key policy says "only decrypt when the request comes with a valid attestation document bearing this specific image hash."&lt;/p&gt;

&lt;p&gt;You now have a chain:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The binary is source-available — anyone can read the code&lt;/li&gt;
&lt;li&gt;The build is reproducible — anyone can verify the binary matches the source&lt;/li&gt;
&lt;li&gt;The image hash is deterministic — same source produces same hash&lt;/li&gt;
&lt;li&gt;The KMS policy only allows decryption by that exact image&lt;/li&gt;
&lt;li&gt;The attestation document is signed by the hardware, not by software you control&lt;/li&gt;
&lt;li&gt;The result is a signed artifact with a receipt that includes the attestation, the source commit, and the KMS keys used&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This isn't "we trust the CI runner." This is "the hardware proved what code ran, and the KMS proved only that code could decrypt." No one in the chain needs to be trusted — the proof is anchored in hardware attestation and KMS policy evaluation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Audit Answer Changes
&lt;/h2&gt;

&lt;p&gt;Without this: "We followed our procedures and our logs show the pipeline ran correctly."&lt;/p&gt;

&lt;p&gt;With this: "Here is the attestation receipt. It proves this specific binary, running inside hardware-isolated memory, processed secrets from this git commit, using these KMS keys, and produced this artifact. The binary is source-available and reproducibly built — here's the build spec if you want to verify the image hash yourself."&lt;/p&gt;

&lt;p&gt;The first answer requires trusting the organization. The second requires trusting math.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Actually Needs This
&lt;/h2&gt;

&lt;p&gt;Not everyone. If you're a startup with five engineers and you trust your CI, you probably don't need hardware-attested pack operations. Your threat model doesn't justify the operational complexity.&lt;/p&gt;

&lt;p&gt;But if you're in a regulated industry — finance, healthcare, government, or any organization where auditors ask pointed questions about secret handling — the provenance gap is real. And it gets wider as your secrets pipeline gets more complex: more services, more environments, more KMS keys, more people with access to CI infrastructure.&lt;/p&gt;

&lt;p&gt;The interesting thing is that this isn't about replacing your secrets manager. You keep Vault, or SOPS, or whatever you use. The attestation layer sits on top of your existing pipeline, specifically around the moment where secrets are decrypted and repackaged. It's a narrow, focused intervention at the one point in the pipeline where plaintext exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Punchline
&lt;/h2&gt;

&lt;p&gt;Encryption protects secrets at rest. KMS policies protect secrets at the API boundary. Network isolation protects secrets in transit. But none of these protect the &lt;em&gt;moment of use&lt;/em&gt; — the instant when ciphertext is decrypted and plaintext lives in memory.&lt;/p&gt;

&lt;p&gt;Hardware enclaves protect that moment. Attestation proves what happened during that moment. Reproducible builds let anyone verify that the attested code matches published source.&lt;/p&gt;

&lt;p&gt;The result isn't a security product. It's a provenance product. The answer to "how do you know your pipeline didn't leak these credentials" stops being an assertion and becomes a proof.&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>cryptography</category>
      <category>cloud</category>
    </item>
    <item>
      <title>We scored ourselves against HashiCorp's 12-point secrets management framework. We have some work to do.</title>
      <dc:creator>Clef.sh</dc:creator>
      <pubDate>Tue, 31 Mar 2026 14:22:48 +0000</pubDate>
      <link>https://dev.to/clef_sh/we-scored-ourselves-against-hashicorps-12-point-secrets-management-framework-we-have-some-work-to-34a0</link>
      <guid>https://dev.to/clef_sh/we-scored-ourselves-against-hashicorps-12-point-secrets-management-framework-we-have-some-work-to-34a0</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://dev.to/clef_sh/hashicorp-says-your-secrets-manager-needs-12-things-heres-how-we-stack-up-638" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojmjcaoe71mkl0s7n5hh.png" height="350" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://dev.to/clef_sh/hashicorp-says-your-secrets-manager-needs-12-things-heres-how-we-stack-up-638" rel="noopener noreferrer" class="c-link"&gt;
            HashiCorp Says Your Secrets Manager Needs 12 Things. Here's How We Stack Up. 🎹 - DEV Community
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            HashiCorp recently published a whitepaper called "12 Things a Modern Secrets Management Solution Must...
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" width="300" height="299"&gt;
          dev.to
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>HashiCorp Says Your Secrets Manager Needs 12 Things. Here's How We Stack Up. 🎹</title>
      <dc:creator>Clef.sh</dc:creator>
      <pubDate>Tue, 31 Mar 2026 13:50:31 +0000</pubDate>
      <link>https://dev.to/clef_sh/hashicorp-says-your-secrets-manager-needs-12-things-heres-how-we-stack-up-638</link>
      <guid>https://dev.to/clef_sh/hashicorp-says-your-secrets-manager-needs-12-things-heres-how-we-stack-up-638</guid>
      <description>&lt;p&gt;HashiCorp recently published a whitepaper called &lt;a href="https://www.hashicorp.com/en/on-demand/12-things-a-modern-secrets-management-solution-must-do" rel="noopener noreferrer"&gt;&lt;em&gt;"12 Things a Modern Secrets Management Solution Must Do."&lt;/em&gt;&lt;/a&gt; It's a solid framework — genuinely useful for evaluating any secrets tool.&lt;/p&gt;

&lt;p&gt;So we ran &lt;a href="https://clef.sh" rel="noopener noreferrer"&gt;Clef&lt;/a&gt; through it. Honestly.&lt;/p&gt;

&lt;p&gt;We're not going to pretend we check every box the same way Vault does. We're a git-native secrets manager built on SOPS — no servers, no tokens, no vendor custody. Different architecture, different tradeoffs. Here's where we're strong, where we're different, and where we'll tell you to use something else.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Scorecard 📋
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Secure Secrets Storage 🔒
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; Centralized encrypted KV store. Secrets encrypted before hitting persistent storage. Dashboard + CLI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Encrypted files in git. SOPS encrypts values using age or cloud KMS. Decrypted values exist only in memory — plaintext never touches disk. The repo &lt;em&gt;is&lt;/em&gt; the store.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Verdict:&lt;/strong&gt; Both nail this. Different storage model, same outcome — secrets encrypted at rest, protected from raw storage access.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Centralized Management 🏢
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; Enterprise dashboard. SecOps manages everything from one place without bugging developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; The git repo is the single source of truth. &lt;code&gt;clef lint&lt;/code&gt; validates the matrix. &lt;code&gt;clef report&lt;/code&gt; publishes structured JSON for your observability stack.&lt;/p&gt;

&lt;p&gt;🟡 &lt;strong&gt;Verdict:&lt;/strong&gt; Clef is developer-first CLI today — no enterprise dashboard. If you need SecOps visibility without git fluency, that's not us &lt;em&gt;yet&lt;/em&gt;. Clef Pro is coming for exactly this. Right now, we're focused on teams where the developers &lt;em&gt;are&lt;/em&gt; the security team.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Secret Scanning 🔍
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; HCP Vault Radar scans across your entire IT estate — code, wikis, Slack, ticketing, cloud storage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; &lt;code&gt;clef scan&lt;/code&gt; does pattern matching + entropy analysis on the git repo. Pre-commit hooks and CI integration catch leaks before merge.&lt;/p&gt;

&lt;p&gt;🟡 &lt;strong&gt;Verdict:&lt;/strong&gt; Clef covers the most common leak vector (code), not the whole org. For everything else, pair with GitGuardian or Trufflehog. We're not going to pretend a git hook replaces organization-wide scanning.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Strong Encryption 🛡️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; Encryption as a Service (EaaS). AES-256-GCM via transit engine. Encrypt arbitrary application data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; SOPS + age (X25519/ChaCha20-Poly1305) or cloud KMS (AES-256-GCM). All crypto delegated — zero custom cryptography.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Verdict:&lt;/strong&gt; Both strong. Clef encrypts secrets, not arbitrary payloads — we're not an EaaS. But the encryption itself? Rock solid, industry-standard, no homebrew.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Secrets Versioning 📜
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; KV v2 version history. UI shows who changed what. API rollback to previous versions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Git &lt;em&gt;is&lt;/em&gt; the versioning. Full commit history, PR context, code review, blame, branching. Rollback = &lt;code&gt;git revert&lt;/code&gt; → PR → merge → CI repacks.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Verdict:&lt;/strong&gt; This is Clef's home turf. Git versioning is arguably &lt;em&gt;stronger&lt;/em&gt; — you get author, reviewer, CI status, and the complete code context around the change. And every developer already knows how to use it.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Advanced Access Control 🚪
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; Identity-based policy engine. RBAC, MFA, fine-grained per-path permissions. Dozens of auth methods.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Cryptographic scoping at the namespace level. Service identities are SOPS recipients only on their namespaces — enforcement is at the encryption layer. Per-environment keys. Git branch protection + CODEOWNERS guard the manifest.&lt;/p&gt;

&lt;p&gt;🟡 &lt;strong&gt;Verdict:&lt;/strong&gt; Clef's access control is &lt;em&gt;cryptographic&lt;/em&gt; — a service literally cannot decrypt secrets outside its scope. That's powerful. But there's no RBAC, no MFA, no per-key permissions. If you model namespaces at the right granularity (one per dependency), it works. If you need per-secret policies or MFA-gated access, Vault is purpose-built for that.&lt;/p&gt;




&lt;h3&gt;
  
  
  7. Backup and Recovery 💾
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; Raft snapshots, cross-cluster replication, encrypted backups, OIDC integration for recovery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Every &lt;code&gt;git clone&lt;/code&gt; is a full backup. Break-glass age key in a physical safe decrypts everything if KMS goes sideways. AWS KMS enforces 7-30 day deletion waiting period.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Verdict:&lt;/strong&gt; Git's distributed nature means backup is inherent — no strategy to design, no snapshots to schedule. Your data is replicated across every developer's checkout.&lt;/p&gt;




&lt;h3&gt;
  
  
  8. Automated Secrets Rotation 🔄
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; Dynamic secrets with TTL leasing. Vault changes the actual credential at the source — database passwords, cloud IAM, certificates. Auto-revoke on expiry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Two different things here. &lt;em&gt;Encryption key rotation&lt;/em&gt; — automatic, every &lt;code&gt;clef pack&lt;/code&gt; generates fresh ephemeral keys. &lt;em&gt;Credential rotation&lt;/em&gt; (the actual password at the source) — manual via &lt;code&gt;clef set&lt;/code&gt; → PR → merge → repack. Broker-backed dynamic credentials can automate this but require deploying a handler.&lt;/p&gt;

&lt;p&gt;🟡 &lt;strong&gt;Verdict:&lt;/strong&gt; We're being honest — Clef doesn't auto-rotate your database password out of the box. Encryption keys rotate automatically on every build, which is great. But if you need push-button credential rotation for 30 backends today, Vault's secrets engines are production-proven.&lt;/p&gt;




&lt;h3&gt;
  
  
  9. Dynamic Secrets ⚡
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; First-class. Dozens of production-hardened engines — AWS, databases, PKI, SSH, LDAP. Years of battle-testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Broker SDK + registry. Templates for STS, RDS IAM, OAuth, SQL users. The architecture supports it. The ecosystem is young.&lt;/p&gt;

&lt;p&gt;🔴 &lt;strong&gt;Verdict:&lt;/strong&gt; We'll say it plainly — &lt;em&gt;if you need dynamic credentials today with minimal engineering, use Vault.&lt;/em&gt; Our broker architecture is extensible, but you're building, not consuming. Vault's breadth here is an order of magnitude larger.&lt;/p&gt;




&lt;h3&gt;
  
  
  10. Integrations, APIs, and Secrets Sync 🔌
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; RESTful API for everything. One-way KV sync to external destinations. Massive plugin ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Agent HTTP API on &lt;code&gt;127.0.0.1:7779&lt;/code&gt;. Any language that can &lt;code&gt;GET&lt;/code&gt; can read secrets. No SDK, no vendor client library. No secrets sync — the packed artifact &lt;em&gt;is&lt;/em&gt; the distribution.&lt;/p&gt;

&lt;p&gt;🟡 &lt;strong&gt;Verdict:&lt;/strong&gt; Clef's interface is dead simple — one HTTP endpoint, universal. But Vault's pre-built integrations (K8s sidecar injector, native Lambda integration, etc.) mean less glue code. Simplicity vs. breadth. Pick your tradeoff.&lt;/p&gt;




&lt;h3&gt;
  
  
  11. Automated Key Management 🔑
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; Unified API to manage key lifecycles across AWS KMS, Azure Key Vault, GCP Cloud KMS. Create, rotate, disable, delete — one interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Delegated model. Clef &lt;em&gt;uses&lt;/em&gt; KMS keys but doesn't manage their lifecycle. Key creation, rotation, and deletion happen through your cloud provider's console or IaC (Terraform, Pulumi). Ephemeral key pairs per &lt;code&gt;clef pack&lt;/code&gt; eliminate long-lived runtime keys.&lt;/p&gt;

&lt;p&gt;🟡 &lt;strong&gt;Verdict:&lt;/strong&gt; Clef doesn't provide a key management abstraction — your cloud provider does, and you manage it with IaC like everything else. For teams already running Terraform, this adds zero operational surface. If you want one API for keys across three clouds, Vault has that.&lt;/p&gt;




&lt;h3&gt;
  
  
  12. Robust Auditing 📊
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vault:&lt;/strong&gt; Built-in audit device. One dashboard, one query: "who accessed what, when."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clef:&lt;/strong&gt; Distributed across existing infra — CloudTrail for KMS events, git log for authorship, CI logs for packing, OTLP telemetry for agent health. JIT mode maps every secret read to a distinct CloudTrail entry.&lt;/p&gt;

&lt;p&gt;🟡 &lt;strong&gt;Verdict:&lt;/strong&gt; All the audit data exists — it's just in four places, not one. Correlating across them is work. Clef Pro will unify this. Today, teams that already have observability tooling (Datadog, Grafana, etc.) can wire it up, but there's no single-pane view out of the box.&lt;/p&gt;




&lt;h2&gt;
  
  
  The TL;DR 🎯
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Clef ✅&lt;/th&gt;
&lt;th&gt;Even 🟡&lt;/th&gt;
&lt;th&gt;Vault ✅&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Strong&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Storage, Encryption, Versioning, Backup&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Different tradeoff&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Management, Scanning, Access Control, Rotation, Integrations, Key Mgmt, Auditing&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vault wins today&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Dynamic Secrets&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Honest Pitch 🤝
&lt;/h2&gt;

&lt;p&gt;Clef is built for teams that want secrets versioned alongside code, reviewed in PRs, and delivered without a central server to babysit.&lt;/p&gt;

&lt;p&gt;If your team lives in git, manages infra through IaC, and values operational simplicity over integration breadth — Clef removes an entire category of infrastructure from your stack. No cluster. No unsealing. No token bootstrapping. No vendor custody.&lt;/p&gt;

&lt;p&gt;If you need a policy engine, an enterprise dashboard, or turnkey dynamic credentials for dozens of backends &lt;em&gt;today&lt;/em&gt; — Vault is purpose-built for that, and we'd rather you know upfront than find out after adoption.&lt;/p&gt;

&lt;p&gt;We think honesty builds more trust than a checkbox grid. 🎹&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://clef.sh" rel="noopener noreferrer"&gt;Clef&lt;/a&gt; is open source. Star us on &lt;a href="https://github.com/clef-sh/clef" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, read the &lt;a href="https://github.com/clef-sh/clef/blob/main/whitepaper.md" rel="noopener noreferrer"&gt;whitepaper&lt;/a&gt;, or just &lt;code&gt;npx clef init&lt;/code&gt; and see for yourself.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>security</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I thought running a HashiCorp Vault cluster just to securely pass API keys to production was a bit much.

So I built Clef: a tokenless, zero-server secrets manager using Git, SOPS, and KMS envelope encryption. Better security, smaller footprint.</title>
      <dc:creator>Clef.sh</dc:creator>
      <pubDate>Thu, 26 Mar 2026 12:41:38 +0000</pubDate>
      <link>https://dev.to/clef_sh/i-thought-running-a-hashicorp-vault-cluster-just-to-securely-pass-api-keys-to-production-was-a-bit-gd7</link>
      <guid>https://dev.to/clef_sh/i-thought-running-a-hashicorp-vault-cluster-just-to-securely-pass-api-keys-to-production-was-a-bit-gd7</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://dev.to/clef_sh/i-built-a-tokenless-secrets-manager-that-runs-entirely-on-git-and-kms-no-vault-required-41bi" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhs3bhhs5jerrs4lk2c4.png" height="350" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://dev.to/clef_sh/i-built-a-tokenless-secrets-manager-that-runs-entirely-on-git-and-kms-no-vault-required-41bi" rel="noopener noreferrer" class="c-link"&gt;
            I built a tokenless secrets manager that runs entirely on Git and KMS (No Vault required) - DEV Community
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            If you've ever had to manage secrets for a production application, you know the pain of the "Secret...
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" width="300" height="299"&gt;
          dev.to
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>showdev</category>
      <category>devops</category>
      <category>security</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built a tokenless secrets manager that runs entirely on Git and KMS (No Vault required)</title>
      <dc:creator>Clef.sh</dc:creator>
      <pubDate>Wed, 25 Mar 2026 20:48:53 +0000</pubDate>
      <link>https://dev.to/clef_sh/i-built-a-tokenless-secrets-manager-that-runs-entirely-on-git-and-kms-no-vault-required-41bi</link>
      <guid>https://dev.to/clef_sh/i-built-a-tokenless-secrets-manager-that-runs-entirely-on-git-and-kms-no-vault-required-41bi</guid>
      <description>&lt;p&gt;If you've ever had to manage secrets for a production application, you know the pain of the "Secret Zero" problem: &lt;em&gt;How do you securely deliver a secret to a workload without giving it a static &lt;code&gt;.env&lt;/code&gt; file or password first?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today, the industry standard way to solve this is to use HashiCorp Vault or Infisical tied to your cloud's machine identity (like AWS IAM Auth or Kubernetes Service Accounts). &lt;/p&gt;

&lt;p&gt;That works beautifully, &lt;strong&gt;but the infrastructure cost is massive.&lt;/strong&gt; You have to run an HA cluster, manage unseal keys, configure storage backends, and maintain a dedicated secrets server just to securely pass an API key. &lt;/p&gt;

&lt;p&gt;The alternative is raw Mozilla SOPS + Git, which gives an amazing developer experience but leaves you writing messy custom KMS-decryption bash scripts in your CI pipelines to get those secrets into production.&lt;/p&gt;

&lt;p&gt;I wanted the developer experience of Git, but the enterprise security of a tokenless, zero-trust architecture—without running a server. So, I built &lt;strong&gt;Clef&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Clef?
&lt;/h3&gt;

&lt;p&gt;Clef (&lt;a href="https://clef.sh" rel="noopener noreferrer"&gt;https://clef.sh&lt;/a&gt;) is an open-source secrets manager. It bridges the gap by treating your Git repository as the authoritative state and your cloud's native IAM as the authentication layer.&lt;/p&gt;

&lt;p&gt;Here is how the architecture works from development to production:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Local Development (Secrets as Code)
&lt;/h3&gt;

&lt;p&gt;Secrets are encrypted locally using SOPS and Age encryption. You define your service identities and namespaces in a simple &lt;code&gt;clef.yaml&lt;/code&gt; manifest. No plaintext is ever written to disk.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Initialize a new project&lt;/span&gt;
clef init

&lt;span class="c"&gt;# Set a secret in development&lt;/span&gt;
clef &lt;span class="nb"&gt;set &lt;/span&gt;database/development DB_URL &lt;span class="s2"&gt;"postgres://localhost:5432/myapp"&lt;/span&gt;

&lt;span class="c"&gt;# Inject secrets directly into your local Node process&lt;/span&gt;
clef &lt;span class="nb"&gt;exec &lt;/span&gt;database/development &lt;span class="nt"&gt;--&lt;/span&gt; node server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. CI/CD (The Pack Phase)
&lt;/h3&gt;

&lt;p&gt;When you merge your code, your CI pipeline runs &lt;code&gt;clef pack&lt;/code&gt;. It decrypts only the SOPS files scoped to that specific service, merges them, and creates a lightweight JSON artifact. &lt;/p&gt;

&lt;h3&gt;
  
  
  3. Solving "Secret Zero" (KMS Envelope Encryption)
&lt;/h3&gt;

&lt;p&gt;This is where the magic happens. To deliver that JSON artifact securely without static credentials, the CI pipeline generates an &lt;strong&gt;ephemeral, one-time-use Age key pair&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;It encrypts the artifact with the ephemeral key, and then &lt;em&gt;wraps&lt;/em&gt; the ephemeral private key using your cloud KMS (AWS or GCP). &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Production Runtime (The Agent)
&lt;/h3&gt;

&lt;p&gt;A lightweight Clef Agent sidecar runs next to your production app. It doesn't need a password or a &lt;code&gt;.env&lt;/code&gt; file. Using the machine's native cloud IAM role (like an AWS EC2 or ECS Task Role), the agent simply asks KMS to unwrap the ephemeral key. &lt;/p&gt;

&lt;p&gt;It then decrypts the artifact and serves the secrets to your app via a localhost API (&lt;code&gt;127.0.0.1:7779&lt;/code&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Your app code just fetches from localhost&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;secrets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://127.0.0.1:7779/v1/secrets&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bearer &amp;lt;local-token&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Honest Trade-off
&lt;/h3&gt;

&lt;p&gt;Security is always a trade-off. By eliminating the central server, &lt;strong&gt;your Git repository effectively becomes your access control list.&lt;/strong&gt; You are trading infrastructure complexity for strict GitOps process discipline. If an insider can merge a PR that adds their personal public key to your &lt;code&gt;clef.yaml&lt;/code&gt; manifest, they gain access to your secrets. To use Clef safely, you &lt;em&gt;must&lt;/em&gt; enforce strict branch protection, require CODEOWNERS reviews on your security manifests, and run isolated CI pipelines. &lt;/p&gt;

&lt;p&gt;Properly securing Git + CI is easier than securing Git + CI + Vault, but you have to treat your repo with the seriousness of a vault.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it out
&lt;/h3&gt;

&lt;p&gt;Clef is fully open-source under the MIT license. &lt;/p&gt;

&lt;p&gt;I wrote a detailed whitepaper breaking down the architecture, the KMS envelope math, and the threat model. I’d love for the DEV community to tear it apart, try out the CLI, and let me know what you think!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/clef-sh/clef" rel="noopener noreferrer"&gt;https://github.com/clef-sh/clef&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs &amp;amp; Whitepaper:&lt;/strong&gt; &lt;a href="https://clef.sh" rel="noopener noreferrer"&gt;https://clef.sh&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me know in the comments: For those of you running Vault today, is the operational overhead worth having a centralized policy engine, or would you trade it for a Git-native ACL like this?&lt;/p&gt;




</description>
      <category>showdev</category>
      <category>devops</category>
      <category>security</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
