A local-first web interface for managing Tart VMs on Apple Silicon macOS.
- List all local Tart VMs with status and IP
- Browse available macOS images from Cirrus Labs via GitHub API
- Pull new VMs from OCI registries (GitHub Container Registry)
- Clone VMs with optional auto-start
- Create new VMs from base images with custom CPU/memory/disk settings
- Start VMs in VNC mode (
--vnc --no-graphics) and show a clickablevnc://link - Stop VMs using
tart stop - Real-time task logging with WebSocket support
- Card + list views for browsing VMs
- VM categorization (base images vs working VMs)
- VM configuration details via
tart get --format json - GitHub token management for API access
- Simple, local-first design
- macOS 13+ (Ventura, Sonoma, or newer)
- Python 3.11+
- Tart installed and in PATH
-
Clone this repository
-
Install dependencies:
make install
-
Start the development server:
make dev
-
Open http://localhost:8000 in your browser
To browse and pull available macOS images from Cirrus Labs, you need to configure a GitHub personal access token:
-
Create a GitHub personal access token with
read:packagesscope:- Go to GitHub Settings > Developer settings > Personal access tokens
- Generate a new token (classic) with the
read:packagespermission
-
Configure the token via the UI:
- Open the web interface at http://localhost:8000
- Navigate to Settings
- Enter your GitHub token
-
Or configure it manually:
echo "your_github_token_here" > ~/.tartvm-manager/github_token chmod 600 ~/.tartvm-manager/github_token
Once configured, the UI will display available macOS images from the Cirrus Labs registry that you can pull directly.
See API.md for endpoint documentation.
- The API runs on 127.0.0.1 only
- A random API token is generated on first run
- Token is stored in
~/.tartvm-manager/tokenwith 0600 permissions (legacy.tokenis migrated if present) - All API requests require the
X-Local-Tokenheader - GitHub token (if configured) is stored in
~/.tartvm-manager/github_tokenwith 0600 permissions
- Backend: FastAPI (Python 3.11+)
- Frontend: Vanilla JS + HTML
- Task management: Background processes with logging
MIT