Alpha Software -- BarkVisor is under active development. APIs, configuration, and behavior may change rapidly between releases. Use at your own risk and expect breaking changes.
A headless macOS daemon for managing QEMU virtual machines through a web UI.
- Create, start, stop, and manage VMs with configurable CPU, RAM, disks, and networks
- UEFI boot and TPM 2.0 support
- Cloud-init provisioning with user data templates
- Deploy VMs from templates, synced from remote catalogs
- qcow2/raw disk management with hot-plug and online resize
- NAT and bridged networking with port forwarding
- OS image library with HTTP download and auto-decompression
- Live CPU, memory, and disk I/O metrics
- Serial console (xterm.js) and VNC display (NoVNC) in the browser
- JWT authentication, API keys, and audit logging
- SSH key management for VM injection
- Database backups, log rotation, and diagnostic bundles
- macOS 26+ (Apple Silicon only)
- Xcode with Swift 6 toolchain
- Bun (for the frontend)
- Homebrew
Install build dependencies:
brew install meson ninja pkg-config glib pixman dylibbundler \
gnutls jpeg-turbo libpng libssh libusb zstd lzo snappy \
autoconf automake libtool json-glib swiftlint swiftformatswift build
swift run BarkVisorAppThe server starts on http://localhost:7777. On first launch a web-based setup wizard creates your admin account.
cd frontend
bun install
bun run devThe Vite dev server starts with hot reload, proxying API calls to the backend.
cd frontend
bun run buildThe built files go into Sources/BarkVisor/Resources/frontend/ and are served by the backend directly.
make build # swift build
make test # swift test
make lint # swiftlint
make format # swiftformat
make check # lint + format check (CI)cd frontend
bun run cy:open # Interactive Cypress
bun run test:e2e # Headless CypressDownload the latest .pkg from the releases page and install:
sudo installer -pkg BarkVisor-<version>.pkg -target /This can also be done entirely over SSH on a remote Mac -- no GUI required.
After installation, open http://<host-ip>:7777 in a browser to complete setup.
To uninstall:
sudo ./scripts/uninstall.sh # keep data
sudo ./scripts/uninstall.sh --purge # remove everythingThe release script compiles QEMU, swtpm, socket_vmnet, and xz-utils from source, builds the frontend, compiles the Swift app, assembles the daemon install layout, and creates a .pkg installer.
# Required: Apple Team ID for XPC code-signing verification
export APPLE_TEAM_ID=YOUR_TEAM_ID
# Optional: signing identity for distribution
export SIGNING_IDENTITY="Developer ID Application: Your Name (TEAMID)"
./scripts/build-release.shOptions:
| Flag | Effect |
|---|---|
--skip-deps |
Reuse cached dependency builds |
--no-sign |
Skip code signing |
--no-pkg |
Skip installer .pkg creation |
--require-notarize |
Fail if notarization credentials are missing |
The output is build/stage/ (install layout), build/BarkVisor-<version>-standalone.tar.gz, and build/BarkVisor-<version>.pkg.
Installed daemon builds store data in /var/lib/barkvisor/. Development builds use ~/Library/Application Support/BarkVisor/.
| Path | Contents |
|---|---|
db.sqlite |
Application database |
jwt-secret |
Auto-generated JWT signing key |
disks/ |
VM disk images |
images/ |
Downloaded OS images |
logs/ |
Application logs |
backups/ |
Database backups |
The server listens on port 7777 by default, bound to 0.0.0.0.
- Installation — System requirements, pkg install, SSH install, data directory
- First Launch and Setup — Web-based setup, admin account, helper daemon
- Quickstart — Create and run your first VM
- Development Setup — Build from source, dev workflow, testing
- Building Releases — Release script, code signing, pkg creation
- Troubleshooting — Common issues and solutions
MIT License. See LICENSE for details.
