Skip to main content

Olaf The Vibecoder

Talk to your codebase like a colleague. You speak an idea; Olaf holds a natural voice conversation while coding agents (Claude Code and friends) quietly build it on separate git branches. Ask to see the diff, say "merge it", and it lands on main — the whole loop, hands-free.

you:   "lag en fil med et dikt i repoet"
olaf:  "Klart, jeg setter i gang!"          → agent builds on branch 'dikt'
you:   "vis diff"                            → colorized diff in the TUI
you:   "merge det inn i main"
olaf:  "Ferdig! Dikt er merget inn i main."

Quick Start

# Install and run
uv tool install voice-vibecoder
vibecoder

On first launch, a setup wizard will guide you through connecting your OpenAI or Azure OpenAI account. Press s anytime to change settings.

Features

  • Natural conversation — full-duplex voice: interrupt Olaf mid-sentence and it stops and listens (system echo cancellation on macOS, adaptive echo gate elsewhere). Short spoken answers, follows your language, resumes previous conversations where they left off
  • Invisible agent orchestration — multi-instance Claude Code agents in separate git worktrees; Olaf narrates progress and delivers results
  • Voice-driven git — show diffs, merge branches into main, clean up worktrees, all by voice; conflicts are reported, never half-merged
  • Live file tree per agent (including files the agent just created) and GitHub-style diff view
  • Session persistence across restarts
  • Push-to-talk and voice activity detection modes
  • OpenAI and Azure OpenAI realtime (GA voices marin/cedar), Gemini Live
  • Multi-language (English, Norwegian, Swedish) — spoken and transcribed

Requirements

  • Python 3.10+
  • An OpenAI API key with Realtime API access
  • PortAudio for microphone input (brew install portaudio on macOS)
  • Claude Code CLI installed

Usage as a Library

Embed the voice coding screen in your own Textual app:

from pathlib import Path
from voice_vibecoder import VoiceCodingApp, VoiceCodingScreen, VoiceConfig

# Standalone app with custom config
config = VoiceConfig(
    app_name="My Coding Assistant",
    config_dir=Path.home() / ".my-app",
    data_dir=Path.home() / ".my-app",
    log_dir=Path.home() / ".my-app" / "logs",
    on_startup=lambda send: send("Hello from startup!"),
)
VoiceCodingApp(config=config).run()

# Or embed the screen in your own Textual app
screen = VoiceCodingScreen(repo_root, config=config)

Configuration

Settings are stored using platform-standard directories:

Platform Config Data Logs
macOS ~/Library/Application Support/voice-vibecoder/ ~/Library/Application Support/voice-vibecoder/ ~/Library/Logs/voice-vibecoder/
Linux ~/.config/voice-vibecoder/ ~/.local/share/voice-vibecoder/ ~/.local/state/voice-vibecoder/log/

Git worktrees are created as siblings of your project directory (e.g., ../my-project-feat-login).

Keyboard Shortcuts

Key Action
q / Esc Quit
m Toggle mute
s Settings
c Cancel current Claude task
Space Push-to-talk (when in PTT mode)

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

voice_vibecoder-2.31.0.tar.gz (118.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

voice_vibecoder-2.31.0-py3-none-any.whl (117.4 kB view details)

Uploaded Python 3

File details

Details for the file voice_vibecoder-2.31.0.tar.gz.

File metadata

  • Download URL: voice_vibecoder-2.31.0.tar.gz
  • Upload date:
  • Size: 118.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for voice_vibecoder-2.31.0.tar.gz
Algorithm Hash digest
SHA256 a5ebba84b22606c9e62f74f4f27572f42d6bd8b3e4032ba07787cbe06136a9e6
MD5 18dd31e2ca0e7420c2dd057a901b320c
BLAKE2b-256 a9cf28e765df4347ecb4be9a1065db9474c1b14a2146a0c7087544e3b8f72c27

See more details on using hashes here.

Provenance

The following attestation bundles were made for voice_vibecoder-2.31.0.tar.gz:

Publisher: release.yml on snokam/voice-vibecoder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file voice_vibecoder-2.31.0-py3-none-any.whl.

File metadata

File hashes

Hashes for voice_vibecoder-2.31.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae972a8c60b48c1e62b41b9d1702c3c706178e450c19f96a8a8a664e8e21f911
MD5 b933e1b4b21579c96b7e55cd5d9a63b6
BLAKE2b-256 ae35e335e0986d4774ad30f636c900148555885829b36adbc4c51b8c55b67326

See more details on using hashes here.

Provenance

The following attestation bundles were made for voice_vibecoder-2.31.0-py3-none-any.whl:

Publisher: release.yml on snokam/voice-vibecoder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page