Morning cost and capacity dashboard for your Browserbase account
Open one screen each morning to see which browser jobs are burning minutes, how much capacity you have left, and what your failed runs cost you.
Build an app my engineering and ops team opens every morning to see what our Browserbase account is actually spending and whether anything is stuck. Treat this as a spend and capacity dashboard rather than a debugging console. The questions it answers are: how many browser minutes and how much proxy data are we burning, how much concurrency headroom is left, which sessions are running long, and how many minutes did we pay for that produced nothing.
The main screen opens with a spend row, one card per project. Use Browserbase List Projects to get every project the API key can see, then Get Project Usage for each one to read its browser minutes and proxy bytes. Show browser minutes, proxy usage converted to GB, and the change since yesterday taken from the history described below. Get Project Usage returns a running total for the project, not a per period figure, so never label the raw number as today's usage.
Beside the spend row, show a live capacity panel. Call List Sessions filtered to RUNNING to count the sessions in flight right now, and Get Project to read that project's concurrency limit, which lives on the project record. Display running against limit as a fraction with a headroom bar, and warn when we are close, because once the concurrency cap is hit new sessions get rejected outright.
Below that comes the runaway table: every session still alive past a threshold I set myself in the app, defaulting to 30 minutes, editable and remembered between visits. Build it from List Sessions filtered to RUNNING, compute elapsed time from each session's start time, and sort longest running first. Group the rows by the user metadata tag we set at session creation, so we can see which job or team is burning the minutes, and show a subtotal of elapsed minutes per group. Columns: tag, session id, region, started at, elapsed time, status. List Sessions accepts a user metadata query as well as a status filter, so let me narrow the table to a single tag when I want to.
Add a failures panel listing sessions that ended in ERROR or TIMED_OUT in the last 24 hours, built from List Sessions filtered to those statuses. Total up the minutes those sessions consumed and label it clearly as wasted spend, because they are paid for minutes that produced nothing. Group the failures by the same metadata tag so a job that fails over and over stands out immediately.
Because the usage API only ever returns a running total, take a snapshot every time the dashboard loads. Append a row to a Google Sheet with Append Values holding the timestamp, project id, project name, browser minutes, proxy bytes, running session count and concurrency limit. Read that history back with Get Values and use it to chart minutes per day, which is the difference between consecutive snapshots, and to show a week over week trend against the same weekday last week. If the newest row is less than five minutes old, reuse it instead of appending, so a morning of refreshes does not flood the sheet.
Clicking any session row opens a detail view for that session. Load Get Session for the full record, Get Session Debug URLs for the live view of a session that is still running, Get Session Logs for the Chrome logs, and Get Session Replays plus Get Session Replay Page for the video replay once it has ended. Include a Release Session button with a confirmation step so nobody kills a real job by accident. Note that Browserbase closes a session by requesting a status change rather than deleting it, so the button should request release and then reflect the new status. Also include a button that posts the session summary to Slack with Send a Message, covering the tag, elapsed time, status, minutes consumed and a link back, so I can hand it straight to whoever owns that job. Let me choose the channel.
Everything in the app is read only apart from the release button and the Slack post. Session statuses are PENDING, RUNNING, ERROR, TIMED_OUT and COMPLETED, so use those exact values when filtering. Someone without a Browserbase login should be able to open this and understand where the money is going.
What does this prompt do?
- Shows browser minutes and data usage for every project in your account, charted per day with a week over week trend so you can see spend moving before the invoice does.
- Tells you how many browser jobs are running right now against the limit your plan allows, so you know your remaining headroom before new jobs start getting turned away.
- Lists every job still alive past a time limit you set, longest first and grouped by the team or job tag you attach to your sessions, so you can see who is burning the minutes.
- Flags jobs that ended in an error or timed out in the last 24 hours and totals their minutes, since those are minutes you paid for that produced nothing.
What do I need to use this?
- A Browserbase account and its API key, found on the settings page of your Browserbase dashboard
- A Google account and a blank Google Sheet the app can use to keep a running history of your usage
- A Slack workspace, if you want to hand a session summary to whoever owns the job
- Sessions that carry a tag such as team, customer or job name, if you want the grouping to be meaningful
How can I customize it?
- Set your own runaway threshold: flag anything alive past 15 minutes, an hour, or whatever matches your longest legitimate job.
- Change how far back the failures panel looks, and which tag the runaway and failure tables group by.
- Choose the Slack channel session summaries get posted to, and what goes in the summary.
FAQs
Do I need to be an engineer to use this?
Why does it save a copy of the numbers to a spreadsheet?
Can I stop a session from inside the app?
How does it know which team or job a session belongs to?
What counts as a runaway session?
Does it work if we have more than one project?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Search creators for free, shortlist the best with your team, and spend an audit credit only when you decide someone is worth a closer look.
Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.
See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.
One screen showing invited, completed, and shortlisted counts for every open role, plus the stalled invites that have quietly gone nowhere.
Stop finding out about runaway browser sessions on the invoice.
Open one screen each morning and see exactly where your browser minutes are going, while you can still do something about it.