Sylix Engine is a database management backend focused on Postgres, featuring a control plane and agent architecture. It is designed to provide production-grade Postgres configurations out of the box, including backup storage, Point-in-Time Recovery (PITR), Write-Ahead Logging (WAL), branching, and easy version management.
The system consists of three main components:
- Control Plane: The master server that manages state, orchestrates operations, and serves the API. It uses SQLite for its internal state.
- Agent: Runs on nodes to manage the actual Postgres instances. It connects to the control plane to receive commands.
- Dashboard: A modern web interface built with React Router v7 and Vite for managing the system.
- Postgres Management: Automated deployment and configuration of Postgres instances.
- High Availability & Reliability: Built-in support for WAL and PITR.
- Backup Management: Integrated backup storage solutions.
- Branching: Support for database branching (similar to Neon).
- Version Control: Easy switching between Postgres versions.
- Modern UI: A responsive dashboard to monitor and control your database fleet.
- Communication: gRPC (Inter-service) & gRPC-Web (Frontend -> Controlplane).
- Database: SQLite (via GORM) for the control plane.
- Architecture: Modular monolith with vertical slices (
internal/module).
- Framework: React Router v7 + Vite.
- Styling: Tailwind CSS + shadcn/ui.
- Network: Custom gRPC-Web client implementation.
- Go 1.22+
- Node.js & pnpm/npm
- Make
- Protoc (for generating protobuf code)
-
Start the Control Plane:
make run
The server will start on port
:8082. -
Development Mode (with hot reload):
make dev
This command also compiles protobufs and builds the agent binary.
-
Navigate to the dashboard directory:
cd ui/dashboard -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The dashboard will be available at
http://localhost:5173.
If you modify any .proto files in the proto/ directory, you need to regenerate the code for both backend and frontend. The make dev command handles this, or you can run them manually:
-
Backend:
make compile-proto
-
Frontend:
make compile-proto-frontend
see LICENSE