The incident is already over by the time most teams open their first tab.
CALYPSO opened all of them before you even typed the alert.
Every post-mortem says the same thing.
"We spent 40 minutes figuring out what happened before we could even start fixing it."
GitHub. Sentry. Slack. Logs. Dashboards. Five tabs. One incident. Zero correlation.
The tools exist. The data exists. The connection between them doesn't — until someone manually builds it at 3am while the alerts are still firing.
CALYPSO builds that connection automatically.
One alert in. Full incident report out. In under 30 seconds.
You paste an alert. CALYPSO:
- Queries your GitHub — what changed, who pushed, which PRs merged
- Queries your Sentry — what errors fired, when, how severe
- JOINs them with Coral SQL — correlates commits to errors by timestamp
- Builds an evidence timeline — one chronological view of what happened
- Sends everything to Gemini AI — structured root cause analysis
- Returns a complete investigation report — summary, root cause, actions, prevention
What used to take 40 minutes now takes 30 seconds.
No cloud credits. No expensive hardware. No team.
Just Coral, Python, a free Gemini API key, and a machine most people would retire.
If it runs here, it runs anywhere. That's the whole point of Coral.
This is not a disclaimer. This is the point.
The constraint proved the concept.
Lightweight by necessity. Powerful by design.
Most agent projects call APIs one at a time, stitch results manually, and call it "multi-source."
CALYPSO uses Coral as a unified SQL retrieval engine — single queries across multiple live systems.
-- One query. Two systems. Zero glue code.
SELECT
c.sha,
c.commit__message,
c.author__login,
s.title AS sentry_error,
s.level AS severity,
s.first_seen AS error_time,
c.commit__author__date AS commit_time
FROM github.commits c
JOIN sentry.issues s
ON s.first_seen >= c.commit__author__date
WHERE s.level = 'fatal'
ORDER BY s.first_seen DESC
LIMIT 10;This single query replaces:
- A GitHub API call
- A Sentry API call
- Manual pagination handling
- Custom response merging logic
- Timestamp normalization code
Coral does all of it. CALYPSO just asks the question.
SELECT 'commit' AS type, commit__author__date AS ts, commit__message AS message
FROM github.commits WHERE owner = :owner AND repo = :repo
UNION ALL
SELECT 'error' AS type, first_seen AS ts, title AS message
FROM sentry.issues WHERE level IN ('error', 'fatal')
ORDER BY ts DESC LIMIT 20;SELECT 'repo-a' AS repository, sha, commit__message, commit__author__date AS ts
FROM github.commits WHERE owner = :org AND repo = 'service-a'
UNION ALL
SELECT 'repo-b' AS repository, sha, commit__message, commit__author__date AS ts
FROM github.commits WHERE owner = :org AND repo = 'service-b'
ORDER BY ts DESC LIMIT 10;Every query is visible in the Coral Telemetry tab — execution time included.
Nothing is mocked. Nothing is hardcoded. Everything runs live.
| Feature | What it does |
|---|---|
| AI Root Cause Analysis | Structured 5-section incident report from a single alert |
| Evidence Timeline | GitHub commits + Sentry errors in one chronological stream |
| Cross-Source SQL JOIN | Coral-powered correlation between two live systems |
| Multi-Repo Comparison | UNION ALL across two GitHub repos simultaneously |
| Confidence Scoring | Evidence-based certainty rating with MTTR estimate |
| Coral SQL Telemetry | Every query shown with execution time in milliseconds |
| Investigation History | SQLite-persisted cases, reloadable across sessions |
| Follow-up AI Chat | Ask questions about the current investigation context |
| Slack Broadcast | One-click incident report to team channel |
| Create GitHub Issue | Pre-fills issue with AI summary and action plan |
| Live Source Badges | Real-time GitHub and Sentry connectivity status |
| Sample Incidents | One-click demo scenarios for immediate testing |
Alert Description (user input)
│
▼
┌──────────┐
│ app.py │ Flask · port 5000
└────┬─────┘
│
┌────▼──────────────────────────────────┐
│ agent.py │
│ Investigation Engine │
└──────┬─────────────────┬──────────────┘
│ │
┌──────▼──────┐ ┌──────▼───────┐
│ queries.py │ │ gemini.py │
│ │ │ │
│ coral sql │ │ Gemini API │
│ subprocess │ │ 1.5 Flash │
└──────┬──────┘ └──────┬───────┘
│ │
┌──────▼──────┐ │
│ Coral │ │
│ SQL layer │ │
└──────┬──────┘ │
│ │
┌──────▼──────┐ │
│ GitHub + │ │
│ Sentry │ │
└──────┬──────┘ │
│ │
└────────┬────────┘
│
┌──────▼──────┐
│ report.py │
│ db.py │
└──────┬──────┘
│
▼
Investigation Report
{ ai_analysis · timeline · stats
query_log · confidence · raw_data }
calypso/
│
├── agent.py # Investigation orchestrator
├── queries.py # Coral SQL execution layer
├── gemini.py # Gemini AI integration
├── report.py # Report formatter + Slack sender
├── db.py # SQLite persistence
├── app.py # Flask web server
│
├── templates/
│ └── index.html # Minimal editorial UI
│
├── sample_incidents.json # Demo scenarios
├── requirements.txt # Dependencies
├── .env.example # Environment template
├── Dockerfile # Container support
├── docker-compose.yml # One-command startup
└── .gitignore # Secret protection
# Clone
git clone https://github.com/Yashmko/calypso.git
cd calypso
# Install
pip install -r requirements.txt
# Configure
cp .env.example .env
# Add GEMINI_API_KEY to .env
# Connect Coral sources
coral source add --interactive github
coral source add --interactive sentry
# Run
python app.py
# → http://localhost:5000docker-compose up
# → http://localhost:5000| Variable | Required | Description |
|---|---|---|
GEMINI_API_KEY |
✅ | Google Gemini API key (free at aistudio.google.com) |
SLACK_WEBHOOK_URL |
Optional | Slack incoming webhook for broadcasts |
FLASK_SECRET_KEY |
✅ | Flask session security key |
| Layer | Choice | Why |
|---|---|---|
| Query engine | Coral CLI | SQL over GitHub + Sentry, no ETL, no glue |
| AI | Gemini 1.5 Flash | Fast, free tier, excellent structured reasoning |
| Backend | Python + Flask | Lightweight, 2GB RAM friendly |
| Frontend | HTML + Tailwind CDN + Vanilla JS | Zero build step, zero npm |
| Persistence | SQLite | Simple, local, reliable |
| Deployment | Render | Clean production deployment |
| Dev machine | 2GB RAM Arch Linux | Proof that constraints don't stop shipping |
Other submissions in this hackathon likely built dashboards that call APIs and display results.
CALYPSO built something different.
It doesn't call APIs. It asks questions.
-- Not this:
GET /repos/owner/repo/commits
GET /organizations/org/issues
-- This:
SELECT commits, errors, correlation
FROM github JOIN sentry
WHERE the_incident_happenedThat distinction is what Coral was built for.
CALYPSO is proof of exactly that.
https://calypso-bre2.onrender.com
Deployed on Render. Connected to live GitHub and Sentry sources.
Open it. Type any alert. See it work.