SmartCast Stats
Publish live coding stats from VS Code or Cursor to your SmartCast overlay so they appear on your stream in real time. Two independent publishing modes:
- Workspace overlay — push to your own SmartCast workspace's developer-stats overlay (your stream, your data).
- Coding Ranking — push to the public SmartCast Coding Ranking at smartcast.gg/ranking-coding (companies appear on a public leaderboard).
Both can run side by side on the same install.
What it tracks
- Commits this session / today / total — via
git log
- Deploys this session / today / total — commits to your deploy branch (default
main), plus manual deploys you mark with a command
- Lines added / removed since session start — via
git diff --shortstat
- AI usage — input, output, cache-creation, cache-read counts and request count summed across all detected local transcripts (Claude Code at
~/.claude/projects/, OpenAI Codex CLI at ~/.codex/)
- AI agents detected — Claude Code, Codex CLI, Cursor (when running inside Cursor), GitHub Copilot if installed
- Active file & language — from the active editor
Counters are session-scoped: they reset when you reset the session or close the editor.
Setup — workspace overlay mode
- Install the extension in VS Code or Cursor.
- In SmartCast, open the Developer Stats widget (
/p/widgets/developer-stats).
- Copy the Workspace ID and overlay access string.
- Run
SmartCast: Configure from the command palette (Ctrl/Cmd+Shift+P) and paste them.
- Add the OBS Browser Source URL from the SmartCast panel as a Browser Source in OBS.
- The status bar will show a broadcast icon while pushing.
Setup — Coding Ranking mode
- Get a company identifier from the SmartCast admin at
/p/admin/coding-ranking.
- Run
SmartCast: Configure Coding Ranking and paste it.
- The extension publishes deltas to the public leaderboard. A second status bar item shows the publish state.
Either mode can be active independently. The two pushers don't interfere with each other.
Commands
| Command |
Description |
SmartCast: Configure |
Set workspace ID, overlay access string, and API URL |
SmartCast: Start Pushing Stats |
Begin pushing (auto-starts on activation by default) |
SmartCast: Stop Pushing Stats |
Stop pushing |
SmartCast: Mark Manual Deploy |
Add one to your deploy counter (bind a hotkey) |
SmartCast: Reset Session Counters |
Restart commit/usage counters from now |
SmartCast: Configure Coding Ranking |
Set the company identifier for public ranking publishing |
SmartCast: Start Pushing to Coding Ranking |
Begin publishing to the public ranking |
SmartCast: Stop Pushing to Coding Ranking |
Stop publishing to the public ranking |
SmartCast: Toggle Streamer Mode |
Cover risky values in editors (see below) |
SmartCast: Reveal Protected File Once |
Open one risky file with coverage off for 30s |
Streamer Mode
A common way to leak sensitive values on a coding stream is to open a .env file or paste an access string by mistake. Toggle Streamer Mode before going live and the extension will visually cover:
.env*-style files — values masked line-by-line, keys remain readable
- Common provider access patterns matched by regex anywhere in code or output (the full detection list lives in
src/redactor.ts)
Toggle via the status bar (👁 Streamer Off / 🚫 Streamer) or the command. The status bar warns when the mode is OFF.
Settings
| Setting |
Default |
Description |
smartcast.workspaceId |
"" |
Your workspace ID |
smartcast.secret |
"" |
Your overlay access string |
smartcast.apiBaseUrl |
https://api.smartcast.gg |
API base URL |
smartcast.pushIntervalSec |
5 |
Push interval in seconds |
smartcast.deployBranch |
main |
Branch counted as your deploy target |
smartcast.claudeProjectsDir |
(auto) |
Override AI transcripts directory path |
smartcast.autoStart |
true |
Auto-start pushing on activation |
smartcast.codingRanking.companyToken |
"" |
Company identifier for public ranking |
smartcast.codingRanking.autoStart |
true |
Auto-start ranking publishing on activation |
smartcast.codingRanking.pushIntervalSec |
10 |
Ranking publish interval in seconds |
smartcast.streamerMode |
false |
Cover sensitive values in open editors |
smartcast.streamerMode.preCoverMs |
200 |
Loading-cover duration (ms) for .env* files |
How deploys are detected
A "deploy" is a commit landing on your deploy branch (default main). If you use CI/CD that ships on push to main, this matches reality. If you deploy manually (firebase deploy, vercel --prod, etc.), bind SmartCast: Mark Manual Deploy to a keyboard shortcut and tap it after each deploy.
How AI usage is counted
The extension reads local transcripts from any supported AI tool, sums the per-turn usage numbers since session start, and pushes the delta.
- Claude Code writes per-turn transcripts to
~/.claude/projects/<encoded-path>/*.jsonl. The extension matches the project folder to your current workspace via the recorded cwd field.
- OpenAI Codex CLI writes sessions to
~/.codex/sessions/**/*.jsonl. The extension reads any session modified since your VS Code session started; if a session records a working directory that doesn't match the current workspace, it's skipped.
Both sources are summed into one set of counters (input_tokens, output_tokens, cache_creation_input_tokens, cache_read_input_tokens, requests). Other AI tools that don't expose usage data are only listed as active "agents".
Privacy
The extension sends only the metrics listed above to your configured SmartCast endpoint. It never sends file contents, prompts, or transcripts. See PRIVACY.md for the full data-handling description.
License
MIT