<?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: Sruthi a</title>
    <description>The latest articles on DEV Community by Sruthi a (@sruthi_a_d59eeac85da1abc6).</description>
    <link>https://dev.to/sruthi_a_d59eeac85da1abc6</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%2F3804818%2F3f1cf86e-7742-4fbf-a8a0-863d9b1f9e93.png</url>
      <title>DEV Community: Sruthi a</title>
      <link>https://dev.to/sruthi_a_d59eeac85da1abc6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sruthi_a_d59eeac85da1abc6"/>
    <language>en</language>
    <item>
      <title>I Built a Zero-Config Secret Manager in Rust Because .env Files Are Security Theater</title>
      <dc:creator>Sruthi a</dc:creator>
      <pubDate>Mon, 30 Mar 2026 06:21:52 +0000</pubDate>
      <link>https://dev.to/sruthi_a_d59eeac85da1abc6/i-built-a-zero-config-secret-manager-in-rust-because-env-files-are-security-theater-264j</link>
      <guid>https://dev.to/sruthi_a_d59eeac85da1abc6/i-built-a-zero-config-secret-manager-in-rust-because-env-files-are-security-theater-264j</guid>
      <description>&lt;h1&gt;
  
  
  I Built a Zero-Config Secret Manager in Rust Because .env Files Are Security Theater
&lt;/h1&gt;

&lt;p&gt;Every time I onboard a new developer, the instructions include:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Ask someone for the &lt;code&gt;.env&lt;/code&gt; file. Don't commit it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's it. That's our secret management strategy. A file we pass around on Slack.&lt;/p&gt;

&lt;p&gt;We've all been there. A &lt;code&gt;.env&lt;/code&gt; ends up in a repo. Or in a Slack message. Or gets pasted into a Notion doc for "convenience." Then six months later you're rotating every credential you own because someone found it in a git log.&lt;/p&gt;

&lt;p&gt;The problem isn't that developers are careless. The problem is that &lt;code&gt;.env&lt;/code&gt; files are the path of least resistance — and they're fundamentally insecure by design.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problems with .env
&lt;/h2&gt;

&lt;p&gt;Let me be specific about what's wrong:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. They're plaintext.&lt;/strong&gt; Your &lt;code&gt;DATABASE_URL&lt;/code&gt; sits in a text file on your disk, next to your code. If your laptop is compromised, all your secrets are too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. They travel through insecure channels.&lt;/strong&gt; How do new devs get them? Slack DMs. Email. Sometimes a Google Doc. These aren't encrypted at rest. They're indexed. They persist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. They're static.&lt;/strong&gt; That &lt;code&gt;STRIPE_SECRET_KEY&lt;/code&gt; in your &lt;code&gt;.env&lt;/code&gt; from 2022? Still valid. Still sitting in your old laptop's backup. Static credentials that never expire are the gift that keeps on giving — to attackers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Git is forever.&lt;/strong&gt; Even with &lt;code&gt;.gitignore&lt;/code&gt;, secrets end up in repos. Accidentally committed, then deleted — but &lt;code&gt;git log&lt;/code&gt; remembers everything. GitHub has a secret scanning feature specifically because this happens constantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. No audit trail.&lt;/strong&gt; Who accessed &lt;code&gt;PROD_DATABASE_URL&lt;/code&gt; last Tuesday at 3am? With &lt;code&gt;.env&lt;/code&gt; files: no idea. Zero visibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built Instead
&lt;/h2&gt;

&lt;p&gt;I got frustrated enough that I spent a weekend building &lt;a href="https://zeroconfig.netlify.app" rel="noopener noreferrer"&gt;zenv&lt;/a&gt; — a zero-config secret injection runtime for developers. &lt;a href="https://github.com/arvytechnolgies/zenv" rel="noopener noreferrer"&gt;zenv&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea is simple: &lt;strong&gt;replace &lt;code&gt;.env&lt;/code&gt; files with an encrypted vault that injects secrets at runtime.&lt;/strong&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
# Before zenv
cp .env.example .env
# edit .env with secrets from Slack...
npm start

# After zenv
zenv init
zenv vault import .env  # one-time migration
zenv run -- npm start   # secrets injected at runtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>opensource</category>
      <category>rust</category>
    </item>
    <item>
      <title>Why AI Agents Need Knowledge, Not Just Memory</title>
      <dc:creator>Sruthi a</dc:creator>
      <pubDate>Wed, 04 Mar 2026 01:11:26 +0000</pubDate>
      <link>https://dev.to/sruthi_a_d59eeac85da1abc6/why-ai-agents-need-a-knowledge-graph-not-just-memory-h62</link>
      <guid>https://dev.to/sruthi_a_d59eeac85da1abc6/why-ai-agents-need-a-knowledge-graph-not-just-memory-h62</guid>
      <description>&lt;p&gt;Every AI agent framework in 2026 has some form of memory. Store a key-value pair, retrieve it later, maybe add a TTL. Problem solved, right?&lt;/p&gt;

&lt;p&gt;Not even close.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Memory Problem No One Talks About
&lt;/h2&gt;

&lt;p&gt;Here's what happens when you give an agent flat key-value memory:&lt;/p&gt;

&lt;p&gt;A digital care coordinator agent monitors a patient's records. It stores findings as separate memory entries: &lt;code&gt;patient_vitals&lt;/code&gt;, &lt;code&gt;medication_history&lt;/code&gt;, &lt;code&gt;cardiac_risk_factors&lt;/code&gt;, &lt;code&gt;sleep_irregularities&lt;/code&gt;. Clean, organized.&lt;/p&gt;

&lt;p&gt;Meanwhile, a lab assistant agent is optimizing experimental designs for a drug trial. It stores: &lt;code&gt;compound_efficacy&lt;/code&gt;, &lt;code&gt;cardiac_biomarkers&lt;/code&gt;, &lt;code&gt;dosage_response_curves&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The connection between the patient's cardiac risk factors and the lab's cardiac biomarker research? &lt;strong&gt;Gone.&lt;/strong&gt; Invisible. Two agents sitting on related knowledge with no way to discover it.&lt;/p&gt;

&lt;p&gt;This isn't a contrived example. It's what happens every day in every agent system using flat memory stores — in hospitals, research labs, and clinical workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Knowledge Graph Changes
&lt;/h2&gt;

&lt;p&gt;A knowledge graph doesn't just store facts — it stores &lt;em&gt;relationships between facts&lt;/em&gt;. When an agent writes a note about cardiac risk factors and links it to &lt;code&gt;[[Cardiac Biomarkers]]&lt;/code&gt;, that connection is a first-class entity in the system. It can be traversed, queried, and discovered.&lt;/p&gt;

&lt;p&gt;This changes three things fundamentally:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Agents discover what they don't know they know.
&lt;/h3&gt;

&lt;p&gt;With flat memory, an agent can only retrieve what it explicitly searches for. With a graph, it can ask: "What's connected to X within 2 hops?" and find relationships it never explicitly created. A care coordinator could discover that a patient's sleep irregularities are linked to a medication whose cardiac biomarkers are being studied in an active trial — without anyone explicitly making that connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Multi-agent collaboration becomes natural.
&lt;/h3&gt;

&lt;p&gt;A care coordinator agent flags a patient's worsening vitals. A lab assistant agent logs promising results for a new cardiac compound. If both mention &lt;code&gt;[[Cardiac Biomarkers]]&lt;/code&gt;, the graph links them automatically. A clinical decision agent can traverse from patient vitals → cardiac biomarkers → compound efficacy and surface a potential treatment option none of them could individually.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Knowledge compounds instead of accumulating.
&lt;/h3&gt;

&lt;p&gt;Flat memory grows linearly. A knowledge graph grows combinatorially — each new node potentially connects to every existing node. After 1,000 notes with wiki-links across patient records, lab results, and wearable data, you don't have 1,000 facts. You have a web of clinical relationships that's worth far more than the sum of its parts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Current Landscape
&lt;/h2&gt;

&lt;p&gt;The agent memory space is heating up. Mem0 raised $24M and processes 186 million API calls per quarter. Letta (formerly MemGPT) is building OS-inspired memory hierarchies. LangChain has LangMem. Everyone agrees agents need memory.&lt;/p&gt;

&lt;p&gt;But here's the gap: &lt;strong&gt;almost all of these are flat stores with optional vector search.&lt;/strong&gt; They're optimized for "remember this, recall that." They're not optimized for "discover connections I didn't know existed."&lt;/p&gt;

&lt;p&gt;The enterprise world figured this out years ago. Knowledge graphs power Google's search, Amazon's recommendations, and every pharmaceutical company's drug discovery pipeline. The agentic AI world is still catching up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Built
&lt;/h2&gt;

&lt;p&gt;We built &lt;a href="https://github.com/smriti-AA/smriti" rel="noopener noreferrer"&gt;Smriti&lt;/a&gt; — a self-hosted knowledge store for AI agents with a knowledge graph at its core.&lt;/p&gt;

&lt;p&gt;It's written in Rust (because when agents make millions of memory operations, speed matters), stores everything in SQLite (because self-hosted means no cloud dependency), and speaks MCP natively (because that's becoming the standard protocol for agent-tool communication).&lt;/p&gt;

&lt;p&gt;The key design decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wiki-links as first-class connections.&lt;/strong&gt; When an agent writes &lt;code&gt;[[Cardiac Biomarkers]]&lt;/code&gt; in a note, that creates a traversable edge in the graph. No separate API call needed. A care coordinator logging patient data and a lab agent logging trial results automatically connect through shared concepts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Graph traversal as a tool.&lt;/strong&gt; Agents can BFS/DFS through the knowledge graph to find related notes within N hops. This is how a clinical decision agent discovers that a patient's symptoms connect to an active drug trial three hops away.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Self-hosted by default.&lt;/strong&gt; Your data stays on your machine. No API costs, no cloud dependency, no vendor lock-in. Critical for healthcare use cases where patient data governance and HIPAA compliance are non-negotiable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP server built in.&lt;/strong&gt; Start with &lt;code&gt;smriti mcp&lt;/code&gt; and any MCP-compatible AI can use it as a knowledge store. 8 tools: create, read, search, list, graph, memory_store, memory_retrieve, memory_list.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Developers building agentic workflows who need their agents to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remember across sessions (not just within a conversation)&lt;/li&gt;
&lt;li&gt;Discover connections between stored knowledge&lt;/li&gt;
&lt;li&gt;Share a knowledge base across multiple agents&lt;/li&gt;
&lt;li&gt;Keep all data local and under their control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not for everyone. If you need cloud-hosted memory with managed infrastructure, Mem0 is great. If you need deep research-grade memory hierarchies, Letta is interesting.&lt;/p&gt;

&lt;p&gt;But if you want a fast, self-hosted knowledge store where agents can build and traverse a knowledge graph — whether for healthcare coordination, lab automation, or any domain where relationships between data matter — that's what we built.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cargo &lt;span class="nb"&gt;install &lt;/span&gt;smriti

&lt;span class="c"&gt;# Care coordinator logs patient data with wiki-links&lt;/span&gt;
smriti create &lt;span class="s2"&gt;"Patient 4721 Assessment"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--content&lt;/span&gt; &lt;span class="s2"&gt;"Elevated resting heart rate from [[Wearable Data]]. History of [[Cardiac Risk Factors]]. Current medication may affect [[Cardiac Biomarkers]]."&lt;/span&gt;

&lt;span class="c"&gt;# Lab assistant logs trial findings&lt;/span&gt;
smriti create &lt;span class="s2"&gt;"Trial CB-209 Results"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--content&lt;/span&gt; &lt;span class="s2"&gt;"Compound shows 40% improvement in [[Cardiac Biomarkers]]. Correlates with [[Dosage Response Curves]]. Monitor [[Patient Vitals]] in Phase 2."&lt;/span&gt;

&lt;span class="c"&gt;# Discover the connection&lt;/span&gt;
smriti graph &lt;span class="nt"&gt;--note&lt;/span&gt; 1 &lt;span class="nt"&gt;--depth&lt;/span&gt; 2

&lt;span class="c"&gt;# Start the MCP server&lt;/span&gt;
smriti mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub: &lt;a href="https://github.com/smriti-AA/smriti" rel="noopener noreferrer"&gt;github.com/smriti-AA/smriti&lt;/a&gt;&lt;br&gt;
Crates.io: &lt;code&gt;cargo install smriti&lt;/code&gt;&lt;/p&gt;




</description>
      <category>ai</category>
      <category>rust</category>
      <category>mcp</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
