"Stop waking up engineers at 2 AM. Let Praxis fix it."
Production incidents are expensive, chaotic, and exhausting.
The average Mean Time to Recovery (MTTR) for a P1 incident is 4.2 hours. During that window, engineers are paged at 3 AM, scrambling through runbooks, copy-pasting stack traces into Slack, and manually writing patches under pressure. The process is slow, error-prone, and a primary driver of developer burnout.
Praxis eliminates this entirely.
Praxis is a fully autonomous AI SRE that intercepts production alerts, reasons about them using vector memory, writes a verified code patch, audits it through a multi-agent Governance Board, and delivers a one-click approval to the on-call engineer in Slack β all before they've had time to open their laptop.
The entire resolution lifecycle, from alert to merge-ready patch, is zero-touch ChatOps.
graph TD
A[π Datadog Alert / War Games Simulation] --> B[Praxis Backend\nNode.js Β· TypeScript Β· Express]
B --> C{Alert Tuning Agent\nNoisy or Novel?}
C -- NOISY score > 0.90 --> D[π Suppressed\nNo pipeline triggered]
C -- PROCEED Novel alert --> E[Memory Lookup\nVertex AI Embeddings\n+ Pinecone Vector Search]
E --> F[Coordinator Agent\nGemini 2.5 Pro\nWrites Code Patch]
F --> G[Governance Board\n3 Concurrent AI Critics]
G --> G1[π Security Critic]
G --> G2[π° FinOps Critic]
G --> G3[π Architecture Critic]
G1 & G2 & G3 --> H{All Critics\nApprove?}
H -- VETO --> F
H -- APPROVED --> I[QA Agent\nGemini 2.5 Pro\nGenerates Regression Test]
I --> J[π¦ Patch Stored\nPendingPatchStore]
J --> K[π£ Slack HITL Alert\nApprove Β· Reject buttons]
K -- Engineer clicks Approve --> L[GitLab MR\nBranch + Commit + Merge Request]
L --> M[π Documentation Agent\nZero-Touch Post-Mortem\nCommitted to docs/incidents/]
L --> N[π΄ Post-Merge Anomaly Monitor\nRollback button if telemetry spikes]
M & N --> O[β
Incident Resolved]
Every resolved incident is embedded with Vertex AI text-embedding-004 and stored in Pinecone. When a new alert arrives, the Alert Tuning Agent queries for cosine similarity. If a match scores above 0.90, the alert is classified as NOISY and suppressed β no redundant pipelines, no alert fatigue.
The Coordinator Agent (Gemini 2.5 Pro) receives the raw trace log, any similar past patches from memory, and any Governance Board feedback, then writes a complete, production-ready code patch with file paths and content.
Three independent AI critics run concurrently before any patch is approved:
| Critic | Focus |
|---|---|
| π Security | CVEs, injection risks, auth bypass surface area |
| π° FinOps | Compute cost regressions, unnecessary resource allocation |
| π Architecture | Blast radius, coupling, scalability trade-offs |
If any critic issues a VETO, structured feedback is passed back to the Coordinator for a revised patch (up to 2 retry loops).
A dedicated QA Agent (Gemini 2.5 Pro) reads the approved patch and writes a regression test file, committed alongside the fix in the GitLab MR.
The entire workflow surfaces in Slack. The on-call engineer sees:
- Full incident summary and Governance Board ratings
- One-click Approve or Reject buttons
Clicking Approve triggers GitLab MR creation, post-mortem generation, and anomaly monitoring β all automatically.
The Documentation Agent generates a structured incident runbook in Markdown and commits it directly to docs/incidents/<incidentId>.md in the repository. No manual write-up required.
A built-in /api/wargames/initiate endpoint injects a synthetic Stripe TimeoutError payload β complete with realistic p99 latency data, error rates, and revenue impact β to stress-test the full pipeline on demand. Trigger it from the dashboard or via curl.
| Layer | Technology | How We Used It |
|---|---|---|
| Alert Ingestion | Datadog | Webhook receiver for production latency spikes; War Games synthetic anomaly injection that mirrors real Datadog alert payloads with p99 latency, error rate, and revenue-at-risk fields |
| Embeddings | Google Cloud Vertex AI (text-embedding-004) |
Generate 768-dimensional vectors from raw trace logs for both the alert noise filter and the incident memory lookup |
| Vector Memory | Pinecone | Store resolved incident embeddings; powers the Alert Tuning Agent's similarity search β alerts above 0.90 cosine score are suppressed as noise |
| Core LLM | Gemini 2.5 Pro | Patch generation, all three Governance Board critics, QA regression test generation, and post-mortem documentation β four separate agent roles, one model |
| SCM / CI | GitLab | Automated branch creation, file commits, and MR creation via GitLab REST API on engineer approval from Slack |
| ChatOps | Slack | Full HITL approval flow with Block Kit buttons; post-merge anomaly alerts with one-click Rollback; post-mortem commit notifications |
| Frontend Hosting | Vercel | Production deployment of the React + Vite "Cognitive Stream" dashboard |
| Backend Hosting | Render | Production deployment of the Node.js/TypeScript Express webhook backend |
1. Datadog fires a latency alert β POST /api/webhooks/datadog/warning
2. Alert Tuning Agent embeds the alert text via Vertex AI
3. Pinecone query checks for similar past incidents (threshold: 0.90)
β NOISY? Suppressed. Pipeline halted.
β PROCEED? Continue.
4. Coordinator Agent (Gemini 2.5 Pro) writes a code patch
5. Governance Board (Security + FinOps + Architecture) audits it concurrently
β VETO? Feedback loop, patch rewritten (max 2 retries).
β APPROVED? Continue.
6. QA Agent generates a regression test for the patch
7. Patch stored in PendingPatchStore + Slack HITL message sent
8. Engineer clicks β
Approve in Slack
9. GitLab MR created (branch + commit + merge request)
10. Documentation Agent commits post-mortem to docs/incidents/<id>.md
11. Post-merge anomaly monitor watches telemetry for 15 minutes
β Spike detected? Slack Rollback button fires.
- Node.js 20+
- A Google Cloud project with Vertex AI enabled and ADC configured (
gcloud auth application-default login) - A Pinecone account with an index named
praxis-alert(768 dimensions, cosine metric) - A GitLab Personal Access Token with
apiscope - A Slack app with Incoming Webhooks and Interactivity enabled
git clone https://github.com/AnishPatel526/Praxis.git
cd Praxiscd backend
npm installCreate backend/.env:
# Google Cloud
GCP_PROJECT_ID=your-gcp-project-id
GCP_LOCATION=us-central1
GOOGLE_GENAI_USE_VERTEXAI=true
# Pinecone
PINECONE_API_KEY=your-pinecone-api-key
PINECONE_INDEX_NAME=praxis-alert
# GitLab
GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-pat
GITLAB_PROJECT=your-numeric-project-id
# Slack
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
PORT=3001npm run dev
# Backend starts on http://localhost:3001Verify:
curl http://localhost:3001/health
# β {"status":"ok","service":"praxis-backend"}cd ../praxis-ui
npm installCreate praxis-ui/.env.local:
VITE_BACKEND_URL=http://localhost:3001npm run dev
# Dashboard available at http://localhost:5173curl -X POST http://localhost:3001/api/wargames/initiate \
-H "Content-Type: application/json" \
-d '{"service": "payment-gateway"}'Or click π¨ INJECT ANOMALY directly from the dashboard UI.
What to watch:
- Backend terminal β Coordinator synthesizes the patch, Governance Board rates it
- Slack β HITL message with Approve/Reject buttons arrives
- Click Approve β GitLab MR is created, post-mortem committed, anomaly monitor armed
Set in your Vercel project dashboard:
| Key | Value |
|---|---|
VITE_BACKEND_URL |
https://your-render-backend.onrender.com |
Set all keys from the backend .env section above as Render environment variables. The service redeploys automatically on push to main.
Praxis/
βββ backend/
β βββ src/
β βββ agents/
β β βββ alertTuningAgent.ts # Noise filter via Pinecone similarity
β βββ routes/
β β βββ agent.ts # POST /api/agent/trigger
β β βββ wargames.ts # POST /api/wargames/initiate
β β βββ webhook.ts # POST /api/webhooks/datadog/warning
β β βββ slackInteractions.ts # POST /api/slack/interactions (HITL)
β βββ services/
β βββ coordinatorAgent.ts # Gemini patch generation + Governance Board
β βββ qaAgent.ts # Regression test generation
β βββ documentationAgent.ts # Post-mortem generation
β βββ embeddingService.ts # Vertex AI text-embedding-004
β βββ pineconeClient.ts # Pinecone upsert + query + TTL eviction
β βββ pendingPatchStore.ts # In-memory patch store
β βββ pipeline.ts # Shared orchestration logic
β βββ slack.ts # Slack Block Kit alert formatting
βββ praxis-ui/
βββ src/
βββ App.tsx # Dashboard + War Games trigger
βββ components/
βββ TopBar.tsx # Workspace switcher + SRE profile
βββ LandingPage.tsx # Hero + Bento + Architecture sections
βββ HITLModal.tsx # Human-in-the-loop approval modal
βββ CognitiveStream.tsx # Real-time agent event feed
βββ IncidentCard.tsx # Incident summary card
Built at the Google Cloud Hackathon by Anish Patel.
Praxis β Because production doesn't wait for morning.