DEV Community

1234567890-
1234567890-

Posted on

Building an Extensible Rust CLI Toolbox with a Plugin System

I recently built a project called terminal-info, a Rust CLI toolbox designed to display useful system and environment information directly in the terminal.

GitHub: https://github.com/T-1234567890/terminal-info

The project originally started as a small terminal weather CLI, but over time, it developed into something closer to a CLI toolbox with plugins.

Instead of being a single-purpose tool, the goal is to make it extensible so developers can add their own tools and diagnostics.


What terminal-info does

Running the CLI shows a simple dashboard with useful information:

┌──────────────────────────────────┐
│           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 │
└──────────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode

The dashboard is only the default overview.

Terminal Info provides many additional commands and plugins
for diagnostics, networking, system information, and developer tools.


Why I added a plugin system

While building the CLI, I realized that many terminal tools are limited by being fixed-feature applications.

For example:

  • system info tools
  • monitoring tools
  • diagnostics utilities

They are useful, but extending them often requires modifying the core codebase.

So I developed terminal-info CLI with a plugin system.

The idea is simple:

core CLI
+ plugin SDK
+ plugin registry
Enter fullscreen mode Exit fullscreen mode

Developers can write plugins that extend the CLI without modifying the main repository.


Security considerations

One challenge with plugin systems is security.

To address this, the project includes:

  • signed plugin releases
  • integrity verification
  • registry review
  • local trust controls

Users must explicitly trust a plugin before it can run.


Project goals

The long-term goal is to turn terminal-info into a general-purpose CLI toolbox where new functionality can live as plugins.

Instead of replacing existing tools, the idea is to provide a platform where small terminal utilities can coexist and evolve.


Feedback welcome

The project is still early and I would really appreciate feedback from the community, especially on the plugin architecture and developer experience.

GitHub: https://github.com/T-1234567890/terminal-info
Docs: https://github.com/T-1234567890/terminal-info/tree/main/docs

The project is open source and licensed under Apache 2.0.

Top comments (0)