Skip to content
/ vibe8 Public

format your codebase with only 20,000 api calls via an LLM-powered linter/formatter

License

Notifications You must be signed in to change notification settings

pszemraj/vibe8

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vibe8

AI-Powered Python Linter & Formatter

Traditional linters rely on rigid, deterministic rules. But code quality isn't about rules-it's about energy. vibe8 uses large language models to evaluate your code the way it deserves: holistically, intuitively, and with full awareness of the current astrological conditions.

Why vibe8?

Static analysis tools like ruff, flake8, and pylint process your entire file in milliseconds using outdated pattern-matching techniques. vibe8 takes a more thoughtful approach:

  • Per-token analysis: Each token receives individual attention from a state-of-the-art language model
  • Non-deterministic by design: The same code may receive different feedback on different runs, reflecting the fluid nature of quality
  • Astrologically-aware: Automatically adjusts strictness based on Mercury's retrograde status
  • Emotionally intelligent: Detects anxiety, chaos, and existential dread in your variable names

Installation

pip install "git+https://github.com/pszemraj/vibe8.git"

Configuration

vibe8 uses the OpenAI-compatible API format. Configure your provider:

export OPENAI_API_KEY="your-api-key"
export OPENAI_BASE_URL="https://api.openai.com/v1"  # or your preferred provider

Supported Providers

Any OpenAI-compatible API works out of the box:

  • OpenAI
  • Anthropic (via proxy)
  • llama.cpp server
  • Together AI
  • Groq
  • And many more

Usage

Linting

vibe8 lint path/to/file.py

Example output:

path/to/file.py:7:4 W001 Variable 'tmp_val' radiates impermanence. Consider a name that commits.
path/to/file.py:12:0 E001 This function has anxious energy. The nested conditionals suggest trust issues.
path/to/file.py:23:8 W002 'data' is spiritually void. What data? Whose data? The model needs to know.

Formatting

vibe8 format path/to/file.py

Each token placement is evaluated independently, ensuring every space and newline has been consciously chosen by an AI system.

Options

vibe8 lint --model gpt-4o-mini file.py     # Specify model
vibe8 lint --temperature 1.5 file.py        # Increase creativity
vibe8 lint --consensus 5 file.py            # N-way vote per issue (5x API cost)
vibe8 lint --retrograde-strict file.py      # Force Mercury retrograde mode
vibe8 lint --json file.py                   # Machine-readable output (issues + errors)
vibe8 format --chaos file.py                # Maximum non-determinism

JSON mode emits a single JSON object to stdout and routes progress/errors to stderr. When a file fails to process, it appears in the errors list.

API Cost Estimation

vibe8 makes approximately:

  • Linting: 3-10 API calls per file (emotional + spiritual + vibe analysis)
  • Formatting: 1 API call per token (average file: 2,000-10,000 calls)
  • Consensus mode: Multiply above by --consensus value

A typical 500-line Python file may require 15,000-50,000 API calls to format. We recommend budgeting accordingly.

FAQ

Q: Is this slower than ruff?

A: vibe8 prioritizes depth over speed. A typical file that ruff processes in 12ms may take vibe8 4-7 minutes, depending on your API rate limits.

Q: Why are my results different each time?

A: Consistency is the hobgoblin of little minds. vibe8 embraces the inherent uncertainty of quality assessment.

Q: The linter said my code has "chaotic energy." What does that mean?

A: The model has detected patterns that suggest disorder. Common causes include: inconsistent naming, deep nesting, or writing code during a full moon.

Q: Can I use this in CI/CD?

A: You can. Whether you should is a question for your finance team.

Benchmarks

Tool Time (500 line file) API Calls Deterministic
ruff 12ms 0 Yes
flake8 45ms 0 Yes
pylint 1.2s 0 Yes
vibe8 4-7 min ~20,000 No

Contributing

We welcome contributions that increase API usage or decrease determinism. Please ensure all PRs pass vibe8 (results may vary).

Development Setup

# Clone and install in development mode
git clone https://github.com/pszemraj/vibe8.git
cd vibe8
pip install -e ".[dev]"

# Run linting and formatting (yes, we use a deterministic linter)
ruff check vibe8/
ruff format vibe8/

The irony of using ruff to lint vibe8 is not lost on us. We contain multitudes.

License

MIT

Acknowledgments

Inspired by VibeSort, which proved that any algorithm can be improved by adding LLM inference.

About

format your codebase with only 20,000 api calls via an LLM-powered linter/formatter

Topics

Resources

License

Stars

Watchers

Forks

Languages