vibetunnel/mac/docs/BunServerSupport.md
2025-06-21 14:39:44 +02:00

2.9 KiB

Bun Server Support

VibeTunnel now includes support for running with Bun, a high-performance JavaScript runtime with built-in native module support.

Architecture Considerations

Important: Bun does not support universal binaries. The Bun executable is architecture-specific and will be built for the native architecture during compilation. Despite this limitation, VibeTunnel still creates a universal binary for the main application, with the Bun executable being selected at runtime based on the current architecture.

Features

  • High-performance JavaScript/TypeScript execution
  • Built-in native module support (pty.node, spawn-helper)
  • Integrated fwd command for terminal forwarding
  • Smaller binary size compared to Node.js

Building with Bun Support

The Bun executable is automatically built during the main build process. The build script:

  1. Detects the native architecture
  2. Builds the Bun executable for that architecture
  3. Embeds it into the universal app bundle

Note: Each build contains only the Bun executable for the build machine's architecture. For a true universal distribution, separate builds on Intel and Apple Silicon machines would need to be combined.

Manual Build

If you need to build the Bun executable manually:

cd web
node build-native.js

This creates:

  • native/vibetunnel - The Bun executable
  • native/pty.node - Native PTY module
  • native/spawn-helper - Helper binary for spawning processes

Verification

To verify Bun support is properly built:

# Check if files exist
ls -la web/native/

# Test the executable
web/native/vibetunnel --version

CLI Usage

When using the Bun server, the vt command automatically prepends fwd:

# With Go server:
vt mycommand  # → vibetunnel mycommand

# With Bun server:
vt mycommand  # → vibetunnel fwd mycommand

Switching Between Servers

You can switch between Go and Bun servers in Settings → Debug → Server Type.

When switching, you may need to reinstall the CLI tools to update the vt wrapper script.

Troubleshooting

"Bun server is not available"

This error means the Bun executable or native modules are missing. Solutions:

  1. Ensure the build script runs: Check Xcode build logs for "Build Bun Executable"
  2. Build manually: cd web && node build-native.js
  3. Verify files: Check VibeTunnel.app/Contents/Resources/ for:
    • vibetunnel (60MB executable)
    • pty.node
    • spawn-helper

CLI not working after switching

After switching server types, reinstall the CLI tools:

  1. Settings → Advanced → Reinstall CLI Tools
  2. Enter admin password when prompted
  3. The installer will create the appropriate vt script/symlink

Development

The Bun server code is in:

  • mac/VibeTunnel/Core/Services/BunServer.swift - Swift integration
  • web/src/server/ - JavaScript server implementation
  • web/build-native.js - Build script for creating the Bun executable