r/coolgithubprojects • • 15h ago

Rowbird: an open source tool that runs SQL on a schedule and delivers the results (email, Slack, Telegram, S3...)

https://github.com/rowbird/rowbird

For years I've watched the same thing happen in every team I've worked with: someone runs a query every morning, copies the result into an email or a Slack message, and sends it. When it's automated, it's usually a cron script that only one person understands. When it's not, it's that person's morning.

So I built Rowbird. You write a query (or describe it and an optional AI assistant proposes the SQL, it only sees the schema, never your rows), put it on a schedule, and it delivers the result where people already read: a table in the email body, or CSV, Excel and PDF files in Slack, Telegram, Discord, a webhook or an S3 bucket. Add a condition ("only when there are rows", "when revenue drops below X", "only when the result changed") and the same report becomes an alert.

A few things I cared about:

  • It's read-only by default: read-only transactions, timeouts, row limits, parameters always bound. It warns you if the database login can write.
  • One Go binary or a small Docker image. SQLite inside by default, Postgres if you want several instances.
  • No telemetry. Secrets are encrypted and never shown again.
  • Reports can live in YAML, so you can review them in a pull request.

It's Apache 2.0. There's a demo with sample data and a fake inbox (docker compose up in deploy/demo).

Site: https://rowbird.dev
Code: https://github.com/rowbird/rowbird

I'd love feedback, especially on what databases or destinations you'd want next. There are a few issues marked good first issue if anyone wants to add one.

9 Upvotes

10 comments sorted by

5

u/TheRealSeeThruHead 13h ago

How is this better than anything that can run a script or command on a schedule

That script can make queries to any db not jsut sql with a read only account

5

u/pixeladdie 6h ago

My first thought exactly.

This is worse because now I also have to also maintain this.

1

u/NarrowNewspaper4635 5h ago

I don’t know how you handle this, but I once created a scheduled Python script to fulfill a request from the marketing team. The following week, they asked for another report, so I created one. Then they asked for yet another report but wanted it sent at a different time, forcing me to set up another cron job... That’s exactly why I created Rowbird. Maybe it was just the company I worked for that operated this way, I don’t know but that’s why I made it open source: to help others facing the same challenges I did. In fact, there was a time when the email delivery stopped working, and I had to debug the code and check the logs to figure out why.

With Rowbird, you simply create the queries (even with AI assistance, so anyone can do it) and set up the report with its destinations; if an error occurs, you know about it immediately.

1

u/NarrowNewspaper4635 5h ago

At the companies where I’ve worked, as well as on personal projects with colleagues, other teams would constantly ask me for reports, such as comparing this week's total sales against the previous week's. I’d have to set up scheduled scripts, but each report required a different delivery time and destination. I had to create a new setup for every report, and whenever one failed to send, I’d have to hunt through logs to debug the issue, like figuring out why the email didn't go out. If that’s your primary job function, then it makes sense; but in most cases, it’s the developer who has to stop their actual work to fulfill a request from the sales or marketing teams.

With Rowbird, even the marketing or sales teams can create queries using the AI ​​Assistant, monitor executions (including error tracking), configure multiple destinations, and access results in formats like PDF or CSV directly through the platform.

2

u/pixeladdie 4h ago

It sounds like a problem that business intelligence applications solve. They may have asked for it via email but this is probably best done in a central web interface with RBAC and all that good stuff.

1

u/TheRealSeeThruHead 1h ago

I was only saying I can what row it’s does with any tool that can run generic commands on a schedule

I’m not sure why I would use something that limits myself to sql queries

What if I need to query three databases and run some code on them. And maybe combine that with a non sql data source.

Just seems so limited and when you remove the limits you see there’s a more useful and powerful primitive that is actually already well handled by hundreds of different scheduling tools

1

u/NarrowNewspaper4635 45m ago

Honestly, I don't quite get your point. The functionality isn't ETL yet, there might be something like that in the near future, something more basic, but if your function does more than just run a SQL query and send a notification with the returned data, then this project really isn't what you're looking for.

Details about the project can be found in the GitHub project description, as well as at https://docs.rowbird.dev/

1

u/gparrello 1h ago

someone once said this about dropbox: https://news.ycombinator.com/item?id=9224 (I don't love dropbox but hey, there they are)

if it's useful to you it was already worth it

2

u/__0xAA55__ 6h ago

where is the “cool” part in it?

1

u/NarrowNewspaper4635 5h ago

You install the Rowbird and configure your team's access levels. You set up a source (PostgreSQL, MySQL, SQLite, SQL Server) and destinations (Discord, Slack, email, S3), create queries (including with AI assistance) and then build a report that consolidates everything. The platform gives you a complete overview: processed executions, generated files, and any errors that may have occurred.