Open source · MIT License

Share apps
like files.

Package an AI-built app into a single .vibeapp file and send it to anyone.
They open it on their Mac and run it safely — no setup, no terminals required.

Download for Mac
or
View on GitHub
macOS 14 Sonoma or later · Apple Silicon only

Everything included.

A complete runtime for containerized apps — packaging, signing, isolation, and state management.

📦

One file to share

Your whole app ships as a single .vibeapp — email it, share a link, or send it over Slack.

No setup for recipients

Opens like any document on macOS. No Homebrew, Docker, or Node required. Just the Vibe player.

🛡️

Sandboxed by default

Fully isolated inside an Alpine Linux VM via Apple's Virtualization framework. Capabilities are declared up-front and prompted before first run.

💾

State is preserved

Apps remember what they were doing. Auto-save snapshots every 30 seconds, up to 100 per app. Revert anytime.

🔒

Password protection

Optionally encrypt packages with AES-256-GCM before sharing. Recipients need the password to open.

🐳

Any containerized stack

Node, Python, Postgres, Redis — anything that runs in a container. Bring your own images.

✨ AI-native

Just say /vibe it.

Vibe ships with skills for your favorite AI coding tool. Install once, then let your AI handle the packaging.

Works with

Claude Code OpenAI Codex Cursor GitHub Copilot
1

Install the skills

vibe install-hooks
2

Tell your AI

/vibe it
3

Get your package

myapp.vibeapp

Two parts. One workflow.

A CLI for developers who build apps, a macOS player for everyone who runs them.

For developers

Package & sign

  1. Write a vibe.yaml manifest describing your app's services
  2. vibe package bundles everything into a .vibeapp archive
  3. vibe sign signs with Ed25519 and SHA-256 hashes every file
  4. Optionally encrypt with AES-256-GCM via --password
For everyone

Open & run

  1. The host app verifies the Ed25519 signature before launching
  2. A persistent Alpine Linux VM starts via Apple's Virtualization framework
  3. containerd runs your app's services inside the VM
  4. Live logs and progress stream over SSE via the local rpc-api-v1
  5. State snapshots save automatically every 30 seconds

Get started in seconds.

Install the CLI, describe your app, and package it. That's it.

Terminal
# Install the CLI
brew tap dolfin/vibe && brew install vibe

# Create a new app
vibe init myapp
# edit vibe.yaml to describe your services

# Package it
vibe package vibe.yaml -o myapp.vibeapp

# Sign it (optional but recommended)
vibe keygen -o mykey
vibe sign myapp.vibeapp --key mykey.key

# Share myapp.vibeapp with anyone on macOS 14+

Simple manifest format.

Describe your app in YAML. Vibe handles the rest.

vibe.yaml
kind: vibe.app/v1
id: com.example.myapp
name: My App
version: 1.0.0

services:
  - name: web
    image: node:20-alpine
    command: ["node", "server.js"]
    ports:
      - container: 3000
    dependOn: ["db"]
  - name: db
    image: postgres:16

state:
  volumes:
    - name: data
      consistency: postgres

security:
  network: true

publisher:
  name: Your Name

How Vibe compares.

Sharing a vibe-coded app usually means a GitHub repo, a local Docker/Node/Python setup, or a cloud deploy. A single .vibeapp skips all of it.

🧭

How to share a vibe-coded app

The full guide — .vibeapp vs GitHub, local setup, cloud hosting, and static HTML. Read the guide →

🐙

Vibe vs a GitHub repo

Send one file instead of asking people to clone, install, and run. Compare →

☁️

Vibe vs cloud hosting

Share an AI app without deploying to Vercel, Railway, or Fly. Compare →

Ready to ship?

Download the Vibe player for macOS or build from source.

macOS 14 Sonoma or later · Apple Silicon only · MIT License · Free & open source