Skip to content

Repository files navigation

BarkVisor

BarkVisor

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 daemon for managing QEMU virtual machines through a web UI.

Platforms:macOS (.pkg / HVF) and Linux (packages + systemd / KVM). See Linux install.

In the UI, the machine running BarkVisor is a Device in your Home — not a node or a cluster. Product terminology.

Features

  • 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 networking with port forwarding; bridged networking on macOS (socket_vmnet) and Linux (host bridge + qemu-bridge-helper)
  • OS image library with HTTP download and auto-decompression (arm64 and x86_64)
  • Live CPU, memory, and disk I/O metrics
  • Serial console (wterm) 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
  • USB passthrough (macOS and Linux via usb-host)

Prerequisites

macOS (primary packaging)

  • macOS 26+ (Apple Silicon only for HVF guests today)
  • 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 swiftformat

Linux

Install a prebuilt.deb / .rpm / tarball from Releases, plus distro QEMU/firmware. Full steps: Installation (Linux).

# Example (Debian/Ubuntu amd64) after installing QEMU/OVMF from the distro:
sudo dpkg -i barkvisor_*_amd64.deb
sudo systemctl enable --now barkvisor.service
# → http://localhost:7777

Quick Start

1. Build and run the backend

swift build
swift run BarkVisorApp

The server starts on http://localhost:7777. On first launch a web-based setup wizard creates your admin account.

2. Run the frontend (development)

cd frontend
bun install
bun run dev

The Vite dev server starts with hot reload, proxying API calls to the backend.

3. Production frontend build

cd frontend
bun run build

The built files go into Sources/BarkVisor/Resources/frontend/ and are served by the backend directly.

Development

Use mise (see mise.toml) or raw Swift tools:

mise run build # swift build -c release
mise run test# swift test
mise run lint # swiftlint + swiftformat --lint
swiftformat Sources/ Tests/ # apply formatting# CI equivalent: mise run lint && mise run test

Frontend E2E tests

cd frontend
bun run cy:open # Interactive Cypress
bun run test:e2e # Headless Cypress

Installation

macOS

Download 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 everything

Linux

Download .deb / .rpm / .tar.gz from the releases page and follow Installation (Linux). Building packages from source is optional (see that guide or Development).

Release Build

The 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 verificationexport APPLE_TEAM_ID=YOUR_TEAM_ID
# Optional: signing identity for distributionexport SIGNING_IDENTITY="Developer ID Application: Your Name (TEAMID)"
./scripts/build-release.sh

Options:

FlagEffect
--skip-depsReuse cached dependency builds
--no-signSkip code signing
--no-pkgSkip installer .pkg creation
--require-notarizeFail if notarization credentials are missing

The output is build/stage/ (install layout), build/BarkVisor-<version>-standalone.tar.gz, and build/BarkVisor-<version>.pkg.

Configuration

macOS: installed daemon data is under /var/lib/barkvisor/; development builds use ~/Library/Application Support/BarkVisor/.
Linux: development default is ~/.local/share/barkvisor; installed layout uses /var/lib/barkvisor (see Linux guide). Override with BARKVISOR_DATA_DIR / BARKVISOR_PORT / BARKVISOR_FRONTEND_DIR.

PathContents
db.sqliteApplication database
jwt-secretAuto-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.

Documentation

Website (landing + docs, one deploy): cd website && bun install && bun run buildwebsite/dist/. Deploy: bun run deploy (Cloudflare Pages). See website/README.md.

Getting Started (source Markdown)

License

MIT License. See LICENSE for details.

About

QEMU virtualization, with a modern web interface.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages