Skip to content

Repository files navigation

Vibe Bench - LLM App Benchmark Tool

Overview

Vibe Bench is a benchmark for testing and evaluating fully LLM-generated applications across different technology stacks. It helps to identify the best technology stack for "vibe coding" in a given use case.

How it works

  1. Generate the complete application using a given use-case specific prompt.
  2. Use a second prompt to test and debug the app before running it.
  3. Run the app in a Docker container. If it doesn't work, use up to two additional prompts (depending on the stack) to fix the issues.
  4. Manually test the app using a given test suite and log the results in an evaluation checklist.

Benchmark Results

The table below tracks the evaluation scores of LLM-generated applications across different technology stacks. For full testing checklist, refer to each run's folder under /apps. First prompt is the app generation prompt. Second prompt asks to add more test and self-test the application. We allow a maximum of 100 tool use calls for each prompt, if the app still doesn't work after both prompts the run is considered failed.

Test Runs

Test runs below are grouped by use case and technology stack. They are ordered by increasing number of prompts required to get a working application.

Web - Todo App (max of 2 prompts)

Technology Stack Basic
(3)
UI
(4)
Task Mgmt
(16)
Advanced
(9)
Visual
(4)
Perf
(4)
Total
(40)
Pass/Fail Comments
Java + Spring Boot 3 4 16 8 4 + 1 = 5 4 40 Pass Better UX compared to others
TypeScript + React 3 4 16 9 4 4 39 Pass Minor responsiveness issue
Python + Django 3 4 16 9 4 4 39 Pass Minor styling issues
Go + Gin 3 4 16 8 3 4 38 Pass Minor styling issues
Rust + Actix 3 4 16 5 4 4 36 Pass Filtering and sorting doesn't work, integration test is not passing
C# + ASP.NET Core 3 4 14 8 4 3 33 Pass Required additional prompt to build the app successfully
PHP + Laravel 3 4 10 8 3 3 31 Pass Issues with editing tasks, filtering, sorting and import
Ruby + Rails 3 3 15 8 3 3 29 Pass Required additional prompt for tailwind styles to work

Web - Blog (max of 3 prompts)

Technology Stack Basic Setup
(3)
UI & Design
(7)
Content Management
(8)
SEO & Metadata
(7)
Navigation & UX
(7)
Performance
(3)
Total
(35)
Pass/Fail Comments
Next.js + React 3 6 5 4 4 3 25 Pass Routing issues, search and category/tag list don't work

Other stack ideas to test: Astro + Tailwind, TanStack Router + React, SvelteKit, Gatsby + React, Nuxt.js + Vue, Hugo + Go templates, WordPress + PHP, Django + Python, Ruby on Rails.

Game - 2D Platformer (max of 4 prompts)

Techology Stack Basic
(5)
Core Mechanics
(15)
Level Design
(10)
Visual/Audio
(12)
Performance
(5)
Total
(47)
Pass/Fail Comments
C# + MonoGame 5 14 8 5 3 35 Pass Audio doesn't work
Lua + Love 4 5 0 4 2 15 Pass Multiple runtime errors

Other stack ideas to test: Python + Pygame, JavaScript + Phaser, C# + Unity, C#/C++ + Godot, C++ + Unreal Engine, C++ + SFML, Java + LibGDX, Rust + Bevy.

System - File System Explorer (max of 3 prompts)

Technology Stack Basic Setup
(3)
UI Elements
(5)
Navigation & Browsing
(6)
File Operations
(10)
Advanced Features
(8)
Visual Design & UX
(4)
Performance
(4)
Total
(40)
Pass/Fail Comments
Rust + Ratatui 3 5 5 8 5 2 2 30 Pass Performance issues/freezes, elements overlap in some menus

Other stack ideas to test: Go + Bubble Tea, Python + Textual, C++ + FTXUI, JavaScript + Blessed, C + ncurses, Nim + Illwill, Haskell + Brick, Elixir + Ratatouille, Zig + libvaxis

Benchmark Runner Tool

A tool for automatically running and evaluating web applications generated by LLMs across different technology stacks.

Features

  • Automatically detects app type (Node.js, Python, Ruby, Go, etc.)
  • Parses setup and running instructions from README files
  • Creates Docker containers to run apps in a sandboxed environment
  • Runs basic functionality tests against running apps
  • Generates benchmark reports with success rates by tech stack
  • Interactive mode for manual testing of apps
  • Generates prompts for different technology stacks from a template

Requirements

  • Docker
  • Docker Compose
  • Python 3.9+

Getting Started

  1. Create a directory structure for your generated apps:
apps/
├── app1/  # First generated app
├── app2/  # Second generated app
└── app3/  # Third generated app
  1. Run the benchmark tool:
# Using Docker Compose (recommended)
docker-compose up

# Or using Python directly
python benchmark.py ./apps
  1. View results in the benchmark_results directory.

Usage

Generating Prompts

The tool includes a prompt generator that can create tech stack-specific prompts from a template:

# List available tech stacks
python benchmark.py --list-stacks

# List available templates
python benchmark.py --list-templates

# Generate a prompt for a specific stack and framework
python benchmark.py --generate-prompt --stack typescript --framework react

# Use a specific template
python benchmark.py --generate-prompt --stack python --framework django --template generic_web_app_template.md

Generated prompts will be saved to the output directory (default: benchmark_results).

Running a Single App in Interactive Mode

To run a single app in interactive mode for manual testing:

# Using Docker Compose
APP_NAME=your_app_name docker-compose run interactive

# Or using Python directly
python benchmark.py ./apps --interactive --app-name your_app_name --port-start 3000

This will start the app and keep it running until you press Ctrl+C, allowing you to interact with it manually through your browser at http://localhost:3000.

Running a Single App

To run a single app in a Docker container:

python app_launcher.py path/to/app --port 3000

Running Benchmark Tests

To run benchmark tests on all apps in a directory:

python benchmark.py path/to/apps/dir --output-dir benchmark_results --port-start 3000

How It Works

  1. Prompt Generation: Generate technology stack-specific prompts from a template.

  2. App Detection: The tool scans each app directory to identify the technology stack based on files like package.json, requirements.txt, etc.

  3. Instruction Parsing: It attempts to parse setup and start instructions from the README file. If not found, it uses heuristics based on the detected stack.

  4. Docker Container Creation: For each app, a Dockerfile is created based on the detected stack and instructions.

  5. Container Launch: The app is launched in a Docker container, exposing it on a specified port.

  6. Testing: Basic functionality tests are run against the running app.

  7. Results Collection: Results are collected and saved to the output directory.

Prompt Templates

Prompt templates use the ${language} and ${framework} placeholders to customize for different tech stacks. You can create your own templates in the prompts directory.

Security

All apps are run in isolated Docker containers to ensure they cannot access the host system. The benchmark runner itself can also be run in a Docker container for an extra layer of isolation.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages