DEV Community

1234567890-
1234567890-

Posted on

A modular terminal toolbox with a plugin system (tinfo v1.0)

Terminal Info CLI v1.0

I’ve been working on Terminal Info (tinfo), a CLI written in Rust.

It started as a simple system info tool, but grew into a modular terminal toolbox with a plugin-based design.

What you get out of the box

Run tinfo and you get a clean dashboard (location/weather/time/network/CPU/memory). There are commands for:

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

The “one CLI, many tools” plugin model

Terminal Info routes subcommands to executables:

Instead of building a one use CLI, the goal is to keep the core small and let functionality grow through plugins.

tinfo <plugin-name>    # resolves to tinfo-<plugin-name>
Enter fullscreen mode Exit fullscreen mode

Managed plugins live under:

~/.terminal-info/plugins/<plugin-name>/
Enter fullscreen mode Exit fullscreen mode

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

  • the author’s Minisign signature
  • trust a plugin before it executes

Discovery & management:

tinfo plugin search <query>
tinfo plugin install <name>
tinfo plugin trust <name>
tinfo plugin update <name>
tinfo plugin list
Enter fullscreen mode Exit fullscreen mode

Writing a plugin in ~5 minutes (with the SDK)

The project includes a Rust plugin SDK crate, tinfo-plugin. A typical workflow:

tinfo plugin init weather
cd tinfo-weather
cargo run -- --metadata
cargo test

tinfo plugin keygen --output-dir ./keys
tinfo plugin pack
tinfo plugin publish-check
Enter fullscreen mode Exit fullscreen mode

The template ships a release workflow, a manifest (plugin.toml), a smoke test harness, and it automatically supports:

  • --metadata
  • --help

Plugin metadata declares plugin_api = 1.

Security expectations

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


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

If you’re building plugins or thinking about extending tinfo, 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!

Top comments (0)