<?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: Vesa Zheng</title>
    <description>The latest articles on DEV Community by Vesa Zheng (@vesaa).</description>
    <link>https://dev.to/vesaa</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%2F4142092%2F6b8364cd-6ddb-47f9-ba8d-cf02517a0853.png</url>
      <title>DEV Community: Vesa Zheng</title>
      <link>https://dev.to/vesaa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vesaa"/>
    <language>en</language>
    <item>
      <title>Migrating from WindTerm to VsTerm — one SSH session for shell, files, and a few ops checks</title>
      <dc:creator>Vesa Zheng</dc:creator>
      <pubDate>Sat, 26 Sep 2026 14:06:19 +0000</pubDate>
      <link>https://dev.to/vesaa/migrating-from-windterm-to-vsterm-one-ssh-session-for-shell-files-and-a-few-ops-checks-5f</link>
      <guid>https://dev.to/vesaa/migrating-from-windterm-to-vsterm-one-ssh-session-for-shell-files-and-a-few-ops-checks-5f</guid>
      <description>&lt;p&gt;I used WindTerm for a long time. It is fine at the shell. My friction was everything &lt;em&gt;around&lt;/em&gt; the shell: open SFTP in another window, &lt;code&gt;rz&lt;/code&gt;/&lt;code&gt;sz&lt;/code&gt; in a third habit, then jump to a browser when a host “feels wrong” on the network path.&lt;/p&gt;

&lt;p&gt;That context switch cost more than the actual work. So I moved my daily SSH into &lt;strong&gt;VsTerm&lt;/strong&gt; — a native Rust SSH terminal (not Electron) where the session, transfers, and a few ops panels stay attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I kept the same
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hosts, keys, and the muscle memory of a tabbed terminal&lt;/li&gt;
&lt;li&gt;Importing an existing setup instead of retyping everything&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What changed in practice
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Import WindTerm hosts&lt;/strong&gt; into VsTerm instead of rebuilding the tree by hand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay in one SSH session&lt;/strong&gt; for shell + bottom SFTP / elevated SFTP / ZMODEM (&lt;code&gt;rz&lt;/code&gt;/&lt;code&gt;sz&lt;/code&gt;) with visible progress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When a link feels off&lt;/strong&gt;, use the built-in route / path-trace (geo/ASN) / IP quality / host metrics panels on that same connection instead of opening three other tools.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The point is not “rewrite in Rust for vibes.” It is keeping transfers and light diagnostics on the &lt;strong&gt;same authenticated session&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it (download first)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Releases (pick your OS build): &lt;a href="https://github.com/vesaaa/vsterm/releases" rel="noopener noreferrer"&gt;https://github.com/vesaaa/vsterm/releases&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Site: &lt;a href="https://www.vsterm.com" rel="noopener noreferrer"&gt;https://www.vsterm.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/vesaaa/vsterm" rel="noopener noreferrer"&gt;https://github.com/vesaaa/vsterm&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Core SSH usage works without paying. If you star the repo and redeem in-app, there is still a limited lifetime Pro claim (200 slots) — optional, not required to try the workflow above.&lt;/p&gt;

&lt;p&gt;If you live in WindTerm / FinalShell / Xshell today, I am especially interested in what broke or felt worse after import. Honest friction reports help more than praise.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>ssh</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>VsTerm — a native Rust SSH terminal that keeps shell, files, and ops in one place</title>
      <dc:creator>Vesa Zheng</dc:creator>
      <pubDate>Fri, 25 Sep 2026 00:58:52 +0000</pubDate>
      <link>https://dev.to/vesaa/vsterm-a-native-rust-ssh-terminal-that-keeps-shell-files-and-ops-in-one-place-13gk</link>
      <guid>https://dev.to/vesaa/vsterm-a-native-rust-ssh-terminal-that-keeps-shell-files-and-ops-in-one-place-13gk</guid>
      <description>&lt;p&gt;I got tired of splitting SSH work across a terminal app, an SFTP client, and a pile of browser tools. So I built &lt;strong&gt;VsTerm&lt;/strong&gt;: a cross-platform SSH terminal manager in &lt;strong&gt;native Rust&lt;/strong&gt; (not Electron).&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Terminal + bottom SFTP + elevated SFTP + ZMODEM (&lt;code&gt;rz&lt;/code&gt;/&lt;code&gt;sz&lt;/code&gt;) on one SSH session, with visible progress&lt;/li&gt;
&lt;li&gt;Ops panels: route topology, path trace (geo/ASN), IP quality, host metrics&lt;/li&gt;
&lt;li&gt;Import from WindTerm, Xshell, FinalShell, MobaXterm, Tabby, OpenSSH config, SecureCRT&lt;/li&gt;
&lt;li&gt;Encrypted local vault; optional client-side encrypted cloud sync&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stack (short)
&lt;/h2&gt;

&lt;p&gt;GUI via egui/wgpu, terminal via alacritty_terminal, SSH via russh. The point isn’t “rewrite everything in Rust for vibes” — it’s keeping transfers and ops attached to the same authenticated session.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://www.vsterm.com" rel="noopener noreferrer"&gt;vsterm.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/vesaaa/vsterm" rel="noopener noreferrer"&gt;vesaaa/vsterm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Releases: &lt;a href="https://github.com/vesaaa/vsterm/releases" rel="noopener noreferrer"&gt;download builds&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limited lifetime Pro
&lt;/h2&gt;

&lt;p&gt;If you star the repo and redeem in-app, there are &lt;strong&gt;200&lt;/strong&gt; lifetime Pro slots (about &lt;strong&gt;$29.9&lt;/strong&gt; value). Core SSH usage works without Pro.&lt;/p&gt;

&lt;p&gt;Feedback welcome — especially from people living in WindTerm / Termius / FinalShell today.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>ssh</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
