<?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: John Anthony Pecson</title>
    <description>The latest articles on DEV Community by John Anthony Pecson (@jonpecson).</description>
    <link>https://dev.to/jonpecson</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%2F124703%2F64dea5a1-718a-45a4-be11-0576680156fa.jpg</url>
      <title>DEV Community: John Anthony Pecson</title>
      <link>https://dev.to/jonpecson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonpecson"/>
    <language>en</language>
    <item>
      <title>Stop Copy-Pasting .env Files Across Your Team</title>
      <dc:creator>John Anthony Pecson</dc:creator>
      <pubDate>Wed, 06 May 2026 13:03:10 +0000</pubDate>
      <link>https://dev.to/jonpecson/stop-copy-pasting-env-files-across-your-team-33m3</link>
      <guid>https://dev.to/jonpecson/stop-copy-pasting-env-files-across-your-team-33m3</guid>
      <description>&lt;p&gt;Every dev team eventually hits this problem.&lt;/p&gt;

&lt;p&gt;A new developer joins the project.&lt;/p&gt;

&lt;p&gt;They clone the repo.&lt;/p&gt;

&lt;p&gt;Then the first question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Where do I get the &lt;code&gt;.env&lt;/code&gt; file?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the usual answers are not great:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Check Slack”&lt;/li&gt;
&lt;li&gt;“Ask someone from the team”&lt;/li&gt;
&lt;li&gt;“It’s in Notion”&lt;/li&gt;
&lt;li&gt;“Use the staging one, but change these two values”&lt;/li&gt;
&lt;li&gt;“Wait, I think that one is outdated”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is not really a secrets problem.&lt;/p&gt;

&lt;p&gt;It is a workflow problem.&lt;/p&gt;

&lt;p&gt;Most teams already have &lt;em&gt;some&lt;/em&gt; way to store secrets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1Password&lt;/li&gt;
&lt;li&gt;Bitwarden&lt;/li&gt;
&lt;li&gt;AWS Secrets Manager&lt;/li&gt;
&lt;li&gt;Infisical&lt;/li&gt;
&lt;li&gt;dotenvx&lt;/li&gt;
&lt;li&gt;local &lt;code&gt;.env&lt;/code&gt; files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the daily developer workflow can still get messy.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.env&lt;/code&gt; files drift.&lt;br&gt;
Staging and production values get mixed up.&lt;br&gt;
New dev onboarding requires manual handoff.&lt;br&gt;
Someone still ends up copy-pasting secrets somewhere.&lt;/p&gt;

&lt;p&gt;So we started building &lt;strong&gt;MeowPass&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;MeowPass is an open-source, CLI-first tool focused on keeping team &lt;code&gt;.env&lt;/code&gt; files in sync.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone repo
mp login
mp pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;No vault ID passed around.&lt;br&gt;
No Slack DM.&lt;br&gt;
No guessing which &lt;code&gt;.env&lt;/code&gt; is current.&lt;/p&gt;
&lt;h2&gt;
  
  
  The key idea: &lt;code&gt;.meowpass.yaml&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;One of the main design decisions we made was adding a project-level config file:&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;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="na"&gt;vault&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;vault_id&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;default_env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;development&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This file is safe to commit to Git.&lt;/p&gt;

&lt;p&gt;It contains no secrets.&lt;/p&gt;

&lt;p&gt;It only tells the CLI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which vault belongs to this repo&lt;/li&gt;
&lt;li&gt;which environment should be used by default&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So after a project is initialized, any teammate can clone the repo and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mp login
mp pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI reads &lt;code&gt;.meowpass.yaml&lt;/code&gt;, resolves the correct vault, and pulls the right secrets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic setup
&lt;/h2&gt;

&lt;p&gt;For the first developer setting up a project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;meowrithm/tap/meowpass
mp login
mp init
mp pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;mp init&lt;/code&gt; detects existing &lt;code&gt;.env&lt;/code&gt; files, creates the vault, imports secrets, and writes &lt;code&gt;.meowpass.yaml&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then you commit the config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add .meowpass.yaml
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add MeowPass project config"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the next developer only needs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mp login
mp pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why not just use dotenvx?
&lt;/h2&gt;

&lt;p&gt;Honestly, if you are working solo, dotenvx is probably enough.&lt;/p&gt;

&lt;p&gt;It is simple, local-first, and great for encrypted &lt;code&gt;.env&lt;/code&gt; workflows.&lt;/p&gt;

&lt;p&gt;MeowPass is more focused on the team workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;multiple developers&lt;/li&gt;
&lt;li&gt;multiple environments&lt;/li&gt;
&lt;li&gt;onboarding new teammates&lt;/li&gt;
&lt;li&gt;reducing &lt;code&gt;.env&lt;/code&gt; drift&lt;/li&gt;
&lt;li&gt;avoiding secret handoff over chat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference is roughly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dotenvx secures &lt;code&gt;.env&lt;/code&gt; files&lt;/li&gt;
&lt;li&gt;MeowPass helps teams stop manually passing &lt;code&gt;.env&lt;/code&gt; files around&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why not just use 1Password or Bitwarden?
&lt;/h2&gt;

&lt;p&gt;Password managers are great for storing secrets.&lt;/p&gt;

&lt;p&gt;But in many dev teams, the workflow still becomes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;open password manager&lt;/li&gt;
&lt;li&gt;find the secret&lt;/li&gt;
&lt;li&gt;copy value&lt;/li&gt;
&lt;li&gt;paste into &lt;code&gt;.env&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;hope everyone else has the same value&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;MeowPass focuses on the usage layer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mp pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mp run &lt;span class="nt"&gt;--&lt;/span&gt; npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The terminal becomes the workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not Infisical or AWS Secrets Manager?
&lt;/h2&gt;

&lt;p&gt;Those are solid tools, especially for larger teams and infra-heavy setups.&lt;/p&gt;

&lt;p&gt;But for small teams, they can feel heavier than needed when the immediate pain is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can everyone get the correct &lt;code&gt;.env&lt;/code&gt; quickly?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;MeowPass is intentionally CLI-first and lightweight.&lt;/p&gt;

&lt;p&gt;It is not trying to replace every secret manager.&lt;/p&gt;

&lt;p&gt;The first wedge is much smaller:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop copy-pasting &lt;code&gt;.env&lt;/code&gt; files.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What we are still validating
&lt;/h2&gt;

&lt;p&gt;This is still early.&lt;/p&gt;

&lt;p&gt;The main things we are testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is &lt;code&gt;.meowpass.yaml&lt;/code&gt; the right mental model?&lt;/li&gt;
&lt;li&gt;Does &lt;code&gt;git clone -&amp;gt; mp login -&amp;gt; mp pull&lt;/code&gt; feel obvious?&lt;/li&gt;
&lt;li&gt;Is this simpler than manually syncing &lt;code&gt;.env&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Would teams trust a zero-knowledge secret workflow?&lt;/li&gt;
&lt;li&gt;Where does this break compared to dotenvx, Infisical, or AWS Secrets Manager?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Open source
&lt;/h2&gt;

&lt;p&gt;The project is open source here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/meowrithm" rel="noopener noreferrer"&gt;https://github.com/meowrithm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://meowpass.dev" rel="noopener noreferrer"&gt;https://meowpass.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are actively dogfooding it and looking for feedback from devs who have dealt with &lt;code&gt;.env&lt;/code&gt; drift, onboarding friction, or team secret sharing.&lt;/p&gt;

&lt;p&gt;Would you use a committed metadata file like &lt;code&gt;.meowpass.yaml&lt;/code&gt;, or would you rather keep encrypted &lt;code&gt;.env&lt;/code&gt; files directly in Git?&lt;/p&gt;

</description>
      <category>devops</category>
      <category>productivity</category>
      <category>security</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
