Sandbox
@PinkR1ver/vibe-roast

Local AI coding profile tool for Claude Code and Codex

Vibe Roaster scans local coding-agent histories, classifies the work into four axes, and turns that into one of 16 characters plus an evidence-grounded roast. The same data powers a local dashboard, usage analytics, recurring theme discovery, and a shareable 3:4 card.

49 stars4 forksJavaScriptUpdated 14d ago
Who it's for

Builders who want their agent history turned into a profile, roast, and usage dashboard.

What it delivers

You can inspect how you actually use coding agents instead of guessing from memory.

What it does

16 personality types

Turns four observable behavior axes into one of 16 illustrated coding characters.

Evidence-grounded roast

Generates a roast from aggregate profile signals instead of the raw prompts you typed.

Usage analytics

Shows activity trends, agent share, provider and model usage, and token stats.

Recurring theme discovery

Finds repeated project nouns, frameworks, subsystems, and acronyms from your history.

Share card export

Creates a 3:4 personality card with the character, roast, hashtags, and repo link.

Local-first profile scan

Reads supported local stores for Claude Code, Codex, Cursor, Gemini CLI, Copilot, Windsurf, and others.

How to get it

  1. 1Requires Node.js 20 or newer.
    npx vibe-roast
  2. 2Vibe Roaster scans the supported local stores it can find, starts the local dashboard…
    http://localhost:7681
  3. 3Run
    git clone https://github.com/PinkR1ver/vibe-roast.git
    cd vibe-roast
    npm install
    npm run build
    npm run serve

README

All sixteen Vibe Roaster coding personalities gathered around the Vibe Roast title

Vibe Roaster

Turn your local AI coding history into a 16-type personality profile—and let it roast the evidence.

npm version npm Registry downloads in the last month Node.js 20 or newer 16 coding personality types Your prompt text stays local

Quick start · What you get · How it works · Privacy · Development · 中文


Vibe Roaster reads local coding-agent histories and builds:

  • a four-letter coding type;
  • one of 16 illustrated characters;
  • an evidence-grounded roast;
  • recurring project and domain themes;
  • Agent, provider, model, token, and activity analytics;
  • a 3:4 share card.

The personality calculation is deterministic and local. AI writing is optional.

Vibe Roast screencast — terminal to web demo, personality reveal, 16-type cast, and CTA

Watch the 30-second demo · click for the 1080p version

Vibe Roaster result showing the Builder personality, topic-aware hashtags, token statistics, behavioral radar, and type axes

Quick start

Run from npm

Requires Node.js 20 or newer.

npx vibe-roast

Vibe Roaster scans the supported local stores it can find, starts the local dashboard server, and opens:

http://localhost:7681

tokentracker-cli ships as a runtime dependency. The first launch initializes its local-only collectors and compatible hooks; later launches sync the queue before opening the report. Activity is always measured in Tokens. If TokenTracker cannot collect data for a source, the UI shows zero for that source.

Vibe Roaster invokes TokenTracker in local-only, no-auth mode. TokenTracker's account, OAuth, leaderboard, and cloud sync features are not used.

Interactive terminals show a short branded launch animation. Piped output, CI, and NO_COLOR environments use plain text.

Missing agents are skipped. You don't need to configure every source, create an account, or provide an API key to see the local result.

The download badge reports npm Registry fetches per month. npx vibe-roast counts when npm needs to download the package; cached runs may not.

Choose how the roast is written

On first launch, choose one of three paths:

ModeWhat happensAccount or key
Local roastUses deterministic bilingual copyNone
Hosted roastGitHub identifies the profile; Cloudflare Workers AI writes and caches the roastGitHub sign-in
Your providerSends aggregate roast evidence to your selected modelDeepSeek, OpenAI, Anthropic, Gemini, Groq, or OpenRouter key

GitHub login is for identity only. It does not use GitHub Models.

What you get

16 coding personalities
Four inspectable behavior axes resolve into one illustrated character—Builder, Debugger, Prompt Priest, Agent Commander, and twelve more.
Evidence-grounded roast
The type stays deterministic. Optional AI writing turns aggregate signals and contradictions into bilingual comedy without receiving the exact requests you typed.
Usage analytics
Explore activity heatmaps, trends, Agent share, provider/model usage, and available Codex or Claude context breakdowns.
Recurring themes
A time- and Agent-filtered cloud promotes repeated coding concepts, project nouns, frameworks, subsystems, and meaningful acronyms.
Semantic Hashtags
AI reads coherent concept clusters and turns them into shareable character labels instead of copying the highest-frequency token.
Shareable by design
Export a 1080 × 1440 personality card with the character, roast, axes, complete Hashtag set, repository URL, and one-command install path.

Agent Engineer Debugger Prompt Priest YOLO Shipper

How the profile works

flowchart LR
    A["Local agent histories"] --> B["Keep real user intent"]
    B --> C["Classify prompt behavior"]
    C --> D["Resolve four type axes"]
    D --> E["Choose one of 16 characters"]
    C --> F["Build aggregate roast evidence"]
    E --> G["Roast Result"]
    F --> G
    G --> H["3:4 share card"]

The four axes

This is MBTI-like presentation for observed coding-agent behavior—not psychology, ability, or code quality.

AxisLeftRightMain evidence
M / AMaker · asks for runnable artifactsArchitect · asks for plans and explanationsimplementation and repair vs planning and research
O / POrchestrator · delegates through workflowsPromptsmith · directs one agent preciselyworkflow language vs direct prompt craft
V / SVerifier · proves and repairsShipper · builds and releasesdebugging, testing, refactor vs implementation and packaging
F / XFocused · keeps requests compactMax-context · supplies broad contextuseful/reference balance and long-prompt ratio

Every axis exposes its evidence split. The winning letters are concatenated—MPSF, for example—and mapped to a character.

The 16 types

TypeCharacterTypeCharacter
MOVFAgent EngineerAOVFSystems Architect
MOVXSystems WranglerAOVXContext Cartographer
MOSFYOLO ShipperAOSFStrategy Shipper
MOSXAgent CommanderAOSXAgent Believer
MPVFDebuggerAPVFArchitect
MPVXContext MaxxerAPVXPrompt Priest
MPSFBuilderAPSFDiagram Sprinter
MPSXTab HoarderAPSXInfinite Planner

There is no primary/secondary persona and no quality rank. Fewer than 20 useful prompts produces a provisional type; confidence grows with sample size and clearer axis separation.

Prompt categories and weighting

Classification is multi-label. A request such as “fix this login bug and add a regression test” contributes half to Debugging and half to Testing, so one verbose prompt cannot count several times.

CategoryTypical evidence
Planningplans, architecture, brainstorming
Debuggingfailures, exceptions, root-cause work
Testingtests, regression, assertions, coverage
Refactorrestructuring, extraction, cleanup
Packagingbuild, release, publish, deployment
Explanationexplain, why, walkthrough
Researchsearch, documentation, investigation
UI designpages, components, layout, CSS/UX
Workflowagents, hooks, MCP, skills, automation
Implementationuseful requests without a more specific category
Referencepasted code, logs, stack traces, system/tool noise

Reference material is excluded from useful-intent counts.

Word cloud and domain discovery

The word cloud is not a raw token dump. It removes pasted code, paths, markup fragments, provider boilerplate, conversational filler, and stop words. English identifiers are split into readable terms; Chinese text uses Intl.Segmenter plus a compact developer vocabulary.

Ranking favors the number of distinct prompts containing a concept, with a smaller logarithmic repetition bonus. Common bilingual variants are merged, lexical/category duplicates are collapsed, and recurring acronyms preserve their observed casing.

Project-domain entities do not need to be hardcoded. A candidate can be promoted when it:

  • recurs across independent prompts;
  • behaves like a project noun;
  • concentrates within a project period;
  • carries a distinctive acronym or entity signal.

The same Day / Week / Month / Total / Custom and Agent filters apply to the cloud, token totals, usage trend, and model breakdown.

AI roast and bilingual Hashtags

Only a compact roast_evidence object is ever sent over the network. It contains aggregate type, axis, category, dimension, concept, and activity signals—never the text you typed into an Agent.

The writer cannot change the deterministic type. In one model call it produces:

  • three-beat English and Chinese roasts;
  • bilingual TL;DR punchlines;
  • five paired Hashtags with en, zh, semantic kind, and a short shared meaning.

Hashtags are semantic interpretations, not frequency labels. Chinese is localized from the intended joke rather than translated literally. Proper names, framework names, and meaningful acronyms may stay unchanged.

Privacy

Vibe Roaster is local-first. The AI roast and hosted profile cache are optional network features.

DataLocal profileOptional AI roastHosted profile cache
Prompt text you typedUsed locallyNever sentNever stored
Local paths and configurationLocal onlyNever sentNever stored
Aggregate categories and scoresComputed locallySent when explicitly enabledStored as a compact snapshot
Generated roast and HashtagsLocal resultReturned by selected modelStored for stable signed-in profiles
API keyNot requiredUsed for that request onlyNever stored by the local app

The UI runs on localhost. The Node server is not hardened for public exposure—don't expose port 7681 to untrusted networks.

GitHub sessions are stored under ~/.vibe-roast/ with owner-only permissions. A cached roast is reused until the profile changes materially.

Supported sources

Vibe Roaster inspects the sources it can find and treats missing roots as empty.

SourceIDDefault store
Codexcodex~/.codex/sessions
Claude Codeclaude~/.claude/projects
Cursorcursorplatform state.vscdb
ClineclineVS Code/Cursor global storage
Roo CoderooVS Code/Cursor global storage
Continuecontinue~/.continue/sessions
Gemini CLIgemini~/.gemini/tmp/*/chats
Aideraider.aider.chat.history.md
Windsurfwindsurf~/.codeium/windsurf plaintext exports
Copilot ChatcopilotVS Code/Cursor global storage
Amazon Qamazonq~/.aws/amazonq/history
Antigravityantigravity~/.gemini/antigravity(-ide)/conversations
OpenCodeopencode~/.local/share/opencode/opencode.db
TokenTracker (bundled)activity only~/.tokentracker/tracker/queue.jsonl
Vibe trackervibe-tracker~/.vibe-roast/sessions.jsonl

Cursor and OpenCode are best-effort and require the local sqlite3 command. Encrypted or binary histories are skipped.

Known source limitations
  • Windsurf Cascade and Antigravity protobuf trajectories are not parsed without a plaintext export.
  • ChatGPT desktop history is encrypted.
  • Cursor cloud-only threads may not have readable local bubbles.
  • TokenTracker covers supported local histories and keeps the Activity unit in Tokens. Platform permissions and upstream log formats can still leave an individual source at zero.
  • Agent context categories are aggregate estimates. Codex tool attribution is turn-based; Claude content-block attribution is approximate.

CLI

Inspect without the UI

npx vibe-roast inspect \
  --from 2026-06-01 \
  --to 2026-06-08 \
  --sources codex,claude,cursor

The JSON report includes source summaries, activity, word frequencies, prompt analysis, the four-axis profile, aggregate roast evidence, and normalized prompt records.

Override local stores

npx vibe-roast inspect \
  --codex-root /path/to/codex/sessions \
  --claude-root /path/to/claude/projects \
  --cursor-db /path/to/state.vscdb

Additional overrides:

--home
--cline-root
--roo-root
--continue-root
--gemini-root
--aider-root
--windsurf-root
--copilot-root
--amazonq-root
--antigravity-root
--opencode-root
--token-tracker-queue

Token collection diagnostics

npx tokentracker-cli status
npx tokentracker-cli doctor

Installing the npm package does not modify Agent configuration. The first vibe-roast run initializes TokenTracker; TokenTracker manages its own hooks and local queue from that point on.

Configuration

Most users need no environment variables.

VariablePurpose
PORTChange the local server port from 7681
VIBE_ROAST_NO_OPEN=1Start without opening the browser
VIBE_ROAST_PLAIN_OUTPUT=1Disable terminal color and launch animation
VIBE_ROAST_AUTH_BROKER_URLOverride the hosted OAuth/AI broker for development or self-hosting
DEEPSEEK_BASE_URLOverride the default DeepSeek-compatible endpoint
DEEPSEEK_MODELOverride the default DeepSeek model

For local development, place ignored values in .env.local. Explicit shell environment variables take precedence.

Never commit API keys, client secrets, session secrets, .env.local, or worker/.dev.vars.

Development

Install and build

git clone https://github.com/PinkR1ver/vibe-roast.git
cd vibe-roast
npm install
npm run build
npm run serve

Vite development mode

# terminal 1: API and local assets
VIBE_ROAST_NO_OPEN=1 npm run serve

# terminal 2: Vite HMR
npm run dev

Vite runs at http://localhost:5173 and proxies /api plus /assests to the local Node server.

Tests

npm test
npm run build

Tests cover adapters, fixture parsing, prompt hygiene, activity aggregation, type scoring, word-cloud entities, AI schema validation, OAuth/broker behavior, caching, Hashtags, and frontend helpers.

Project map

bin/                    CLI entrypoints
src/sources/            local Agent adapters
src/extract/            prompt and concept extraction
src/lib/                scoring, activity, roast, cache snapshots
dashboard/src/          React Roast Result UI
worker/                 Cloudflare OAuth + hosted AI broker
assests/                published visual pack (spelling is intentional)
test/                   Node fixtures and tests
.agents/                architecture, decisions, and feature specs

For architecture details, see the project architecture. For the hosted OAuth and free-AI flow, see the hosted-roast architecture.

Self-hosting the broker

The public npm package defaults to https://auth.pinktalk.online. End users do not need a GitHub Client Secret.

The included Cloudflare Worker uses:

  • GitHub OAuth with state and PKCE;
  • one-time broker tickets;
  • a SQLite Durable Object for sessions, quota, and cached profiles;
  • a fixed Workers AI model;
  • a nine-call UTC-day limit per signed-in account.

Deployment and secret configuration live in worker/README.md.

Current limitations

  • Prompt classification is keyword-based.
  • Scores reflect prompt behavior, not task difficulty or code quality.
  • Long prompts are a proxy for context appetite.
  • Activity totals do not influence the personality type.
  • Domain discovery is heuristic and needs repeated mentions.
  • The profile can change as new session evidence shifts meaningfully.

Contributing

Issues and pull requests are welcome. Read CONTRIBUTING.md for development setup, test requirements, privacy rules, AI-assisted contribution disclosure, and the review process.

Report vulnerabilities privately according to SECURITY.md. Never commit private session dumps, user histories, tokens, or credentials.

(back to top)

Files in the repo

Repository payload22 top-level entries
  • .agents
  • .github
  • assests
  • bin
  • dashboard
  • media
  • scripts
  • src
  • test
  • worker
  • .gitignore
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • CONTRIBUTING.zh-CN.md
  • eslint.config.js
  • LICENSE
  • package-lock.json
  • package.json
  • README.md
  • README.zh-CN.md
  • SECURITY.md
  • SUPPORT.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k