A GitHub-to-Slack agent, simulated and tested before it touched our real systems — triggered every time something new ships.
2 min read

Watch the full demo: Build a GitHub → Slack Release Agent in 15 minutes
Engineering was shipping faster than anyone could explain what shipped. Coding agents didn't create this problem, but they made it worse — more pull requests, more weekly releases, more features nobody outside the team had context on. The default fix is some person on the team scrolling through GitHub activity, translating commits into English, and hoping they didn't miss the one that mattered. It's a job nobody signs up for, and it fails exactly in the weeks engineering ships the most. So we built an agent to do it instead.
The agent has one job: read a range of GitHub releases and tell a human what actually mattered. Give it nothing, and it grabs the latest release. Give it a tag, and it reports on that one. Give it a range, and it rolls everything in between into a single report, then analyzes it closely enough to separate the real theme of a release from the noise of individual commits. The output is explicitly customer-facing — it suppresses internal and engineering-only items by design, not as an afterthought someone bolted on later.
Vivek didn't write a line of code to build this. He described what he wanted, in plain English, to JoyStream's agent builder — which interviewed him back, noticed he needed GitHub and Slack, and walked him through connecting both with a standard OAuth click, no secrets to manage by hand. What came out wasn't a prompt. It was a graph: three parallel ways to ask GitHub for a release, funneling into one job — post to Slack — with an explicit error policy on every step, graded Critical, Must Happen, or Best Effort. And before any of it touched a real system, Vivek ran the whole thing in simulate, which mocks GitHub and Slack entirely, so a test run can't actually post to a live channel or depend on a release that doesn't exist yet. That's the same graph it runs on today. Every time.
Fifteen minutes, zero code, and this isn't a demo anymore. It runs every time something ships — often more than once a week — and Harpreet checks it the moment a new release goes out, not because it's clever, but because it's become the way he finds out what shipped. The interesting part was never the Slack message. It was the fact that a system built to be unpredictable got engineered into something boring enough to stop thinking about. Generation was never the hard part. Trusting what got generated enough to let it run unattended — that was.