ROS Tesseract (open source RouterOS monitoring)

Hi, I’m pleased to share my ROS Tesseract, an open source RouterOS monitoring tool. It’s entirely written in Python and curses (it’s a TUI). Tested with Python3 under GNU/Linux, dunno if it will run under Windows or other OS (maybe if Python and required modules are installed).
https://github.com/wildstray/ROS-Tesseract
It uses a json configuration file and it’s totally customizable: you can specify what to display and how (position on screen, colors, etc.). I wrote this to have a fast overview and monitors multiple parameters together in a terminal screen (unlike WebUI of RouterOS where you can view a single section at a time or WinBox where you have to open multiple windows).
It’s under GPL v3.0 so if you want fork and modify freely, PR are welcome (but unluckily I have a lot of work and little free time, so I apologize in advance and don’t expect fast response from me here or on Github).

Like this idea! I played with JS and blessed module before to do similar a “TUI” since for “status” things, GUI/web sometimes aren’t as quick or information dense. This is especially true with RouterOS, since winbox/webfig/etc are NOT very helpful to get an overview of operational state of a router.

I couldn’t get it work on macOS. Ran into several problems.

  1. The requirements get errors in tabulate due to collections/iterable, upgrading it got past that. So requirement used are:

numpy in ./venv/lib/python3.13/site-packages (2.2.5)
laiarturs-ros-api in ./venv/lib/python3.13/site-packages (1.1.0)
tabulate in ./venv/lib/python3.13/site-packages (0.9.0)

  1. The right tabulate package got to the following error, which I’m not sure how to resolve (api and api-ssl both enabled, right username/password in the ros-tasseract.json). I get this in the venv for your project:
$ > python3 ros-tesseract
Traceback (most recent call last):
  File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 411, in <module>
    curses.wrapper(main)
    ~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/Cellar/python@3.13/3.13.3/Frameworks/Python.framework/Versions/3.13/lib/python3.13/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 402, in main
    tPoller = poller(quit, config)
  File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 153, in __init__
    self.calcHeights()
    ~~~~~~~~~~~~~~~~^^
  File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 172, in calcHeights
    heights[column].append(len(r[0]) + item.get('padding',0) + 4)
    ~~~~~~~^^^^^^^^
IndexError: list index out of range
  1. You might want to have some generic JSON that does not depend on LTE being present – if just to test it more broadly. I tried changing JSON too to be simpler too, just be address and routing - but got same error as above.

The API generally works with simple C-based ROS API client, so the API works more generally here.

Anyway, good work here… but, yeah, it couldn’t get it working…

Thank you for trying my script! :slight_smile: How you modified the config? Please, paste it here so I can try on my environment… Anyway, I use it to monitor my LTE connection, but LTE configuration (and the presence itself of an LTE interface) is not mandatory.