Inspiration

As developers building on Serverpod, I loved the speed of development but felt a gap in "Day 2" operations. When a backend throws a 500 error, the workflow typically involves grepping through raw logs, checking a separate dashboard like Grafana, and manually connecting to the database. I thought: What if the server could just tell us what's wrong? Better yet, what if it could fix itself? This inspired Sentinel—not just a dashboard, but an active Guardian for your backend.

What it does

Sentinel is an all-in-one observability and remediation platform running alongside your Serverpod app.

  • The Butler (AI Agent): A conversational AI that analyzes logs and metrics. You can ask "Why did the payment service fail?" and it retrieves the relevant stack traces and context.
  • Live Stream: A real-time, zero-latency feed of every event, health signal, and security alert occurring in your system, powered by Serverpod WebSockets.
  • Remediation Playbooks: Pre-defined scripts (e.g., "Clear Cache", "Restart Service", "Block IP") that can be executed instantly from the UI or by the AI agent.
  • Incident Management: Tracks outages from detection to resolution with audit trails.

How I built it

I built Sentinel as a 100% Dart full-stack solution, proving the power of a unified language.

  • Backend (Serverpod): I utilized Serverpod Modules to keep the Sentinel logic decoupled from the main application. I leveraged serverpod_auth for granular Role-Based Access Control (RBAC) to ensure only admins can trigger risky playbooks.
  • Frontend (Flutter): A responsive, high-performance dashboard that runs on Windows, MacOS, and Web. I used Riverpod for state management to handle the intense stream of real-time telemetry.
  • AI (Vertex AI/Gemini): I integrated Gemini to power "The Butler", feeding it sanitized system contexts so it understands the specific topology of a Serverpod deployment.
  • Real-Time: I heavily utilized Serverpod's streaming capabilities to push health metrics without polling.

Challenges I ran into

  • AI Hallucinations vs. DevOps Safety: Letting an AI control infrastructure is scary. I had to build a strict "Human-in-the-loop" permission system where the AI can propose a Playbook execution, but a human (or specific policy) must authorize it using our Scope based security model.
  • Telemetry Overload: Streaming everything crashed our initial frontend builds. I had to implement aggressive buffering and throttling on the server-side to ensure the "Live Stream" was viewable without freezing the UI.
  • Bootstrapping: Creating a "seed" experience that sets up a full admin environment without requiring a pre-existing user was tricky. I solved this with a custom seed_data.dart script and a temporary authenticationHandler bypass for local dev.

Accomplishments that I'm proud of

  • Zero-Latency Monitoring: Seeing a log line appear on the dashboard the exact millisecond it happens on the server is magical.
  • The Butler: Having a conversation with our backend and having it actually perform a database cleanup task felt like the future of DevOps.
  • Seamless Integration: Sentinel drops into an existing Serverpod project as a module—no complex sidecars or separate containers required.

What I learned

  • Serverpod is a beast: Its module system is incredibly robust. I could build an entire "SaaS-in-a-box" inside a backend without polluting the main codebase.
  • Dart on the Backend: The type safety from database to UI (via Serverpod code generation) saved us countless hours of debugging API mismatches.

What's next for Serverpod Sentinel

  • Predictive Auto-Scaling: Using AI to forecast traffic spikes and scale containers before they are needed.
  • Mobile Companion App: A Flutter mobile app to get push notifications and approve Playbooks from your phone.
  • Multi-Server Mesh: Aggregating telemetry from a distributed cluster of Serverpod nodes into a single "Global View".

Built With

  • dart
  • docusaurus
  • flutter
  • powershell
  • serverpod
  • shellscript
Share this project:

Updates