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.

macOS 14 Sonoma or later

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. 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

Ready to ship?

Download the Vibe player for macOS or build from source.

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