WhosServer
A management environment where AI works beside the user: reading status, spotting risks and preparing actions without manual command typing.
- Period
- 2025
- Built
- AI product / Server dashboard / Command assist / Monitoring
The brief
Manage Linux servers with AI that watches along and helps directly.
Daily server management demands context: which machine is this, which services are running, what do the logs say and which command fits this exact situation? Copying commands from documentation without that context takes time and increases the chance of mistakes.
The brief was to create a management environment where AI works beside the real terminal without taking final control away from the user.
How we built it
From product decisions to engineering: these are the parts that make the project work as one system.
-
Clerk protects REST and real-time traffic
The React app sends a Clerk JWT to the API. The same identity secures the SignalR hub through an access token, while plan and credit data remain in the internal database.
-
SSH credentials stay on the backend
New 4096-bit key pairs are held temporarily in Redis. Private keys, passwords and passphrases are encrypted with AES-256-GCM in PostgreSQL, only after a real SSH test succeeds.
-
SignalR connects xterm to a real shell
Each browser connection gets an isolated SSH.NET session keyed by connection ID. Keystrokes and commands go to the shell; output streams only to that user.
-
Bounded context for the AI
ANSI noise is removed and at most one hundred recent lines plus OS and kernel details live temporarily in Redis. OpenAI proposes an approach; only clicking Run sends a command to SSH.
-
Persistent and temporary state stay separate
The Vite SPA and .NET 9 API run as separate Docker images. PostgreSQL stores accounts and server configuration; Redis is used only for temporary keys, terminal tail, system details and chat context.
From login to a deliberately run command
The browser gets a real terminal experience without ever seeing stored server credentials. Context is built temporarily and per user; execution remains a separate human action.
-
Clerk and server choice
A JWT protects API and SignalR; the user selects a server from their own account.
-
Decryption and SSH
The backend decrypts the stored credentials and opens SSH.NET; keys stay out of the browser.
-
SignalR and xterm
A connection ID links the browser to one real-time SSH.NET ShellStream.
-
Redis context
Filtered terminal tail and detected Linux system details remain available for up to 24 hours.
-
AI proposal and Run
OpenAI streams explanations and commands; only an explicit user click executes anything.
The result
Less command-line friction in daily server management
WhosServer brings server overview, live terminal and AI assistant together in one session. A user can describe a problem in plain language, review the explanation and proposed command, then decide what actually runs.
That reduces switching between a terminal, documentation and a separate AI chat. Recurring maintenance, deployments and troubleshooting gain more context while the final action deliberately remains with the user.
View the live project whosserver.com