How to build a full-time SRE agent that monitors Supabase and Vercel
How to
September 15, 2026
9 min read
Intended first value
A scheduled agent that reviews Vercel and Supabase every day, posts to Slack only when there is a real problem, and leaves a designed SRE review behind.
Supabase's Hire an agent guide makes a simple case: a monitoring agent is a prompt plus a schedule. It reads project data, reports findings, and never changes the project. Their Health, Security, Performance, and Capacity monitors each watch one Supabase project through the read-only Supabase MCP.
A full-time SRE agent extends that idea across the whole stack. It watches Vercel deployments and runtime logs alongside Supabase, joins the two when an error in one names an id in the other, benchmarks database health in Dreambase, writes a designed SRE review, and posts to Slack only when there is something worth waking someone up for. This guide shows how the pieces fit, then gives you the prompt and the Claude Cowork schedule that runs it.
How the pieces work together
Each connector does one job. The agent is the only thing that spans them, and the prompt tells it how.
Supabase MCP: the database and API side
Connected with a project_ref and read_only=true, exactly as Supabase recommends. The agent uses the logs tool across the api, auth, and postgres services, reads get_advisors for security and performance findings, and runs read-only SQL against pg_stat_activity to find locked or long-running transactions. It is also the lookup service: when a Vercel error mentions a workspace or dashboard id, the agent resolves it here.
Vercel MCP or plugin: the application side
Vercel's remote MCP at https://mcp.vercel.com exposes list_deployments, get_deployment_build_logs, get_runtime_errors, and get_runtime_logs. The errors tool returns grouped clusters with first-seen and last-seen timestamps, which is where the agent starts. The runtime logs tool filters by environment, level, deployment, time range, and full-text query, and returns up to 1,000 entries per call, which is how it avoids truncation. See the Vercel MCP tools reference.
Dreambase Plugin: health benchmarking and the report design
The Dreambase Plugin installs the Dreambase MCP and the Dreambase Skills together. The MCP's create_health_report and get_health_report tools produce a scored Supabase assessment that Dreambase stores, so each run adds a point to a trend line. The dreambase-data-stories, dreambase-visualization-design, and dreambase-echarts skills turn the run's findings into a single-page SRE review instead of a wall of log lines.
Slack connector: the alert channel
Claude's Slack connector lets the agent post to a channel by id. The prompt makes posting conditional: a quiet run produces a review and no message. That single rule is what keeps the channel trusted.
Claude Cowork scheduled task: the harness
Cowork's scheduled tasks run remotely on their cadence even when your computer is asleep or the app is closed, and they have the same connectors, skills, and plugins as a normal Cowork task. Every run starts with a fresh context, which is why the prompt below is self-contained: ids, time window, thresholds, and routing all live in the prompt. See Schedule recurring tasks in Claude Cowork.
Step 1: Connect the four sources
In Claude Desktop, open Customize, then Connectors. Connectors are tied to your account, so a connector you add here is available in Cowork and in scheduled tasks.
Supabase. Add a custom connector with the Supabase MCP URL for your project, including
project_refandread_only=true, then complete OAuth. Supabase's MCP guide has the exact URL format and the client-specific steps.Vercel. Add a custom connector with
https://mcp.vercel.comand authorize the team that owns the project. For coding agents,npx add-mcp https://mcp.vercel.com -gconfigures every installed client at once, and the Vercel plugin is available from the same docs.Dreambase. Install the Dreambase Plugin from the Claude marketplace, or add
https://app.dreambase.com/mcpas a custom connector and install the skills separately. The Dreambase Plugin doc covers both routes.Slack. Add the Slack connector from Claude's connector directory and authorize your workspace. On Team and Enterprise plans an owner enables it at the organization level first.
Run whoami against Dreambase and list projects against Vercel and Supabase once, in a normal chat, to confirm all four are authorized before you schedule anything.
Step 2: Collect the ids the prompt needs
Vercel team and project. The team id starts with
team_and the project id withprj_. Both are in the project's settings, or the agent can read them withlist_teamsandlist_projects. Slugs work too.Supabase project ref. The 20-character id in your project URL and in Project Settings.
Slack channel id. Open the channel, choose View channel details, and copy the id at the bottom of the About tab. It starts with
C. Slack's help article shows where to find it.
Step 3: Run the prompt on demand first
Paste this into a new Cowork task, replacing each *** with the ids from Step 2. Run it once and read the output before you schedule it. Supabase's guidance applies here: review the first runs before you rely on the schedule.
Using the vercel, supabase, and dreambase mcp tools, skills, connectors, periodically check the Vercel and Supabase logs for Vercel org/project ***/*** and Supabase project *** and scan for concerning critical alerts or patterns of misuse. check all environments and deployments in vercel for the last 12 hours.
Also check for any transactions that are currently locked (like tables).
Make sure to include more "silent" errors and failures, like dashboard refreshes failing due to failed queries from schema change or failed token.
VERY IMPORTANT: Be sure you don't truncate logs and miss errors! If you truncate the message bodies, you will only see {"title":"Cron","message":"... and not see when cron run contains "Query failed" at error level.
If there are concerning alerts and logs, send a Slack alert to the channel id ***.
Try to include ids (like workspace ids, dashboard ids, etc).
Then using the dreambase visualization-design, echarts, and data-stories skills create a single page informative SRE review in plain language that's simple, informative, and links to sources.
TIP: if you see IDs for errors in Vercel you can use the Supabase MCP for more info about those users, workspaces, dashboards, etc, and include more helpful info in your summaries.
CRITICAL: check the actual timestamps on those failures to confirm they're current and not stale historical records!
IMPORTANT: DO NOT send a slack message if there's nothing concerning to report!
Every line in that prompt exists because of a failure mode we hit while running it. Here is what each one does.
All environments and deployments, last 12 hours. Preview deployments fail in ways production never sees. The agent calls
get_runtime_errorsfor the window, thenget_runtime_logsper environment withlevelset to error and fatal.Locked transactions. The agent runs a read-only query like the one below through the Supabase MCP. A row waiting on a lock, or a transaction open for minutes, is worth a line in the review even when nothing is on fire.
select pid, usename, state, wait_event_type, wait_event,
now() - xact_start as transaction_age,
left(query, 120) as query
from pg_stat_activity
where wait_event_type = 'Lock'
or (state <> 'idle' and now() - xact_start > interval '5 minutes')
order by transaction_age desc;
Silent errors. A dashboard refresh that fails because a schema changed or a token expired returns a 200 to the caller and an error-level log to nobody. The prompt names the pattern so the agent searches for it rather than only counting 5xx responses.
Do not truncate. Some log entries wrap their payload in a JSON message body. A tool call that returns 50 truncated lines shows
{"title":"Cron","message":"...and hides theQuery failedinside. The agent raiseslimitand uses full-textqueryfilters rather than reading the first screen of results.Include ids. A Slack alert that says a dashboard refresh failed is a question. One that names the workspace id, dashboard id, and deployment is a ticket.
Join Vercel to Supabase. When a Vercel error carries an id, the agent looks it up with read-only SQL and adds the owner, plan, or dashboard name to the summary.
Check timestamps. Error clusters report first-seen and last-seen. An error last seen four days ago is history, not an incident, and the prompt says so explicitly.
No message when there is nothing to report. The review still gets written. The channel stays quiet.
Step 4: Schedule it in Cowork
In Cowork, open Scheduled in the sidebar and choose New task.
Choose Create with Claude and paste the prompt, or Set up manually and enter a name, the prompt, an approval mode, and the frequency.
Pick Daily. Cowork also offers hourly, weekly, weekdays, and manual. A busy production app can justify hourly, in which case shorten the window in the prompt to match.
Review the task details and confirm.
Scheduled tasks are available on all paid Claude plans. They work with your connectors and files saved to your Claude account, and cannot be tied to a folder on your computer, so keep everything the agent needs inside the prompt and the connectors. Supabase suggests starting with one monitor and splitting into specialized ones only when you need different owners, schedules, or thresholds; the same advice holds here. Start with this one daily task, then split Vercel and Supabase into separate hourly tasks if the review gets long.
What a run produces
A Slack alert, only when warranted. A short message in the channel you specified, leading with the suspected cause, listing the affected ids and deployment, and linking to the review.
A single-page SRE review. Plain language, one page, with charts where a chart earns its place: error clusters by route, deployment status over the window, lock waits, and the Supabase advisor findings. Every finding links back to the Vercel deployment or Supabase log it came from.
A stored health report. The Dreambase health report created during the run stays in your workspace, so week over week you can ask the agent to compare grades and sub-scores. The Supabase database health guide covers that loop in detail.
Keeping it safe
Keep the Supabase connection read-only. The agent reports; you or a separate task apply fixes.
Logs and query results can contain secrets or personal data. Ask the agent to aggregate and redact rather than paste raw rows into Slack.
Give the task its own Slack channel. Alerts that arrive only when something is wrong are alerts people read.
Re-read the first week of reviews. Tighten the prompt where the agent over-reported, and add a named pattern wherever it missed one.
NEXT STEP
Benchmark the database side.
Run a Dreambase health report from one prompt and let your agent fix the high-priority findings.