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
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
Alerts 0
-
earlier
Deployed
api restarted in 4.2s.
-
earlier
Connected
prod-api-01 is online.
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_workeras 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 andPR_SET_PDEATHSIGon 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.
- Check the host and port
- Make sure the server is running
- 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.
- Frontend
UI
Svelte, Vite
-
Backend, my part
API server
Python, FastAPI
- Core
synex_worker
Rust
- Target
Your servers
Linux hosts, Docker, Git
| Method | Path | What it does | Status |
|---|---|---|---|
| POST | /api/ssh/sessions | Open an SSH session | |
| WS | /api/ssh/sessions/{id}/ws | Terminal stream | |
| GET | /api/docker/sessions/{id}/containers | Containers on the server | |
| POST | /api/docker/…/containers/{c}/{action} | Start, stop, restart, pause, kill | |
| POST | /api/git/sessions/{id}/deploy | Pull and run the deploy command | |
| POST | /api/connections/{id}/connect | Open a saved connection | |
| POST | /api/keys/generate | Generate a new SSH key | |
| GET | /api/monitor/metrics | Server 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.
-
Rinneway megithub.com/RinnewayBACKEND -
Prefifixgithub.com/PrefifixFRONTEND -
appolsmirnykh-ship-itgithub.com/appolsmirnykh-ship-itUI/UX DESIGN -
MAGVANCHiKgithub.com/MAGVANCHiKCORE
ZeroDDP
Zero Digital Development Performers