<?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: Simon Faillace Mullen</title>
    <description>The latest articles on DEV Community by Simon Faillace Mullen (@sfmullen).</description>
    <link>https://dev.to/sfmullen</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F643477%2F183ea01a-1e38-4790-beda-c50b829b389d.jpg</url>
      <title>DEV Community: Simon Faillace Mullen</title>
      <link>https://dev.to/sfmullen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sfmullen"/>
    <language>en</language>
    <item>
      <title>How Autonoma AI Uses Occultus to Accelerate Development and Maintain Consistency</title>
      <dc:creator>Simon Faillace Mullen</dc:creator>
      <pubDate>Mon, 03 Mar 2025 16:46:16 +0000</pubDate>
      <link>https://dev.to/sfmullen/how-autonoma-ai-uses-occultus-to-accelerate-development-and-maintain-consistency-44oc</link>
      <guid>https://dev.to/sfmullen/how-autonoma-ai-uses-occultus-to-accelerate-development-and-maintain-consistency-44oc</guid>
      <description>&lt;p&gt;At &lt;strong&gt;Autonoma AI&lt;/strong&gt;, we constantly look for ways to improve our development workflow and ensure that our engineering teams can move fast without compromising security. One of the biggest challenges in software development is managing secrets—API keys, database credentials, and other sensitive configurations—across multiple developers, environments, and machines.&lt;/p&gt;

&lt;p&gt;To solve this problem, we built and open-sourced &lt;strong&gt;Occultus&lt;/strong&gt;, a lightweight NPM package that automates fetching secrets from &lt;strong&gt;Google Cloud Secret Manager&lt;/strong&gt; and securely storing them in an &lt;code&gt;.env&lt;/code&gt; file. This has significantly improved our development experience, reducing setup time and ensuring consistency across our team.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Managing Secrets in a Fast-Paced Development Environment
&lt;/h2&gt;

&lt;p&gt;Before using &lt;strong&gt;Occultus&lt;/strong&gt;, sharing secrets among developers was a manual and error-prone process. Some common issues we faced included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding delays&lt;/strong&gt;: New engineers had to manually request, retrieve, and configure secrets for different environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inconsistent environments&lt;/strong&gt;: Different team members sometimes used outdated or incorrect secrets, leading to debugging headaches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security risks&lt;/strong&gt;: Storing secrets in plaintext or committing them accidentally was a constant concern.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We needed a solution that:&lt;br&gt;
✅ Fetches secrets &lt;strong&gt;securely&lt;/strong&gt; from Google Cloud Secret Manager.&lt;br&gt;
✅ Ensures all developers use the &lt;strong&gt;same, up-to-date&lt;/strong&gt; secrets.&lt;br&gt;
✅ Works &lt;strong&gt;seamlessly&lt;/strong&gt; with existing development workflows.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Solution: Occultus
&lt;/h2&gt;

&lt;p&gt;With &lt;strong&gt;Occultus&lt;/strong&gt;, we solved all these problems in one simple package. Now, developers only need to run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run fetch-secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single command:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reads the configuration from &lt;code&gt;package.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Fetches the latest secret from &lt;strong&gt;Google Cloud Secret Manager&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Stores it in an &lt;code&gt;.env&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Skips unnecessary downloads if the secret hasn’t changed, reducing API calls and improving performance.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;Since &lt;strong&gt;Occultus&lt;/strong&gt; is meant for development environments, we recommend installing it as a dev dependency:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @autonoma-ai/occultus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How We Integrated Occultus Internally
&lt;/h3&gt;

&lt;p&gt;We standardized secret management across all our repositories by adding this snippet to each project's &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"occultus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"projectId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"autonoma-ai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"secretName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dev-env-secret"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"envFile"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;".env"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Explanation of Configuration Options
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;projectId&lt;/code&gt;&lt;/strong&gt;: The Google Cloud project where the secret is stored.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;secretName&lt;/code&gt;&lt;/strong&gt;: The name of the secret in Google Cloud Secret Manager.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;envFile&lt;/code&gt;&lt;/strong&gt;: The name of the environment variable file where the secret will be stored (e.g., &lt;code&gt;.env&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, every developer at Autonoma AI just runs &lt;code&gt;npm run fetch-secret&lt;/code&gt; when setting up a project, ensuring they have the latest environment configuration with &lt;strong&gt;zero friction&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Occultus Programmatically
&lt;/h3&gt;

&lt;p&gt;In addition to the CLI command, &lt;strong&gt;Occultus&lt;/strong&gt; also provides a function that can be used anywhere in your codebase.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example Usage:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;saveSecretToEnv&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;occultus&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="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;saveSecretToEnv&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Secrets have been updated successfully!&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This flexibility allows developers to dynamically fetch secrets whenever needed, making &lt;strong&gt;Occultus&lt;/strong&gt; even more versatile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of Using Occultus
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ &lt;strong&gt;Accelerated Onboarding&lt;/strong&gt; 🚀
&lt;/h3&gt;

&lt;p&gt;New team members can start coding &lt;strong&gt;immediately&lt;/strong&gt; without manually retrieving secrets. The entire environment is set up in seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ &lt;strong&gt;Consistency Across Machines&lt;/strong&gt; 🔄
&lt;/h3&gt;

&lt;p&gt;Whether a developer is using a Mac, Linux, or Windows machine, they will always have the correct secrets configured, preventing “works on my machine” issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ &lt;strong&gt;Security &amp;amp; Compliance&lt;/strong&gt; 🔐
&lt;/h3&gt;

&lt;p&gt;By fetching secrets dynamically, we avoid committing them to version control, reducing security risks and ensuring compliance with best practices.&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ &lt;strong&gt;Automated Updates&lt;/strong&gt; 🔄
&lt;/h3&gt;

&lt;p&gt;If a secret changes in &lt;strong&gt;Google Cloud Secret Manager&lt;/strong&gt;, developers receive the update automatically the next time they run the command.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open-Sourcing Occultus
&lt;/h2&gt;

&lt;p&gt;We believe in &lt;strong&gt;developer productivity&lt;/strong&gt; and &lt;strong&gt;secure best practices&lt;/strong&gt;, so we decided to make &lt;strong&gt;Occultus&lt;/strong&gt; open-source. We hope other teams facing similar challenges can benefit from it.&lt;/p&gt;

&lt;p&gt;You can check out the repository here: &lt;a href="https://github.com/Autonoma-AI/occultus" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub Repo&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to try it out and contribute! 🚀 Let us know how it helps &lt;/p&gt;

&lt;h2&gt;
  
  
  About Autonoma AI
&lt;/h2&gt;

&lt;p&gt;At Autonoma AI, we are revolutionizing UI testing by enabling everyone to create tests without writing code. Our platform allows users to describe test scenarios in natural language, making test creation as simple as showing us what to do. This approach accelerates development cycles, reduces bugs, and frees up teams to focus on building exceptional products.&lt;/p&gt;

&lt;p&gt;Key Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No-Code Test Creation: Write tests without code by interacting with our intuitive interface or using natural language commands.&lt;/li&gt;
&lt;li&gt;Multi-Platform Support: Automatically test across Web, iOS, and Android platforms, covering various versions, models, and screen sizes.&lt;/li&gt;
&lt;li&gt;CI/CD Integration: Seamlessly integrate with your CI/CD pipeline to ensure every release is thoroughly tested without manual effort.&lt;/li&gt;
&lt;li&gt;Zero Maintenance: Our AI automatically fixes broken tests, reducing maintenance and keeping your testing flow uninterrupted.&lt;/li&gt;
&lt;li&gt;Visual Testing: Go beyond manual checks with our visual testing capabilities to catch all UI-related bugs.&lt;/li&gt;
&lt;li&gt;Fully Managed Testing: We handle everything—from test execution to analysis—so you can focus on building, not debugging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By leveraging Autonoma AI, leading companies have saved time and resources, improved product quality, and accelerated their development processes. Join us in transforming the way you approach UI testing.&lt;/p&gt;

&lt;p&gt;For more information, visit our website: &lt;a href="https://getautonoma.com" rel="noopener noreferrer"&gt;getautonoma.com&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
