
A powerful, extensible backend for Windows process management,
automation, and monitoring — accessible via a modern TCP API.
HomeServer is a robust backend platform enabling process management, monitoring, and automation on Windows. With an extensible TCP API, rich logging, and flexible configuration, it empowers you to remotely control and automate server workflows.
-
🧑💻 Process Management
Start, stop, and interact with Windows processes using friendly tags. -
🔌 TCP API
Communicate securely via TCP using simple JSON messages. -
📚 Logging
All server and process activity logged to file & console for easy auditing. -
⚙️ Configuration
Effortless setup usingconfig.json
. -
🔄 Auto-Restart
Critical processes are automatically restarted if needed. -
🛠️ Extensible API
Easily add new endpoints and features via the core API handler.
- .NET 8.0
- Newtonsoft.Json (JSON serialization)
- System.Management (Windows process management)
- Windows Processes (required for process APIs)
-
Startup:
- Loads configuration from
config.json
- Initializes logging and process manager
- Starts TCP server (default port:
3391
)
- Loads configuration from
-
Process Management:
- Processes defined and managed by tag
- Supports auto-start, stop, and sending input
-
API Communication:
- Clients send JSON requests via TCP
- Requests routed by
ServerCore
andServerCoreAPI
- Responses include status codes and data
-
Core Components:
ServerCore
: Main orchestratorProcessesManager
: Tracks & supervises all managed processesSimpleTcpServer
: Handles TCP connections & API requestsLogger
: Centralized logging system
-
Install .NET 8.0 SDK
👉 Download here -
Clone the Repository
git clone https://github.com/nadav26740/HomeServer.git cd backend/HomeServer-Backend-win
-
Configure
✍️ Editbin/Debug/net8.0/config.json
for paths, logging, and port. -
Build
dotnet build --configuration Release
Or open
HomeServer-Backend.sln
in Visual Studio and build. -
Run
dotnet run --configuration Release &
See API-Gateway/Tester.py
for Python test client.
- Start a process
{"Path":"/api/process/start", "Type":"UPDATE", "Data":"Minecraft Server"}
- Send input to a process
{"Path":"api/process/input", "Type":"POST", "Data":"{\"ProcessTag\": \"Minecraft Server\", \"Input\": \"say hello API\"}"}
- Stop a process
{"Path":"/api/process/stop", "Type":"UPDATE", "Data":"Minecraft Server"}
See Docs/Core.md
for a detailed explanation of the core system and API routing.
- 🚀 More built-in process management features
- 🛡️ Improved error handling & logging
- 📈 Advanced process monitoring
- 🧪 Unit tests for core components
- 🐧 Linux support (if feasible)
- 📦 Docker containerization for easy deployment
- 🔌 Plugin system for extensibility
- 📚 Comprehensive documentation and examples
- ⚡ Frontend dashboards for monitoring and control:
- 🖥️ Windows WPF-based
- 🐧 Linux dashboard
- 🌐 Web-based dashboard for cross-platform access