<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Felipe Oliveira</title>
    <description>The latest articles on DEV Community by Felipe Oliveira (@imfelipeoliveira).</description>
    <link>https://dev.to/imfelipeoliveira</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1234148%2F1017bf8f-6a88-48cf-b131-b41672b71fe7.jpeg</url>
      <title>DEV Community: Felipe Oliveira</title>
      <link>https://dev.to/imfelipeoliveira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/imfelipeoliveira"/>
    <language>en</language>
    <item>
      <title>I built a standup orchestrator that runs inside your AI agent (and doesn't spy on anyone)</title>
      <dc:creator>Felipe Oliveira</dc:creator>
      <pubDate>Sun, 15 Nov 2026 18:25:44 +0000</pubDate>
      <link>https://dev.to/imfelipeoliveira/i-built-a-standup-orchestrator-that-runs-inside-your-ai-agent-and-doesnt-spy-on-anyone-4f24</link>
      <guid>https://dev.to/imfelipeoliveira/i-built-a-standup-orchestrator-that-runs-inside-your-ai-agent-and-doesnt-spy-on-anyone-4f24</guid>
      <description>&lt;p&gt;When my team started writing standups with AI, three problems showed up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Loose updates.&lt;/strong&gt; Everyone wrote in a different format, in a different place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No view of the team.&lt;/strong&gt; Whoever read them had to stitch messages together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nobody orchestrates.&lt;/strong&gt; Nobody nudges who hasn't posted, and blockers sit until someone notices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Standcast fixes this by keeping the writing where people already work, in their agent, and handling the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The flow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;You run &lt;code&gt;/daily&lt;/code&gt; in Claude Code (or use the MCP server in Cursor, Codex, Claude Desktop or VS Code, or the CLI).&lt;/li&gt;
&lt;li&gt;The daily opens with what you planned in the previous one and whether each item moved. Standcast drafts "yesterday" from real activity: pull requests opened, merged and reviewed, commits, Linear cards that moved and your Claude Code sessions, grouped by project in up to 5 lines.&lt;/li&gt;
&lt;li&gt;You edit it, write "today", blockers and support requests (what you need from someone without being stuck: a review, a decision, a pairing session) and &lt;strong&gt;confirm&lt;/strong&gt;. The MCP submit tool requires &lt;code&gt;confirmed: true&lt;/code&gt;, so the agent can't send it on its own.&lt;/li&gt;
&lt;li&gt;At the team's &lt;code&gt;digest_at&lt;/code&gt;, a worker posts one digest per team to Slack or Google Chat: 🚧 blockers first, then 🤝 support requests.&lt;/li&gt;
&lt;li&gt;In the web app, &lt;strong&gt;Today&lt;/strong&gt; shows the team's day: open blockers with their age, recurrence and a "probably resolved" hint when the PR already merged, support requests, today's dailies and what shipped yesterday. &lt;strong&gt;History&lt;/strong&gt; keeps past digests, searches confirmed dailies and exports shipped work as Markdown or CSV.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The parts that took real work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI sessions without leaking anything.&lt;/strong&gt; The CLI reads the Claude Code session files on your machine, redacts secrets and hands only a summary to the agent. No session data reaches the API: only the daily text you confirm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration as code.&lt;/strong&gt; A &lt;code&gt;standcast.yml&lt;/code&gt; in the organization's &lt;code&gt;.github&lt;/code&gt; repository, which you can also edit through a form in the web app. Every push that changes the file gets a check run with the error on the right line, and an invalid push never breaks anything: the last valid version keeps working.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing blockers.&lt;/strong&gt; A blocker that mentions a pull request goes by DM to its reviewers, then CODEOWNERS, then the team's managers. On Linear, to the owner of the blocking card. If it is still open after N days, the team gets one alert.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sending exactly once.&lt;/strong&gt; Every message goes through a database claim with a fencing token before it reaches the chat. A job retry never sends twice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time zones and workdays.&lt;/strong&gt; &lt;code&gt;remind_at&lt;/code&gt; and &lt;code&gt;digest_at&lt;/code&gt; are local times of the team; Monday covers the weekend.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The rule I won't bend
&lt;/h2&gt;

&lt;p&gt;No per-person metrics, no rankings, no history of who didn't post. "Who hasn't posted yet" exists only for today, in the web app. Standcast also suggests blockers (a PR waiting for review, CI red for a day, a card stuck in progress), but those suggestions belong &lt;strong&gt;only to the person&lt;/strong&gt;: they never show up in the digest, the API, webhooks or for the manager. A CI test makes sure of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;Bun, strict TypeScript, Hono, Postgres with Drizzle, pg-boss for queues, a GitHub App, Slack, Google Chat and Linear. The CLI is a single binary with the MCP&lt;br&gt;
server built in. The web app is React 19 with TanStack Router and ker. MIT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open beta
&lt;/h2&gt;

&lt;p&gt;It's in free beta and I'm looking for teams of 3 to 15 people on GChat. If you want to try it, leave a comment or open an issue and&lt;br&gt;
I'll help you set it up.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://standcast.app" rel="noopener noreferrer"&gt;https://standcast.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Repository: &lt;a href="https://github.com/ImFelipeOliveira/standcast" rel="noopener noreferrer"&gt;https://github.com/ImFelipeOliveira/standcast&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://docs.standcast.app" rel="noopener noreferrer"&gt;https://docs.standcast.app&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback is welcome. &lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>mcp</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
