{"id":13631974,"url":"https://github.com/churchers/vm-bhyve","last_synced_at":"2026-01-15T01:41:48.511Z","repository":{"id":34137798,"uuid":"37972270","full_name":"churchers/vm-bhyve","owner":"churchers","description":"Shell based, minimal dependency bhyve manager","archived":false,"fork":false,"pushed_at":"2025-04-08T12:41:08.000Z","size":1187,"stargazers_count":873,"open_issues_count":185,"forks_count":182,"subscribers_count":71,"default_branch":"master","last_synced_at":"2025-05-29T10:12:51.846Z","etag":null,"topics":["bhyve","freebsd","virtualization"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/churchers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":"freebsd-vm-bhyve","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2015-06-24T08:28:53.000Z","updated_at":"2025-05-24T08:27:05.000Z","dependencies_parsed_at":"2024-01-22T01:09:32.719Z","dependency_job_id":"c6193aad-5066-43de-bbed-06cda38ba8c9","html_url":"https://github.com/churchers/vm-bhyve","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/churchers/vm-bhyve","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/churchers%2Fvm-bhyve","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/churchers%2Fvm-bhyve/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/churchers%2Fvm-bhyve/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/churchers%2Fvm-bhyve/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/churchers","download_url":"https://codeload.github.com/churchers/vm-bhyve/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/churchers%2Fvm-bhyve/sbom","scorecard":{"id":282201,"data":{"date":"2025-08-11","repo":{"name":"github.com/churchers/vm-bhyve","commit":"6e91ff54e7a00f2b57c77c930e7ccc5090f68ba6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.1,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":8,"reason":"Found 12/14 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 2-Clause \"Simplified\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch '1.4-stable'","Warn: branch protection not enabled for branch '1.3-stable'","Warn: branch protection not enabled for branch '1.2-stable'","Warn: branch protection not enabled for branch '1.1-stable'","Warn: branch protection not enabled for branch '1.0-stable'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T16:11:11.885Z","repository_id":34137798,"created_at":"2025-08-17T16:11:11.885Z","updated_at":"2025-08-17T16:11:11.885Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28441031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:55:22.719Z","status":"ssl_error","status_checked_at":"2026-01-15T00:55:20.945Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bhyve","freebsd","virtualization"],"created_at":"2024-08-01T22:02:46.718Z","updated_at":"2026-01-15T01:41:48.490Z","avatar_url":"https://github.com/churchers.png","language":"Shell","funding_links":["https://opencollective.com/freebsd-vm-bhyve"],"categories":["Shell","Jails (configuration and deployment)"],"sub_categories":[],"readme":"\u003e [!CAUTION]\n\u003e Heads up: As of April 8, 2025, this repo is no longer maintained. After discussion in issue [#544](https://github.com/churchers/vm-bhyve/issues/544), the project has found a new home under the FreeBSD organization:\n\u003e\n\u003e 👉 https://github.com/freebsd/vm-bhyve\n\u003e\n\u003e If you’re looking to use, follow, or contribute to vm-bhyve, head over to the new repo!\n\n## vm-bhyve\n\nManagement system for FreeBSD bhyve virtual machines\n\nSome of the main features include:\n\n* Windows/UEFI support\n* Simple commands to create/start/stop bhyve instances\n* Simple configuration file format\n* Virtual switches supporting vlans \u0026 automatic device creation\n* ZFS support\n* FreeBSD/MidnightBSD/NetBSD/OpenBSD/Linux guest support\n* Automatic assignment of console devices to access guest console\n* Integration with rc.d startup/shutdown\n* Guest reboot handling\n* Designed with multiple compute nodes + shared storage in mind (NFS/iSCSI/etc)\n* Multiple datastores\n* VNC graphics \u0026 tmux support (1.1+ only. See wiki for instructions)\n* Dependency free**\n\n** Some additional packages may be required in certain circumstances -\n\n* `sysutils/grub2-bhyve` is required to run Linux or any other guests that need a Grub bootloader.\n* `sysutils/bhyve-firmware` is required to run UEFI guests\n* `sysutils/tmux` is needed to use tmux console access instead of cu/nmdm\n\n\n##### See the GitHub wiki for more information and examples.\n\nFor most users, I recommend using the version in ports (1.1+).\nMain development happens in the master branch on GitHub and it may contain broken or incomplete features.\n\n## Quick-Start\n\nA simple overview of the commands needed to install vm-bhyve and start a freebsd guest.\nSee the sections below for more in-depth details.\n\n    1. pkg install vm-bhyve\n    2. zfs create pool/vm\n    3. sysrc vm_enable=\"YES\"\n    4. sysrc vm_dir=\"zfs:pool/vm\"\n    5. vm init\n    6. cp /usr/local/share/examples/vm-bhyve/* /mountpoint/for/pool/vm/.templates/\n    7. vm switch create public\n    8. vm switch add public em0\n    9. vm iso https://download.freebsd.org/ftp/releases/ISO-IMAGES/14.2/FreeBSD-14.2-RELEASE-amd64-bootonly.iso\n    10. vm create myguest\n    11. vm install [-f] myguest FreeBSD-14.2-RELEASE-amd64-bootonly.iso\n    12. vm console myguest\n\n- [ ] Line 1\nInstall vm-bhvye\n\n- [ ] Line 2\nCreate a dataset for your virtual machines.\nIf you're not using ZFS, just create a normal directory.\n\n- [ ] Lines 3-4\nEnable vm-bhyve in /etc/rc.conf and set the dataset to use.\nIf not using ZFS, just set `$vm_dir=\"/my/vm/folder\"`.\n\n- [ ] Line 5\nRun the `vm init` command to create the required directories under $vm_dir and load kernel modules.\n\n- [ ] Line 6\nInstall the sample templates that come with vm-bhyve.\n\n- [ ] Lines 7-8\nCreate a virtual switch called 'public' and attach your network interface to it.\nReplace `em0` with whatever interface connects your machine to the network.\n\n- [ ] Line 9\nDownload a copy of FreeBSD from the ftp site.\n\n- [ ] Lines 10-12\nCreate a new guest using the `default.conf` template, run the installer and\nthen connect to its console. At this point proceed through the installation \nas normal. By specifying the `-f` option before the install command, the guest\nwill run directly on your terminal so the `console` command is not required. (Bear\nin mind that you won't get back to your terminal until the guest is fully shutdown)\n\n## Install\n\nDownload the latest release from GitHub, or install `sysutils/vm-bhyve`\n\nTo install, just run the following command inside the vm-bhyve source directory\n\n    # make install\n\nIf you want to run guests other than FreeBSD, you will need the grub2-bhyve package;\n\n    # pkg install grub2-bhyve\n\n## Initial configuration\n\nFirst of all, you will need a directory to store all your virtual machines and vm-bhyve configuration.\nIf you are not using ZFS, just create a normal directory:\n\n    # mkdir /somefolder/vm\n\nIf you are using ZFS, create a dataset to hold vm-bhyve data\n\n    # zfs create pool/vm\n\nNow update /etc/rc.conf to enable vm-bhyve, and tell it where your directory is\n\n    vm_enable=\"YES\"\n    vm_dir=\"/somefolder/vm\"\n\nOr with ZFS:\n\n    vm_enable=\"YES\"\n    vm_dir=\"zfs:pool/vm\"\n\nThis directory will be referred to as $vm_dir in the rest of this readme.\n\nNow run the following command to create the directories used to store vm-bhvye configuration and\nload any necessary kernel modules. This needs to be run once after each host reboot, which is\nnormally handled by the rc.d script\n\n    # vm init\n\n## Virtual machine templates\n\nWhen creating a virtual machine, you use a template which defines how much memory to give the guest,\nhow many cpu cores, and networking/disk configuration. The templates are all stored inside $vm_dir/.templates.\nTo install the sample templates, run the following command:\n\n    # cp /usr/local/share/examples/vm-bhyve/* /my/vm/path/.templates/\n\nIf you look inside the template files with a text editor, you will see they are very simple. You\ncan create as many templates as you like. For example you could have web-server.conf, containing the setting\nfor your web servers, or freebsd-large.conf for large FreeBSD guests, and so on. This is the contents of\nthe default template:\n\n    guest=\"freebsd\"\n    loader=\"bhyveload\"\n    cpu=1\n    memory=256M\n    disk0_type=\"virtio-blk\"\n    disk0_name=\"disk0.img\"\n    network0_type=\"virtio-net\"\n    network0_switch=\"public\"\n\nYou will notice that each template is set to create one network interface. You can easily add more network\ninterfaces by duplicating the two network configuration options and incrementing the number. In general you\nwill not want to change the type from 'virtio-net', but you will notice the first interface is set to connect \nto a switch called 'public'. See the next section for details on how to configure virtual switches.\n\nI recommend reading the man page or `sample-templates/config.sample` for a full list of supported template\noptions and a description of their purpose. Almost all bhyve functionality is supported and a large variety\nof network/storage configurations can be achieved.\n\n## Virtual Switches\n\nWhen a guest is started, each network interface is automatically connected to the virtual switch specified\nin the configuration file. By default all the sample templates connect to a switch called 'public', although\nyou can use any name. The following section shows how to create a switch called 'public', and configure various\nsettings:\n\n    # vm switch create public\n\nIf you just want to bridge guests to your physical network, add the appropriate real interface to the switch.\nObviously you will need to replace em0 here with the correct interface name on your system:\n\n    # vm switch add public em0\n\nIf you want guest traffic to be on a specific VLAN when leaving the host, specify a vlan number. To turn\noff vlans, just set the vlan number to 0:\n\n    # vm switch vlan public 10\n    # vm switch vlan public 0\n\nYou can view current switch configuration using the list command:\n\n    # vm switch list\n\n## Creating virtual machines\n\nUse one of the following command to create a new virtual machine:\n\n    # vm create testvm\n    # vm create -t templatename -s 50G testvm\n\nThe first example uses the default.conf template, and will create a 20GB disk image. The second\nexample specifies the templatename.conf template, and tells vm-bhyve to create a 50GB disk.\n\nYou will need an ISO to install the guest with, so download one using the iso command:\n\n    # vm iso https://download.freebsd.org/ftp/releases/ISO-IMAGES/14.2/FreeBSD-14.2-RELEASE-amd64-disc1.iso\n\nTo start a guest install, run the following command. vm-bhyve will run the machine in the background,\nso use the console command to connect to it and finish installation.\n\n    # vm install testvm FreeBSD-14.2-RELEASE-amd64-disc1.iso\n    # vm console testvm\n\nYou can also specify the foreground option to run the guest directly on your terminal:\n\n    # vm install -f testvm FreeBSD-14.2-RELEASE-amd64-disc1.iso\n\nOnce installation has finished, you can reboot the guest from inside the console and it will boot up into\nthe new OS (assuming installation was successful). Further reboots will work as expected and\nthe guest can be shutdown in the normal way. As the console uses the cu command, type ~+Ctrl-D to exit\nback to your host.\n\nThe following commands start and stop virtual machines:\n\n    # vm start testvm\n    # vm stop testvm\n\nThe basic configuration of each machine and state can be viewed using the list command:\n\n    # vm list\n    NAME            GUEST      LOADER      CPU    MEMORY    AUTOSTART    STATE\n    alpine          linux      default     1      512M      No           Stopped\n    c7              linux      default     1      512M      Yes [2]      Stopped\n    centos          linux      default     1      512M      No           Stopped\n    debian          linux      default     1      512M      No           Stopped\n    fbsd            freebsd    default     1      256M      No           Stopped\n    netbsd          generic    grub        1      256M      No           Stopped\n    openbsd         generic    grub        1      256M      No           Stopped\n    pf              freebsd    default     1      256M      Yes [1]      Stopped\n    ubuntu          linux      default     1      512M      No           Stopped\n    wintest         windows    default     2      2G        No           Running (2796)\n\nAll running machines can be stopped using the stopall command\n\n    # vm stopall\n\nOn host boot, vm-bhyve will use the 'vm startall' command to start all machines. You can\ncontrol which guests start automatically using the following variables in /etc/rc.conf:\n\n    vm_list=\"vm1 vm2\"\n    vm_delay=\"5\"\n\nThe first defines the list of machines to start on boot, and the order to start them. The second\nis the number of seconds to wait between starting each one. 5 seconds is the recommended setting,\nalthough a longer delay is useful if you have disk intensive guests and don't want them all booting\nat the same time.\n\nThere's also a command which opens a guest's configuration file in your default text editor, allowing\nyou to easily make changes to the configuration. Please note that changes only take effect after\na full shutdown and restart of the guest\n\n    # vm configure testvm\n\nSee the man page for a full description of all available commands.\n\n    # man vm\n\n## Using cloud images\n\nYou can use cloud images to create virtual machines. The `vm img` command will download the image to datastore and \nuncompress it if needed (.xz, .tar.gz, and .gz files are supported). The image should be in RAW or QCOW2 format.\nTo use this feature you'll need install qemu-tools package:\n\n    # pkg install qemu-tools\n\nTo launch FreeBSD using official cloud image:\n\n    # vm img https://download.freebsd.org/ftp/releases/VM-IMAGES/14.2-RELEASE/amd64/Latest/FreeBSD-14.2-RELEASE-amd64.raw.xz\n    # vm create -t freebsd-zvol -i FreeBSD-14.2-RELEASE-amd64.raw freebsd-cloud\n    # vm start freebsd-cloud\n\nTo list downloaded images:\n\n    # vm img\n    DATASTORE           FILENAME\n    default             CentOS-7-x86_64-GenericCloud-20180930_02.raw\n    default             debian-9-openstack-amd64.qcow2\n    default             Fedora-AtomicHost-28-1.1.x86_64.raw\n    default             FreeBSD-14.2-RELEASE-amd64.raw\n    default             xenial-server-cloudimg-amd64-uefi1.img\n\n## Using cloud-init\n\nvm-bhyve has basic support for providing cloud-init configuration to the guest. You can enable it with `-C` option\nto `vm create` command. You can also pass public SSH key to be injected into the guest with option `-k \u003cfile\u003e`.\nThe public key file can contain multiple public SSH keys, one per line, in the `authorized_keys` format.\n\nExample:\n\n    # vm create -t linux -i xenial-server-cloudimg-amd64-uefi1.img -C -k ~/.ssh/id_rsa.pub cloud-init-ubuntu\n    # vm start cloud-init-ubuntu\n    Starting cloud-init-ubuntu\n    * found guest in /zroot/vm/cloud-init-ubuntu\n    * booting...\n    # ssh ubuntu@192.168.0.91\n    The authenticity of host '192.168.0.91 (192.168.0.91)' can't be established.\n    ECDSA key fingerprint is SHA256:6s9uReyhsIXRv0dVRcBCKMHtY0kDYRV7zbM7ot6u604.\n    No matching host key fingerprint found in DNS.\n    Are you sure you want to continue connecting (yes/no)? yes\n    Warning: Permanently added '192.168.0.91' (ECDSA) to the list of known hosts.\n    Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-141-generic x86_64)\n\n## Adding custom disks\n\nScenario: If you have a vm on one zpool and would like to add a new virtual disk to it that resides on a different zpool.\n\nManually create a sparse-zvol (in this case 50G in size).\n\n    # zfs create -sV 50G -o volmode=dev \"zpool2/vm/yourvm/disk1\"\n\nAdd it to your vm config file.\nPlease note, for Windows guests the type will need to be `ahci-hd`, as it does not have virtio-blk drivers.\n\n    # vm configure yourvm\n\n    disk1_name=\"/dev/zvol/zpool2/vm/yourvm/disk1\"\n    disk1_type=\"virtio-blk\"\n    disk1_dev=\"custom\"\n\nRestart your vm.\n\n## Windows Support\n\nPlease see the Windows section in the [Wiki](https://github.com/churchers/vm-bhyve/wiki/Running-Windows)\n\n## Autocomplete\n\nIf you are using the default csh/tcsh shell built into FreeBSD, running the following command should allow\nautocomplete to work for all the currently supported functions. This is especially useful for viewing\nand completing guest \u0026 ISO file names. Please note that there's three occurrences of '/path/to/vm' which\nneed to be changed to the directory containing your virtual machines.\n\nTo make the autocomplete features available permanently, add the following to your `$HOME/.cshrc` file. Then either\nlogout/login, or run `source ~/.cshrc` to cause the `.cshrc` file to be reloaded.\n\n    complete vm \\\n     'p@1@(list create install start stop console configure reset poweroff destroy clone snapshot rollback add switch iso)@' \\\n     'n@create@n@' \\\n     'n@list@n@' \\\n     'n@iso@n@' \\\n     'n@switch@(list create add remove destroy vlan nat)@' \\\n     'N@switch@`sysrc -inqf /path/to/vm/.config/switch switch_list`@' \\\n     'N@install@`ls -1 /path/to/vm/.iso`@' \\\n     'N@nat@(off on)@' \\\n     'p@2@`ls -1 /path/to/vm | grep -v \"^\\.\" | grep -v \"^images\"`@'\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchurchers%2Fvm-bhyve","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchurchers%2Fvm-bhyve","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchurchers%2Fvm-bhyve/lists"}