<?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: Jafar Tavana</title>
    <description>The latest articles on DEV Community by Jafar Tavana (@jafar_tavana_0279e8ebfd85).</description>
    <link>https://dev.to/jafar_tavana_0279e8ebfd85</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%2F3981505%2Fbec32d6e-0243-425b-8026-fb5c29752df9.jpg</url>
      <title>DEV Community: Jafar Tavana</title>
      <link>https://dev.to/jafar_tavana_0279e8ebfd85</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jafar_tavana_0279e8ebfd85"/>
    <language>en</language>
    <item>
      <title>VMware Beacon Probing: Network Failover Detection Mechanism</title>
      <dc:creator>Jafar Tavana</dc:creator>
      <pubDate>Mon, 15 Jun 2026 07:44:49 +0000</pubDate>
      <link>https://dev.to/jafar_tavana_0279e8ebfd85/vmware-beacon-probing-network-failover-detection-mechanism-1n5p</link>
      <guid>https://dev.to/jafar_tavana_0279e8ebfd85/vmware-beacon-probing-network-failover-detection-mechanism-1n5p</guid>
      <description>&lt;p&gt;&lt;a href="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%2Fv2tiiars86rmlyl2ruco.png" class="article-body-image-wrapper"&gt;&lt;img 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%2Fv2tiiars86rmlyl2ruco.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abstract&lt;/p&gt;

&lt;p&gt;Virtualized environments require highly resilient network architectures to ensure the uninterrupted availability of critical workloads. While local link state monitoring provides foundational fault detection, it is frequently blind to upstream network failures that occur beyond the immediate physical connection of the host. This paper explores VMware vSphere's Beacon Probing, a software-based, switch-agnostic network failover mechanism designed to address these upstream blind spots. By continuously transmitting and evaluating specialized Layer 2 Ethernet broadcast frames across a team of network interface cards, beacon probing effectively maps the logical health of the upstream broadcast domain. Through a comprehensive analysis of its operational mechanics, specific packet characteristics, topology requirements, and inherent limitations, this paper elucidates how beacon probing operates and delineates the optimal scenarios for its deployment in modern data centers.&lt;/p&gt;

&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;Modern virtualized data centers rely fundamentally on continuous network connectivity to maintain application uptime and facilitate infrastructure management. To achieve high availability, administrators group multiple physical Network Interface Cards (NICs) into logical teams, providing redundancy in the event of hardware or cable failures. Traditionally, the primary method for triggering a failover within these NIC teams has been link state tracking, which monitors the electrical carrier signal on the physical interface. While highly efficient for local outages, this fundamental approach lacks visibility into the broader network fabric extending beyond the initial switch hop. &lt;/p&gt;

&lt;p&gt;The primary problem addressed by advanced failover mechanisms is the detection of logical or upstream path failures that do not result in a loss of local link state. For example, if an upstream switch fails, or if an inter-switch link goes offline, the local NIC connected to the first-hop switch will still report an active link status, resulting in a network black hole where traffic is sent but never successfully routed. The scope of this paper focuses specifically on software-based probing techniques utilized by the hypervisor to continuously validate the end-to-end integrity of the Layer 2 broadcast domain without relying on hardware-specific network configurations. &lt;/p&gt;

&lt;p&gt;Existing approaches to this problem are often insufficient for several critical reasons. First, simple link state tracking is structurally incapable of detecting upstream misconfigurations or switch-to-switch connection severances, leaving virtual machines silently disconnected from the broader network. Second, while some physical switches offer proprietary features like Link State Tracking to propagate upstream failures downward, these solutions are heavily vendor-dependent, add significant complexity to network configurations, and are frequently unsupported in heterogeneous or highly complex upstream topologies. &lt;/p&gt;

&lt;p&gt;To address the shortcomings of traditional link state dependencies, this paper provides a thorough examination of VMware vSphere's beacon probing failover mechanism. The core contributions of this paper are twofold. First, it provides a comprehensive architectural breakdown of the beacon probing packet structure, specifically analyzing its reliance on Layer 2 Ethernet broadcast mechanics over traditional IP-based routing. Second, it formulates precise topology guidelines and failure detection logic frameworks, demonstrating precisely why a minimum of three active uplinks is mathematically necessary to isolate upstream failures without falling victim to split-brain routing ambiguities.&lt;/p&gt;

&lt;p&gt;Related Work&lt;/p&gt;

&lt;p&gt;Local Physical Link State Detection&lt;/p&gt;

&lt;p&gt;The most ubiquitous method for network fault detection relies on continuous monitoring of the physical layer carrier signal. The core idea behind this approach is that a severed cable or an unpowered first-hop switch port will immediately cause the local network interface to transition to a down state. The primary strength of physical link monitoring is its instantaneous reaction time and zero computational overhead, as the detection is handled entirely at the hardware level. However, its fatal weakness is its complete blindness to any network anomalies occurring beyond the direct local connection. Compared to beacon probing, which actively maps the logical broadcast domain, link state detection serves only as a baseline physical indicator rather than a comprehensive health monitor.&lt;/p&gt;

&lt;p&gt;Switch-Assisted Hardware Failure Propagation&lt;/p&gt;

&lt;p&gt;To overcome the limitations of strictly local link detection, network vendors developed hardware-assisted protocols such as Link State Tracking and Trunk Failover. The core concept here is that an upstream switch monitors its own core connections; if an upstream link fails, the switch intentionally disables its downstream ports, forcing the connected servers to recognize a link-down event and initiate local failover. While this provides a deterministic and fast failover mechanism, it severely restricts network design by mandating vendor-specific hardware capabilities and strict hierarchical topologies. Beacon probing presents a stark contrast to this hardware-centric approach, offering a purely software-based, switch-agnostic alternative that operates transparently across multi-vendor fabrics.&lt;/p&gt;

&lt;p&gt;Application-Layer and Layer 3 Polling Mechanisms&lt;/p&gt;

&lt;p&gt;In complex enterprise networks, routing protocols and technologies like Bidirectional Forwarding Detection (BFD) or ICMP polling are often used to monitor end-to-end path viability. The fundamental idea is to continuously exchange IP packets between specific endpoints at Layer 3 or Layer 4 to verify that the entire routing path remains traversable. While these methods excel at verifying end-to-end connectivity across routed networks, they require complex IP address configurations, subnet planning, and significantly higher computational overhead. Beacon probing differs significantly from these methods by operating entirely at Layer 2; it relies exclusively on MAC-level broadcast frames without any IP configuration requirements on the VMkernel ports or port groups.&lt;/p&gt;

&lt;p&gt;Method/Approach&lt;/p&gt;

&lt;p&gt;Architectural Topology Framework&lt;/p&gt;

&lt;p&gt;The deployment of beacon probing necessitates a specific physical network architecture to function deterministically. The hypervisor host must be provisioned with a NIC team consisting of at least three physical uplinks (e.g., two active and one standby, or three active) connected to diverse upstream switches. If only two uplinks are utilized, a failure in the communication path results in a "split-brain" scenario where neither NIC receives the other's beacons, making it impossible for the host to identify whether the sender, the receiver, or the path has failed. By mandating a three-uplink topology, the system leverages quorum logic: if a single upstream path fails, the remaining two NICs will still successfully exchange beacons, allowing the hypervisor to isolate and penalize the specific isolated uplink. &lt;/p&gt;

&lt;p&gt;Transmission Mechanics and Packet Design&lt;/p&gt;

&lt;p&gt;The beacon probing mechanism relies on highly specialized, lightweight Ethernet frames designed to traverse an entire Layer 2 broadcast domain. Instead of relying on specific IP addresses, the mechanism utilizes standard Ethernet broadcast frames addressed to the destination MAC address of FF:FF:FF:FF:FF:FF. The packet structure is deliberately minimal, consisting of an 18-byte Ethernet header and approximately 71 bytes of payload, resulting in a total frame size of merely 89 bytes. Furthermore, these frames are tagged with a specific Ethernet protocol type (0x8922) that clearly identifies them as beacon probe packets, allowing them to be forwarded by physical switches to all ports within the broadcast domain without necessitating complex routing decisions.&lt;/p&gt;

&lt;p&gt;Failure Detection Pipeline&lt;/p&gt;

&lt;p&gt;The operational logic of beacon probing operates through a continuous, cyclical pipeline executed by the hypervisor. The process can be abstracted into the following structured steps:&lt;/p&gt;

&lt;p&gt;Periodic Transmission: Every active physical NIC within the configured team independently generates and transmits a beacon broadcast frame at an interval of approximately one second.&lt;/p&gt;

&lt;p&gt;Listener Evaluation: Every other active NIC in the team continuously listens for incoming broadcast frames matching the 0x8922 EtherType from its peers.&lt;/p&gt;

&lt;p&gt;Threshold Monitoring: The hypervisor maintains a counter for expected packets; if an individual uplink fails to receive three consecutive beacon frames from a specific peer, a failure flag is triggered.&lt;/p&gt;

&lt;p&gt;Traffic Rerouting: Once the three-miss threshold is breached, the hypervisor correlates the missed packets against the total array of NICs, identifies the isolated uplink, marks its path as degraded, and seamlessly fails over VM traffic to the remaining healthy interfaces.&lt;/p&gt;

&lt;p&gt;Proposed Evaluation Methodology&lt;/p&gt;

&lt;p&gt;To validate the efficacy of beacon probing against traditional link state mechanisms, a structured, hypothetical testing environment should be employed. The testbed would consist of an ESXi host configured with three uplinks connected to a tiered array of physical switches, handling continuous UDP streaming traffic. The evaluation plan would introduce two distinct failure scenarios: a physical cable disconnection at the host level, and an upstream inter-switch link failure that leaves the host's direct link state intact. Performance metrics would include total failover latency (measured in milliseconds from the time of cable severing to the resumption of UDP traffic) and network overhead generated by the broadcast packets, ultimately proving that beacon probing captures the upstream failures that local tracking entirely misses.&lt;/p&gt;

&lt;p&gt;Discussion&lt;/p&gt;

&lt;p&gt;Practical Implications&lt;/p&gt;

&lt;p&gt;The implementation of beacon probing provides substantial operational resilience for data centers utilizing stacked switches or heavily meshed upstream topologies. In environments where hardware-based link state propagation cannot be reliably deployed, administrators can leverage this software-defined approach to guarantee high availability for mission-critical virtualized workloads. Furthermore, because the mechanism operates purely at Layer 2 without any dependency on VMkernel IP configuration, it can be deployed seamlessly across existing VLANs and port groups with minimal architectural redesign.&lt;/p&gt;

&lt;p&gt;Limitations and Failure Modes&lt;/p&gt;

&lt;p&gt;Despite its utility, beacon probing is not universally applicable and suffers from several notable limitations. First, it is fundamentally incompatible with IP Hash load balancing algorithms; IP Hash requires strict deterministic routing behavior from the upstream switch, which conflicts directly with the reactive traffic shifting performed by beacon probing. Second, because it relies on Layer 2 broadcast packets, scaling this mechanism across a massively flat, unsegmented network can contribute to broadcast storms and unnecessary processing overhead on edge devices. Third, the system is highly vulnerable to ambiguous failure states if implemented incorrectly with only two uplinks, as the resulting split-brain logic can trigger unnecessary route flapping and severe packet drops.&lt;/p&gt;

&lt;p&gt;Ethical Considerations and Risks&lt;/p&gt;

&lt;p&gt;From a security and operational risk standpoint, broadcast-based detection mechanisms introduce specific vulnerabilities that must be actively managed. The primary security risk involves localized Denial of Service (DoS); a malicious actor who gains access to the Layer 2 domain could theoretically inject spoofed Ethernet frames containing the 0x8922 EtherType. By flooding or intentionally withholding these spoofed packets, an attacker could artificially manipulate the hypervisor's failover logic, forcing traffic onto compromised or sub-optimal physical links. Additionally, there is a risk of severe network instability if administrators misunderstand the required thresholds; misconfiguring the expected beacon intervals or deploying the feature on incompatible switch topologies can lead to continuous, systemic outages that are highly difficult to troubleshoot.&lt;/p&gt;

&lt;p&gt;Future Directions&lt;/p&gt;

&lt;p&gt;Looking forward, the architecture of beacon probing could be significantly enhanced to operate reliably within zero-trust network environments. One vital area for future work is the development of cryptographic validation for the beacon payloads; implementing lightweight cryptographic signatures within the 71-byte payload would prevent malicious injection and ensure that hosts only react to verified internal broadcasts. Furthermore, integrating machine learning algorithms could allow the hypervisor to dynamically adjust the one-second polling interval; during periods of extreme network congestion, the system could automatically expand the timeout threshold, preventing false-positive failovers triggered strictly by transient network latency rather than true hardware failure.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;Network availability in virtualized data centers demands fault detection mechanisms that extend beyond the physical boundaries of the host server. VMware’s beacon probing achieves this by utilizing lightweight, standard Ethernet Layer 2 broadcasts to continuously map the logical viability of the upstream broadcast domain. By establishing a rigorous three-miss threshold and mandating a minimum of three physical uplinks, the protocol provides a highly reliable, switch-agnostic methodology for circumventing upstream network black holes that traditional link state tracking cannot detect.&lt;/p&gt;

&lt;p&gt;While not suitable for all environments—particularly those utilizing IP Hash load balancing or massively flat Layer 2 networks—beacon probing remains a powerful tool within the systems administrator's arsenal. By bridging the critical gap between localized physical fault detection and heavy, IP-dependent routing protocols, it ensures that workloads remain resilient across increasingly complex and unpredictable upstream network topologies. As virtualized infrastructure continues to evolve, software-defined resilience mechanisms like beacon probing will remain essential to maintaining continuous application delivery.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why Local System Monitoring Still Beats the Cloud — and How I Built My Own Dashboard to Prove It</title>
      <dc:creator>Jafar Tavana</dc:creator>
      <pubDate>Sat, 13 Jun 2026 15:44:24 +0000</pubDate>
      <link>https://dev.to/jafar_tavana_0279e8ebfd85/why-local-system-monitoring-still-beats-the-cloud-and-how-i-built-my-own-dashboard-to-prove-it-967</link>
      <guid>https://dev.to/jafar_tavana_0279e8ebfd85/why-local-system-monitoring-still-beats-the-cloud-and-how-i-built-my-own-dashboard-to-prove-it-967</guid>
      <description>&lt;p&gt;&lt;a href="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%2Fro8cyrxudu86wqe4xuju.png" class="article-body-image-wrapper"&gt;&lt;img 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%2Fro8cyrxudu86wqe4xuju.png" alt=" " width="799" height="346"&gt;&lt;/a&gt;&lt;br&gt;
Over the past few years, the technology industry has moved almost everything to the cloud. Infrastructure, storage, communication, analytics — the default answer to nearly every engineering problem now begins with "there's a SaaS for that." And in many cases, that is the right answer.&lt;/p&gt;

&lt;p&gt;But there is one domain where I believe the cloud-first instinct leads us astray: &lt;strong&gt;system monitoring on your own machine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This article explains why, and how I responded by building an open-source, fully local Windows 11 monitoring dashboard using Next.js, React, TypeScript, Chart.js, and Python — with zero cloud dependencies.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Hidden Cost of Cloud-Based Monitoring
&lt;/h2&gt;

&lt;p&gt;When most developers think about monitoring, they reach for familiar names: Datadog, New Relic, Grafana Cloud, or one of dozens of similar platforms. These are powerful tools, built for distributed systems at scale. For monitoring a fleet of production servers, they make complete sense.&lt;/p&gt;

&lt;p&gt;But when the subject is a single developer workstation or personal machine, the equation changes — and not in the cloud's favor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy is the first concern.&lt;/strong&gt; Every cloud monitoring agent ships your hardware data — CPU load, memory usage, running processes, network traffic — to a third-party server. You are trusting an external company with a continuous, real-time stream of information about exactly what your machine is doing and when. For developers working with proprietary code, sensitive credentials in environment variables, or client data, that is a risk that rarely gets the scrutiny it deserves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Latency is the second.&lt;/strong&gt; A cloud dashboard receives your data, ingests it into a pipeline, stores it, and then delivers it back to your browser — often with a delay of five to thirty seconds. For a developer who wants to watch CPU frequency respond to a compile job, or track memory pressure during a Docker build, thirty seconds of lag is not monitoring. It is history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost is the third.&lt;/strong&gt; Free tiers on most monitoring SaaS platforms are intentionally limited. High-resolution metrics, long retention windows, and multiple machines quickly push you into paid tiers that are priced for enterprise budgets, not individual engineers.&lt;/p&gt;

&lt;p&gt;And beneath all three of these is a philosophical point: &lt;strong&gt;you should not need to ask permission from the internet to see what your own hardware is doing.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  What a Local-First Architecture Looks Like
&lt;/h2&gt;

&lt;p&gt;When I set out to build a better alternative, I had a clear set of requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All data stays on the local machine, always&lt;/li&gt;
&lt;li&gt;Updates must be genuinely real-time — sub-second refresh&lt;/li&gt;
&lt;li&gt;The UI should match or exceed what commercial tools offer visually&lt;/li&gt;
&lt;li&gt;The entire stack should be built on technology most developers already know&lt;/li&gt;
&lt;li&gt;Setup should be achievable in under five minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture I landed on has three layers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The collection layer&lt;/strong&gt; is a Python script using &lt;code&gt;psutil&lt;/code&gt;, the battle-tested cross-platform library for system information. It runs as a background process, gathering CPU usage per core, memory breakdown, disk throughput, network interface statistics, GPU metrics via &lt;code&gt;nvidia-smi&lt;/code&gt;, and the top processes by resource consumption. Every second, it writes atomic JSON snapshots to a local &lt;code&gt;monitor/data/&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The API layer&lt;/strong&gt; is a set of Next.js Route Handlers — one per category — that read those JSON files and serve them over &lt;code&gt;localhost&lt;/code&gt;. There is no network boundary, no authentication handshake, no rate limit. A request from the browser to &lt;code&gt;/api/cpu&lt;/code&gt; returns fresh data in under a millisecond.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The UI layer&lt;/strong&gt; is a React application with Chart.js rendering rolling 60-second line charts for every live metric. KPI cards show current values with color-coded thresholds. Tailwind CSS provides the dark, terminal-inspired visual design. Everything polls at one-second intervals, giving the dashboard the feel of a native application rather than a web page.&lt;/p&gt;

&lt;p&gt;The result: a monitoring tool that is faster, more private, and more informative than anything I have used on a cloud platform — and one I fully understand and control, because I built every line of it.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Developer Experience Matters Too
&lt;/h2&gt;

&lt;p&gt;One practical decision I made early was to make the project self-generating. Rather than asking someone to clone a repository and configure a dozen files by hand, the entire scaffold is produced by a single Python script — &lt;code&gt;create_project.py&lt;/code&gt;. Running it creates the full folder structure, writes every source file, and executes &lt;code&gt;npm install&lt;/code&gt; automatically. The only commands a developer needs to run after that are:&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 dev
python monitor/writer.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And within seconds they have a live dashboard at &lt;code&gt;http://localhost:3000&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This matters because the best monitoring tool is the one people actually use. Friction at setup is where most side projects die. Eliminating that friction was as important to me as the technical architecture itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Taught Me About Tool Design
&lt;/h2&gt;

&lt;p&gt;Building this project reinforced several convictions I hold about software engineering.&lt;/p&gt;

&lt;p&gt;The first is that &lt;strong&gt;complexity should be proportional to the problem.&lt;/strong&gt; A cloud monitoring platform for a single laptop is an engineering mismatch. It introduces distributed systems complexity — agents, pipelines, ingestion queues, API authentication — into a problem that is fundamentally local. A file on disk and a Route Handler is sufficient, and sufficient is better.&lt;/p&gt;

&lt;p&gt;The second is that &lt;strong&gt;open source is still the most effective way to share knowledge.&lt;/strong&gt; Publishing this project forces a level of documentation discipline — README, architecture diagrams, extension guides — that makes the ideas inside it accessible to other engineers who may face the same problem. Several developers have already asked about extending it to AMD GPUs and battery monitoring on laptops. That kind of conversation does not happen with a closed tool.&lt;/p&gt;

&lt;p&gt;The third is that &lt;strong&gt;privacy deserves to be a first-class engineering requirement&lt;/strong&gt;, not an afterthought. When I chose to build local-first, I did not do it despite the constraints it imposed — I did it because of them. Those constraints produced a faster, simpler, more trustworthy system.&lt;/p&gt;




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

&lt;p&gt;The project is open source and available on GitHub:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://github.com/jafartavana01/windows-monitor-dashboard" rel="noopener noreferrer"&gt;https://github.com/jafartavana01/windows-monitor-dashboard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It covers CPU, memory, storage, network, GPU, processes, and OS information — all updated live, all on your machine, all yours.&lt;/p&gt;

&lt;p&gt;If you are a developer who spends significant time on Windows and has ever felt that existing monitoring tools were either too heavy, too expensive, or simply too nosy about your hardware, I hope this project offers a better path.&lt;/p&gt;

&lt;p&gt;I would welcome feedback, contributions, and ideas for new monitoring categories. The architecture is intentionally simple to extend — and the best features of any open-source tool are always the ones the community brings to it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Jafar Tavana — Software Developer&lt;/em&gt;&lt;br&gt;
&lt;em&gt;GitHub: &lt;a href="https://github.com/jafartavana01" rel="noopener noreferrer"&gt;https://github.com/jafartavana01&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>security</category>
      <category>python</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Meet Vault: A Beautiful, Zero-Dependency Password Manager Built in a Single Python File By Jafar Tavana · powerinfossl@gmail.com</title>
      <dc:creator>Jafar Tavana</dc:creator>
      <pubDate>Fri, 12 Jun 2026 15:19:53 +0000</pubDate>
      <link>https://dev.to/jafar_tavana_0279e8ebfd85/meet-vault-a-beautiful-zero-dependency-password-manager-built-in-a-single-python-file-by-jafar-45c3</link>
      <guid>https://dev.to/jafar_tavana_0279e8ebfd85/meet-vault-a-beautiful-zero-dependency-password-manager-built-in-a-single-python-file-by-jafar-45c3</guid>
      <description>&lt;p&gt;We live in a world where the average person manages dozens — sometimes hundreds — of passwords. Yet most solutions to this problem fall into two uncomfortable camps: cloud-based services that require you to trust a third party with your most sensitive data, or bloated desktop applications that demand complex installations and constant updates.&lt;/p&gt;

&lt;p&gt;What if there was a third option? What if you could run a fully-featured, beautifully designed, encrypted password manager with nothing but Python — no pip, no npm, no frameworks, no internet connection required?&lt;/p&gt;

&lt;p&gt;That's exactly what Vault is.&lt;/p&gt;

&lt;p&gt;What Is Vault?&lt;/p&gt;

&lt;p&gt;Vault is a web-based password wallet that lives entirely inside a single Python file. You run it, a local server starts on your machine, your browser opens, and you're greeted with a sleek dark-mode interface that looks like it belongs in a modern SaaS product — not a hobby script.&lt;/p&gt;

&lt;p&gt;Every password you store is encrypted before it ever touches disk. Lock it when you're done. Close the tab. Walk away. Your data stays safe.&lt;/p&gt;

&lt;p&gt;The project is open-source and available on GitHub:&lt;br&gt;
👉 github.com/jafartavana01/password-wallet&lt;/p&gt;

&lt;p&gt;The Philosophy: One File, No Compromise&lt;/p&gt;

&lt;p&gt;Most developers, when building a web app, reach for Flask, React, SQLite, and a handful of crypto libraries before writing a single line of business logic. Vault was built under a different constraint: Python's standard library only.&lt;/p&gt;

&lt;p&gt;This constraint was deliberate, and it shapes everything about the project:&lt;/p&gt;

&lt;p&gt;No installation step. You don't need a virtual environment. You don't need pip. If you have Python 3.7 or higher, you already have everything Vault needs.&lt;br&gt;
No supply chain risk. Every line of code that runs on your machine was written by the project author — not pulled from a registry of third-party packages. That matters a great deal for a security-sensitive tool.&lt;br&gt;
Fully portable. Drop the file on a USB drive, carry it to any machine, run it. No setup, no configuration wizard.&lt;/p&gt;

&lt;p&gt;bashpython password_wallet.py&lt;/p&gt;

&lt;p&gt;That's the entire installation process.&lt;/p&gt;

&lt;p&gt;The Security Model&lt;/p&gt;

&lt;p&gt;A password manager that isn't secure isn't a password manager — it's a liability. Vault takes a layered approach to protecting your data, implemented entirely from Python's built-in hashlib and hmac modules.&lt;/p&gt;

&lt;p&gt;Master Password Verification&lt;/p&gt;

&lt;p&gt;When you set your master password for the first time, Vault never stores it. Instead, it derives and stores a PBKDF2-HMAC-SHA256 verifier — a one-way hash computed over 200,000 iterations with a fixed salt. The original password cannot be recovered from this verifier.&lt;/p&gt;

&lt;p&gt;Per-Entry Encryption&lt;/p&gt;

&lt;p&gt;Each entry you save is individually encrypted before being written to wallet.json. The process works like this:&lt;/p&gt;

&lt;p&gt;A fresh 16-byte random salt and 16-byte IV are generated for the entry using Python's secrets module (cryptographically secure random generation).&lt;br&gt;
Your master password is combined with the salt and stretched through PBKDF2 into a 32-byte key.&lt;br&gt;
That key is split into an encryption key and a MAC key using SHA-256 domain separation.&lt;br&gt;
The entry data is encrypted with an XOR stream cipher driven by a SHA-256 block chain.&lt;br&gt;
A HMAC-SHA256 tag is computed over the salt, IV, and ciphertext and appended to the blob.&lt;/p&gt;

&lt;p&gt;When you unlock the vault and load your entries, the HMAC is verified before any decryption takes place. If the tag doesn't match — wrong password, corrupted file, or tampered data — decryption is rejected entirely.&lt;/p&gt;

&lt;p&gt;In-Memory Only&lt;/p&gt;

&lt;p&gt;Decrypted entries never touch disk. They live only in your browser's JavaScript memory for the duration of your session. The moment you click Lock, the master password is cleared from memory, all entries are wiped, and the app returns to the lock screen. Nothing sensitive remains.&lt;/p&gt;

&lt;p&gt;The Interface&lt;/p&gt;

&lt;p&gt;The UI was designed to feel like a real product. Dark navy backgrounds (#0D1117), electric blue accents (#58A6FF), and a terminal-inspired monospace font for passwords — the aesthetic signals that this is a security tool, not a toy.&lt;/p&gt;

&lt;p&gt;The Lock Screen&lt;/p&gt;

&lt;p&gt;A full-screen lock screen greets you on every launch. The password input has a subtle circuit-trace animation on focus — the border glows and traces around the field like an unlocking circuit. It's a small detail, but it sets the tone.&lt;/p&gt;

&lt;p&gt;The Vault&lt;/p&gt;

&lt;p&gt;Once unlocked, the interface splits into a familiar two-panel layout: a sidebar listing all your entries, and a main panel showing the selected entry's details. Entries are color-coded by their auto-generated avatar (based on the entry title), and tagged by category — Web, Finance, Email, Social, Work, or Other.&lt;/p&gt;

&lt;p&gt;Password Detail View&lt;/p&gt;

&lt;p&gt;Each entry displays its password behind a mask by default. A toggle reveals it. A one-click copy button grabs the username, password, or URL to your clipboard with a toast notification confirming the action. A color-coded strength bar tells you at a glance how robust a given password is.&lt;/p&gt;

&lt;p&gt;The Generator&lt;/p&gt;

&lt;p&gt;Built into the Add/Edit modal is a fully configurable password generator. Choose your length (8 to 64 characters), toggle uppercase, lowercase, digits, and symbols, hit Generate, and a cryptographically random password appears. One more click applies it directly to the password field.&lt;/p&gt;

&lt;p&gt;The Data File&lt;/p&gt;

&lt;p&gt;All your entries are stored in a single file: wallet.json. It looks something like this:&lt;/p&gt;

&lt;p&gt;json{&lt;br&gt;
  "verifier": "a3f8b2c1d4e5...",&lt;br&gt;
  "entries": [&lt;br&gt;
    {&lt;br&gt;
      "id": "3e9a1c4f",&lt;br&gt;
      "data": "dGhpcyBpcyBhIGJhc2U2NCBlbmNyeXB0ZWQgYmxvYg==",&lt;br&gt;
      "updated": "2025-06-12"&lt;br&gt;
    }&lt;br&gt;
  ]&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;The data field is an opaque base64 blob. Without the master password, it reveals nothing about the entry's title, username, password, URL, or notes. The file is safe to back up, sync to a personal cloud, or transfer between machines.&lt;/p&gt;

&lt;p&gt;Searching and Organizing&lt;/p&gt;

&lt;p&gt;The search bar in the header filters entries in real time across titles, usernames, URLs, and categories. A stats bar beneath the header shows the total entry count, number of active categories, and — usefully — a count of weak passwords so you know when it's time to do some housekeeping.&lt;/p&gt;

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

&lt;p&gt;Vault is built for a few specific types of people:&lt;/p&gt;

&lt;p&gt;Developers and sysadmins who want a local, auditable password manager they can read top-to-bottom in a single sitting. There are no black boxes here.&lt;/p&gt;

&lt;p&gt;Privacy-conscious users who are uncomfortable with cloud-based password managers and want their data to stay on their own hardware.&lt;/p&gt;

&lt;p&gt;Anyone who needs a portable solution — running on a locked-down corporate machine, an air-gapped workstation, or a Raspberry Pi. If it runs Python, it runs Vault.&lt;/p&gt;

&lt;p&gt;Getting Started&lt;/p&gt;

&lt;p&gt;bash# Clone the repository&lt;br&gt;
git clone &lt;a href="https://github.com/jafartavana01/password-wallet.git" rel="noopener noreferrer"&gt;https://github.com/jafartavana01/password-wallet.git&lt;/a&gt;&lt;br&gt;
cd password-wallet&lt;/p&gt;

&lt;h1&gt;
  
  
  Run
&lt;/h1&gt;

&lt;p&gt;python password_wallet.py&lt;/p&gt;

&lt;p&gt;Your browser will open automatically. On first launch, you'll be asked to set a master password — choose something strong, and write it down somewhere safe. There is no password recovery mechanism by design.&lt;/p&gt;

&lt;p&gt;The wallet.json file is created automatically in the same directory. Back it up regularly.&lt;/p&gt;

&lt;p&gt;What's Next&lt;/p&gt;

&lt;p&gt;This project demonstrates what's possible when you treat constraints as a creative challenge rather than a limitation. Future directions could include:&lt;/p&gt;

&lt;p&gt;Import/export from common formats (CSV, 1Password, Bitwarden)&lt;br&gt;
Browser extension for auto-fill&lt;br&gt;
Optional AES-256-GCM encryption via the cryptography package for users who want audited crypto primitives&lt;br&gt;
TOTP / two-factor authentication code support&lt;/p&gt;

&lt;p&gt;Contributions and ideas are welcome via GitHub Issues and Pull Requests.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;There's something satisfying about a tool that does exactly one thing, does it well, and asks nothing of you except Python. Vault isn't trying to be Bitwarden or 1Password. It's trying to be the thing you can hand to anyone, tell them to run python password_wallet.py, and have them storing passwords securely in under 60 seconds.&lt;/p&gt;

&lt;p&gt;Sometimes that's exactly what you need.&lt;/p&gt;

&lt;p&gt;GitHub: github.com/jafartavana01/password-wallet&lt;br&gt;
Author: Jafar Tavana — &lt;a href="mailto:powerinfossl@gmail.com"&gt;powerinfossl@gmail.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>python</category>
      <category>security</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
