System information and monitoring for local and remote mac/ubuntu servers

What's New




System information and monitoring for local and remote macOS and Ubuntu servers


Systemator is made of three separate components

  • a lower level code API which will allow you to integrate monitoring to any of your NIO apps called SystemManager
  • a higher level SystemController which is built on the top of Vapor framework and gives you two ready to go endpoints
  • a launchable app called Systemator which will launch a full Vapor app and makes it's API's available

Run whole monitoring app on it's own!

brew tap einstore/homebrew-tap
brew install systemator

To define a custom port or host do

systemator --hostname --port 12345

or ...

  • Compile Systemator in Xcode and run!
  • Default address is

Integrate endpoints in an Vapor 4 app

Integrate SystemController.Controller in your routes method

import Vapor
import SystemController

/// Register your application's routes here.
public func routes(_ r: Routes, _ c: Container) throws {
    try Controller().routes(r, c)


SystemController will give you two endpoints

  • [GET] /info - for a local system monitoring
  • [POST] /info - for a remote system monitoring

The output should look somehow like this:

    "cpu": {
        "clock": 2900000000,
        "cores": 4,
        "logicalCpu": 8
    "usage": {
        "hdd": [
                "size": 1000240963584,
                "use": 3,
                "filesystem": "/dev/disk1s1",
                "mounted": "/",
                "available": 442482974720,
                "used": 10488909824
                "size": 1000240963584,
                "use": 55,
                "filesystem": "/dev/disk1s5",
                "mounted": "/System/Volumes/Data",
                "available": 442482974720,
                "used": 540546445312
        "memory": {
            "total": 67108864,
            "free": 103,
            "used": 67108761
        "cpu": {
            "system": 19.670000000000002,
            "user": 22.420000000000002,
            "idle": 57.890000000000001
        "processes": []

All data should be in units, bytes or percentages where it makes sense

For remote connection you will need to POST connection details in the body of the request and make sure the Content-Type is set to application/json

	"host": "",
	"port": 22,
	"login": "pro",
	"password": "aaaaaa"

Please don't connect to the IP, it's a real server!!!

Swift level API

Through SystemManager library you can access monitoring from any Swift server side app that can support Apple NIO version 2

The basic usage is:

let eventLoop = EmbeddedEventLoop()
let manager = try SystemManager(
        host: "ippppp",
        port: 22,
        username: "root",
        password: "sup3rS3cr3t"
    on: eventLoop
let output = try


Ondrej Rafaj - @rafiki270 Did your try to connect to my server?!?! :D


MIT; Copyright 2019 - Einstore


  • Swift Tools
View More Packages from this Author


  • None
Last updated: Tue Nov 21 2023 00:13:26 GMT-1000 (Hawaii-Aleutian Standard Time)