SYNEX

riNN.devworkssynex

Synex

A plugin-based desktop GUI for DevOps: SSH terminal, Docker, CPU/RAM/GPU monitoring, an SFTP file manager and Git deploy in one window.

  • Team project
  • Backend by riNN_dev
  • v0.3.0
Run a command

01 Overview

Who it is for, and what is inside

Built for people who run their own servers

Developers, DevOps engineers and system administrators who are tired of switching between a terminal, the Docker CLI, a monitoring tab and an SFTP client.

The core is a microkernel with a data bus. Every feature is an independent plugin that can be swapped out without touching the rest.

  • Dashboard

    Every server at a glance.

  • Terminal

    Several SSH sessions, each in its own tab.

  • Docker

    Containers, images, logs and live stats.

  • Logs

    System logs with filters.

  • Alerts

    Warnings before something breaks.

  • Files

    An SFTP file manager on the server.

02 Live demo

Simulated numbers. In the app the backend pushes them over WebSocket every 500 ms.

prod-api-01

195.108.05.04

ONLINE
  • CPU0 %
  • RAM0 %
  • GPU0 %
  • Disk0 %

Alerts 0

  • Deployed

    api restarted in 4.2s.

    earlier
  • Connected

    prod-api-01 is online.

    earlier

Press “Simulate load”: CPU and disk alerts appear here and clear on Reset.

03 My part: the backend

A FastAPI server between the Svelte UI and the Rust core, synex_worker

  • Worker lifecycle

    Starts synex_worker as a child process, talks to it over a Named Pipe on Windows or a Unix socket on Linux and macOS (TCP as a fallback) and restarts it if it crashes. A Job Object on Windows and PR_SET_PDEATHSIG on Linux keep the worker from outliving the backend.

  • SSH sessions

    Several sessions at once, each with its own terminal streamed to the UI over WebSocket.

  • Encrypted key storage

    Private SSH keys are encrypted with Fernet. The master key lives in the OS keychain, so a copied key file is useless on its own.

  • Live metrics

    CPU and RAM of every connected server, pushed over WebSocket every 500 ms.

  • Tests on every push

    ruff and pytest on Windows, Linux and macOS. Integration tests run the whole path UI → FastAPI → synex_worker → SSH against a local sshd.

Errors that say what to fix

Server unreachable

195.108.02.55 didn’t respond in 10s.

  1. Check the host and port
  2. Make sure the server is running
  3. Check your network or VPN

The same idea runs through the backend: a wrong setting stops the start with a message that names the setting and what is wrong with it.

  • 6plugins
  • 39endpoints
  • 3OS in CI

04 Architecture

How a click reaches your server. Switch a plugin off and see what keeps working.

  1. Frontend

    UI

    Svelte, Vite

  2. Backend, my part

    API server

    Python, FastAPI

  3. Core

    synex_worker

    Rust

  4. Target

    Your servers

    Linux hosts, Docker, Git

MethodPathWhat it doesStatus
POST/api/ssh/sessionsOpen an SSH session
WS/api/ssh/sessions/{id}/wsTerminal stream
GET/api/docker/sessions/{id}/containersContainers on the server
POST/api/docker/…/containers/{c}/{action}Start, stop, restart, pause, kill
POST/api/git/sessions/{id}/deployPull and run the deploy command
POST/api/connections/{id}/connectOpen a saved connection
POST/api/keys/generateGenerate a new SSH key
GET/api/monitor/metricsServer metrics right now

All six plugins are running. 39 REST and WebSocket endpoints in total.

05 Team

Synex is a team project. The work is split between four people.