<?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: 1234567890-</title>
    <description>The latest articles on DEV Community by 1234567890- (@tony_1234567890).</description>
    <link>https://dev.to/tony_1234567890</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%2F3829082%2Ff4f7538d-c788-4c42-8137-5c89925583b4.jpg</url>
      <title>DEV Community: 1234567890-</title>
      <link>https://dev.to/tony_1234567890</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tony_1234567890"/>
    <language>en</language>
    <item>
      <title>A modular terminal toolbox with a plugin system (tinfo v1.0)</title>
      <dc:creator>1234567890-</dc:creator>
      <pubDate>Thu, 19 Mar 2026 13:18:21 +0000</pubDate>
      <link>https://dev.to/tony_1234567890/a-modular-terminal-toolbox-with-a-plugin-system-tinfo-v10-3kfa</link>
      <guid>https://dev.to/tony_1234567890/a-modular-terminal-toolbox-with-a-plugin-system-tinfo-v10-3kfa</guid>
      <description>&lt;h2&gt;
  
  
  Terminal Info CLI v1.0
&lt;/h2&gt;

&lt;p&gt;I’ve been working on &lt;strong&gt;Terminal Info&lt;/strong&gt; (&lt;code&gt;tinfo&lt;/code&gt;), a CLI written in Rust.&lt;/p&gt;

&lt;p&gt;It started as a simple system info tool, but grew into a modular terminal toolbox with a plugin-based design.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get out of the box
&lt;/h2&gt;

&lt;p&gt;Run &lt;code&gt;tinfo&lt;/code&gt; and you get a clean dashboard (location/weather/time/network/CPU/memory). There are commands for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;weather + time&lt;/li&gt;
&lt;li&gt;ping/latency/network&lt;/li&gt;
&lt;li&gt;system + disk/storage&lt;/li&gt;
&lt;li&gt;diagnostics groups&lt;/li&gt;
&lt;li&gt;server mode for VPS environments&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--json&lt;/code&gt;, &lt;code&gt;--plain&lt;/code&gt;, &lt;code&gt;--compact&lt;/code&gt; output modes&lt;/li&gt;
&lt;li&gt;shell completions (&lt;code&gt;bash&lt;/code&gt;, &lt;code&gt;zsh&lt;/code&gt;, &lt;code&gt;fish&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;profiles + theming via &lt;code&gt;~/.tinfo/config.toml&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The “one CLI, many tools” plugin model
&lt;/h2&gt;

&lt;p&gt;Terminal Info routes subcommands to executables:&lt;/p&gt;

&lt;p&gt;Instead of building a one use CLI, the goal is to keep the core small and let functionality grow through plugins.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;tinfo &amp;lt;plugin-name&amp;gt;    &lt;span class="c"&gt;# resolves to tinfo-&amp;lt;plugin-name&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Managed plugins live under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.terminal-info/plugins/&amp;lt;plugin-name&amp;gt;/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There’s a “self-hosted” style registry in the repo: a small &lt;code&gt;plugins/index.json&lt;/code&gt; and one JSON per plugin. The registry &lt;em&gt;pins exact versions&lt;/em&gt;—Terminal Info won’t automatically install “latest”. Installs verify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the author’s Minisign signature&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;trust&lt;/code&gt; a plugin before it executes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Discovery &amp;amp; management:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;tinfo plugin search &amp;lt;query&amp;gt;
tinfo plugin &lt;span class="nb"&gt;install&lt;/span&gt; &amp;lt;name&amp;gt;
tinfo plugin trust &amp;lt;name&amp;gt;
tinfo plugin update &amp;lt;name&amp;gt;
tinfo plugin list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Writing a plugin in ~5 minutes (with the SDK)
&lt;/h2&gt;

&lt;p&gt;The project includes a Rust plugin SDK crate, &lt;code&gt;tinfo-plugin&lt;/code&gt;. A typical workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;tinfo plugin init weather
&lt;span class="nb"&gt;cd &lt;/span&gt;tinfo-weather
cargo run &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--metadata&lt;/span&gt;
cargo &lt;span class="nb"&gt;test

&lt;/span&gt;tinfo plugin keygen &lt;span class="nt"&gt;--output-dir&lt;/span&gt; ./keys
tinfo plugin pack
tinfo plugin publish-check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The template ships a release workflow, a manifest (&lt;code&gt;plugin.toml&lt;/code&gt;), a smoke test harness, and it automatically supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--metadata&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--help&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plugin metadata declares &lt;code&gt;plugin_api = 1&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security expectations
&lt;/h2&gt;

&lt;p&gt;Plugins are third-party executables. They run as your user (no automatic elevation), and if a plugin asks for &lt;code&gt;sudo&lt;/code&gt;, treat that as a big red flag.&lt;/p&gt;




&lt;p&gt;Repo: &lt;a href="https://github.com/T-1234567890/terminal-info" rel="noopener noreferrer"&gt;https://github.com/T-1234567890/terminal-info&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re building plugins or thinking about extending &lt;code&gt;tinfo&lt;/code&gt;, jump in, open a PR, share your ideas, or just start experimenting. If you have any questions or any problems, please let me know in the GitHub Discussions or open an Issue!&lt;/p&gt;

</description>
      <category>rust</category>
      <category>cli</category>
      <category>devtools</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Building an Extensible Rust CLI Toolbox with a Plugin System</title>
      <dc:creator>1234567890-</dc:creator>
      <pubDate>Tue, 17 Mar 2026 09:55:59 +0000</pubDate>
      <link>https://dev.to/tony_1234567890/building-an-extensible-rust-cli-toolbox-with-a-plugin-system-719</link>
      <guid>https://dev.to/tony_1234567890/building-an-extensible-rust-cli-toolbox-with-a-plugin-system-719</guid>
      <description>&lt;p&gt;I recently built a project called &lt;strong&gt;terminal-info&lt;/strong&gt;, a Rust CLI toolbox designed to display useful system and environment information directly in the terminal.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/T-1234567890/terminal-info" rel="noopener noreferrer"&gt;https://github.com/T-1234567890/terminal-info&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project originally started as a small terminal weather CLI, but over time, it developed into something closer to a &lt;strong&gt;CLI toolbox with plugins&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of being a single-purpose tool, the goal is to make it &lt;strong&gt;extensible&lt;/strong&gt; so developers can add their own tools and diagnostics.&lt;/p&gt;




&lt;h2&gt;
  
  
  What terminal-info does
&lt;/h2&gt;

&lt;p&gt;Running the CLI shows a simple dashboard with useful information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────┐
│           Terminal Info          │
├──────────────────────────────────┤
│ Location: Shenzhen               │
│ Weather: Clear sky, 20.3°C       │
│ Time: 2026-03-16 xx:xx:xx        │
│ Network: xxx.xxx.x.xx            │
│ CPU: 19.3%                       │
│ Memory: 16.2 GiB / 24.0 GiB used │
└──────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The dashboard is only the default overview. &lt;br&gt;&lt;br&gt;
Terminal Info provides many additional commands and plugins&lt;br&gt;
for diagnostics, networking, system information, and developer tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I added a plugin system
&lt;/h2&gt;

&lt;p&gt;While building the CLI, I realized that many terminal tools are limited by being &lt;strong&gt;fixed-feature applications&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;system info tools&lt;/li&gt;
&lt;li&gt;monitoring tools&lt;/li&gt;
&lt;li&gt;diagnostics utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are useful, but extending them often requires modifying the core codebase.&lt;/p&gt;

&lt;p&gt;So I developed terminal-info CLI with a &lt;strong&gt;plugin system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;core CLI
+ plugin SDK
+ plugin registry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Developers can write plugins that extend the CLI without modifying the main repository.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security considerations
&lt;/h2&gt;

&lt;p&gt;One challenge with plugin systems is security.&lt;/p&gt;

&lt;p&gt;To address this, the project includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;signed plugin releases&lt;/li&gt;
&lt;li&gt;integrity verification&lt;/li&gt;
&lt;li&gt;registry review&lt;/li&gt;
&lt;li&gt;local trust controls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users must explicitly trust a plugin before it can run.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project goals
&lt;/h2&gt;

&lt;p&gt;The long-term goal is to turn &lt;strong&gt;terminal-info&lt;/strong&gt; into a general-purpose CLI toolbox where new functionality can live as plugins.&lt;/p&gt;

&lt;p&gt;Instead of replacing existing tools, the idea is to provide a platform where small terminal utilities can coexist and evolve.&lt;/p&gt;




&lt;h2&gt;
  
  
  Feedback welcome
&lt;/h2&gt;

&lt;p&gt;The project is still early and I would really appreciate feedback from the community, especially on the plugin architecture and developer experience.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/T-1234567890/terminal-info" rel="noopener noreferrer"&gt;https://github.com/T-1234567890/terminal-info&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://github.com/T-1234567890/terminal-info/tree/main/docs" rel="noopener noreferrer"&gt;https://github.com/T-1234567890/terminal-info/tree/main/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source and licensed under &lt;strong&gt;Apache 2.0&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>cli</category>
      <category>opensource</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>Building an Extensible Rust CLI Toolbox with a Plugin System</title>
      <dc:creator>1234567890-</dc:creator>
      <pubDate>Tue, 17 Mar 2026 09:55:59 +0000</pubDate>
      <link>https://dev.to/tony_1234567890/building-an-extensible-rust-cli-toolbox-with-a-plugin-system-26c7</link>
      <guid>https://dev.to/tony_1234567890/building-an-extensible-rust-cli-toolbox-with-a-plugin-system-26c7</guid>
      <description>&lt;p&gt;I recently built a project called &lt;strong&gt;terminal-info&lt;/strong&gt;, a Rust CLI toolbox designed to display useful system and environment information directly in the terminal.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/T-1234567890/terminal-info" rel="noopener noreferrer"&gt;https://github.com/T-1234567890/terminal-info&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project originally started as a small terminal weather CLI, but over time, it developed into something closer to a &lt;strong&gt;CLI toolbox with plugins&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of being a single-purpose tool, the goal is to make it &lt;strong&gt;extensible&lt;/strong&gt; so developers can add their own tools and diagnostics.&lt;/p&gt;




&lt;h2&gt;
  
  
  What terminal-info does
&lt;/h2&gt;

&lt;p&gt;Running the CLI shows a simple dashboard with useful information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────┐
│           Terminal Info          │
├──────────────────────────────────┤
│ Location: Shenzhen               │
│ Weather: Clear sky, 20.3°C       │
│ Time: 2026-03-16 xx:xx:xx        │
│ Network: xxx.xxx.x.xx            │
│ CPU: 19.3%                       │
│ Memory: 16.2 GiB / 24.0 GiB used │
└──────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The dashboard is only the default overview. &lt;br&gt;&lt;br&gt;
Terminal Info provides many additional commands and plugins&lt;br&gt;
for diagnostics, networking, system information, and developer tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I added a plugin system
&lt;/h2&gt;

&lt;p&gt;While building the CLI, I realized that many terminal tools are limited by being &lt;strong&gt;fixed-feature applications&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;system info tools&lt;/li&gt;
&lt;li&gt;monitoring tools&lt;/li&gt;
&lt;li&gt;diagnostics utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are useful, but extending them often requires modifying the core codebase.&lt;/p&gt;

&lt;p&gt;So I developed terminal-info CLI with a &lt;strong&gt;plugin system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;core CLI
+ plugin SDK
+ plugin registry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Developers can write plugins that extend the CLI without modifying the main repository.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security considerations
&lt;/h2&gt;

&lt;p&gt;One challenge with plugin systems is security.&lt;/p&gt;

&lt;p&gt;To address this, the project includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;signed plugin releases&lt;/li&gt;
&lt;li&gt;integrity verification&lt;/li&gt;
&lt;li&gt;registry review&lt;/li&gt;
&lt;li&gt;local trust controls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users must explicitly trust a plugin before it can run.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project goals
&lt;/h2&gt;

&lt;p&gt;The long-term goal is to turn &lt;strong&gt;terminal-info&lt;/strong&gt; into a general-purpose CLI toolbox where new functionality can live as plugins.&lt;/p&gt;

&lt;p&gt;Instead of replacing existing tools, the idea is to provide a platform where small terminal utilities can coexist and evolve.&lt;/p&gt;




&lt;h2&gt;
  
  
  Feedback welcome
&lt;/h2&gt;

&lt;p&gt;The project is still early and I would really appreciate feedback from the community, especially on the plugin architecture and developer experience.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/T-1234567890/terminal-info" rel="noopener noreferrer"&gt;https://github.com/T-1234567890/terminal-info&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://github.com/T-1234567890/terminal-info/tree/main/docs" rel="noopener noreferrer"&gt;https://github.com/T-1234567890/terminal-info/tree/main/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source and licensed under &lt;strong&gt;Apache 2.0&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>cli</category>
      <category>opensource</category>
      <category>vibecoding</category>
    </item>
  </channel>
</rss>
