
YAML कंपोज़ फ़ाइलों का उपयोग करने वाला घोषणात्मक KVM/QEMU VM ऑर्केस्ट्रेशन टूल। बिना libvirt या XML के cloud-init, SSH, PCI पासथ्रू और इमेज सत्यापन के साथ मल्टी-VM स्टैक का प्रबंधन करता है।
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./docs/holos-lockup-dark.svg">
<img alt="holos" src="https://raw.githubusercontent.com/zeroecco/holos/HEAD/docs/holos-lockup-light.svg" width="340">
</picture>
KVM के लिए Docker compose। एक YAML फ़ाइल में मल्टी-VM स्टैक परिभाषित करें। न libvirt, न
XML, न distributed control plane।
वेबसाइट और दस्तावेज़: <https://zeroecco.github.io/holos/>
मूल इकाई VM है, कंटेनर नहीं। प्रत्येक वर्कलोड इंस्टेंस को अपना
kernel boundary, qcow2 overlay, cloud-init seed, और जनरेट किया गया SSH एक्सेस मिलता है।
## त्वरित शुरुआत
> Linux + `/dev/kvm` आवश्यक है। macOS बिल्ड ऑफ़लाइन कमांड जैसे
> `validate`, `import`, `images`, और `pull` चलाते हैं, लेकिन `up` और `run` के लिए KVM
> होस्ट चाहिए।
एक डिस्पोज़ेबल VM, बिना compose फ़ाइल:
```bash
holos run alpine
holos exec <printed-project-name>
holos down <printed-project-name>
```
एक सिंगल-सर्विस स्टैक जिसे आप `curl` कर सकते हैं। `holos.yaml` के रूप में सहेजें:
```yaml
name: hello
services:
web:
image: ubuntu:noble
ports:
- "8080:80"
cloud_init:
packages:
- nginx
write_files:
- path: /var/www/html/index.html
content: "hello from holos\n"
runcmd:
- systemctl restart nginx
```
```bash
holos up
curl localhost:8080
holos down hello
```
यह एक असली VM है जो cloud image बूट कर रही है, पैकेज इंस्टॉल कर रही है, कॉन्फ़िग लिख रही है,
और होस्ट पोर्ट फ़ॉरवर्ड कर रही है।
## इंस्टॉल
प्री-बिल्ट बाइनरीज़ हर
[GitHub release](https://github.com/zeroecco/holos/releases) के साथ संलग्न हैं:
```bash
TAG=v0.6.3
ASSET=holos_${TAG#v}_Linux_x86_64.tar.gz
BASE=https://github.com/zeroecco/holos/releases/download/$TAG
curl -LO $BASE/$ASSET
curl -LO $BASE/checksums.txt
grep " $ASSET$" checksums.txt | sha256sum -c -
gh attestation verify $ASSET --repo zeroecco/holos
sudo tar -xz -C /usr/local/bin -f $ASSET holos
holos version
holos doctor
```
रिलीज़ पेजों में SHA-256 चेकसम और साइन किए गए provenance के लिए GitHub artifact attestations शामिल हैं। प्रोडक्शन होस्ट पर बाइनरीज़ इंस्टॉल करने से पहले दोनों सत्यापित करें।
या सोर्स से बिल्ड करें:
```bash
go build -o bin/holos ./cmd/holos
go test ./...
bin/holos doctor
```
## CLI
```text
holos up [-f holos.yaml] [--locked] [--lockfile path] [--lock-timeout 5m|--no-wait]
सभी सेवाएँ शुरू करें
holos run [flags] <image> [-- cmd...] एक बार का VM लॉन्च करें
holos down <project> प्रोजेक्ट रोकें और हटाएँ
holos ps [-f holos.yaml] चल रहे प्रोजेक्ट सूचीबद्ध करें
holos start [-f holos.yaml] [svc] रुकी हुई सेवा या सभी सेवाएँ शुरू करें
holos stop [-f holos.yaml] [svc] एक सेवा या सभी सेवाएँ रोकें
holos console <project> [<inst>] सीरियल कंसोल से जोड़ें
holos exec <project> [<inst>] [-- cmd...]
इंस्टेंस में SSH करें
holos logs <project> [<svc|inst>] कंसोल लॉग दिखाएँ
holos inspect [-f holos.yaml] [project|instance]
स्थिति को JSON के रूप में निरीक्षण करें
holos validate [-f holos.yaml] compose फ़ाइल सत्यापित करें (--capacity/--network)
holos pull <image> cloud image खींचें
holos verify <image>|--all कैश्ड image चेकसम सत्यापित करें
holos images उपलब्ध images सूचीबद्ध करें
holos images lock -f holos.yaml [-o holos.images.lock]
प्रोजेक्ट image lockfile लिखें
holos snapshots {create|list|rm|restore|export} ... root snapshots प्रबंधित करें
holos volumes [-f holos.yaml] [--json]
नामित volumes सूचीबद्ध करें
holos volumes rm <project> <volume> डिटैच्ड नामित volume हटाएँ
holos volumes export <project> <volume> <path>
डिटैच्ड नामित volume निर्यात करें
holos volumes snapshot <project> <volume> <snapshot>
डिटैच्ड नामित volume का snapshot लें
holos volumes snapshots <project> <volume>
volume snapshots सूचीबद्ध करें
holos volumes snapshot-rm <project> <volume> <snapshot>
volume snapshot हटाएँ
holos volumes snapshot-restore <project> <volume> <snapshot>
volume snapshot पुनर्स्थापित करें
holos volumes snapshot-export <project> <volume> <snapshot> <path>
volume snapshot निर्यात करें
holos volumes resize [--shrink] <project> <volume> <size>
डिटैच्ड नामित volume का आकार बदलें
holos devices [--gpu] PCI devices और IOMMU groups सूचीबद्ध करें
holos completion <bash|zsh|fish> shell completion स्क्रिप्ट प्रिंट करें
holos doctor [--json] होस्ट निर्भरताएँ जाँचें
holos install [-f holos.yaml] [--system] [--enable]
systemd unit इंस्टॉल करें
holos uninstall [-f holos.yaml] [--system]
systemd unit हटाएँ
holos import [vm...] [--all] [--xml file] [--connect uri] [-o file]
virsh VMs को holos.yaml में बदलें
```
## दस्तावेज़
- [वेबसाइट](https://zeroecco.github.io/holos/): लैंडिंग पेज और रेंडर किए गए दस्तावेज़।
- [CLI गाइड](https://github.com/zeroecco/holos/blob/main/docs/cli.md): ad hoc VMs, `exec`, systemd install, virsh import,
और `doctor`।
- [Compose फ़ाइल](https://github.com/zeroecco/holos/blob/main/docs/compose.md): services, volumes, healthchecks,
networking, PCI passthrough, Dockerfile provisioning, और defaults।
- [JSON Schema](https://github.com/zeroecco/holos/blob/main/docs/holos.schema.json): `holos.yaml` के लिए एडिटर completion और validation।
- [उदाहरण](https://github.com/zeroecco/holos/blob/main/examples/README.md): README-शैली की व्याख्याओं के साथ रन करने योग्य और टेम्पलेट स्टैक।
- [अनुपलब्ध सुविधाएँ](https://github.com/zeroecco/holos/blob/main/docs/missing-features.md): प्राथमिकता वाले अंतराल जो
holos के single-host KVM compose लक्ष्य में फिट होते हैं।
- [विकास](https://github.com/zeroecco/holos/blob/main/docs/development.md): build, test, होस्ट आवश्यकताएँ, और
रिलीज़ प्रक्रिया।
- [सुरक्षा नीति](https://github.com/zeroecco/holos/blob/main/SECURITY.md): समर्थित संस्करण और निजी रिपोर्टिंग।
- [खतरा मॉडल / हार्डनिंग](https://github.com/zeroecco/holos/blob/main/docs/threat-model.md):
image verification, state permissions, locks, और परिचालन मार्गदर्शन।
- [योगदान](https://github.com/zeroecco/holos/blob/main/CONTRIBUTING.md): build, test, style, और PR परंपराएँ।
## उदाहरण
छोटे nginx उदाहरण से शुरू करें:
```bash
holos up -f examples/alpine-nginx/holos.yaml
curl localhost:8080
holos down alpine-nginx
```
examples डायरेक्टरी में Dockerfile provisioning, GPU passthrough,
और एक मल्टी-सर्विस स्टैक भी शामिल है जो `depends_on`, जनरेट किया गया config, और
replicas दिखाता है।
## होस्ट आवश्यकताएँ
- Linux with `/dev/kvm`
- `qemu-system-x86_64`
- `qemu-img`
- `cloud-localds`, `genisoimage`, `mkisofs`, या `xorriso` में से एक
- UEFI या PCI passthrough के लिए OVMF / edk2-ovmf firmware
- `holos exec` और healthchecks के लिए `ssh`
होस्ट जाँचने के लिए `holos doctor` चलाएँ।
## समस्या निवारण
### पहले बूट पर SSH रीसेट होता है
`kex_exchange_identification: read: Connection reset by peer` का मतलब आमतौर पर
यह है कि cloud-init अभी भी host keys रीजनरेट कर रहा है और sshd रीस्टार्ट कर रहा है। `holos exec`
डिफ़ॉल्ट रूप से 60s तक प्रतीक्षा करता है, लेकिन बहुत धीमे पहले बूट को एक और प्रयास या
`holos exec -w 5m <project>` की आवश्यकता हो सकती है।
### कंसोल `Login incorrect` दिखाता है
सीरियल कंसोल cloud-init के उपयोगकर्ता बनाने से पहले autologin का प्रयास कर सकता है।
कंसोल लॉग में `cloud-init ... finished` की प्रतीक्षा करें, फिर `holos exec` का उपयोग करें।
Cloud images आमतौर पर कंसोल पासवर्ड के साथ नहीं आते, और holos कोई पासवर्ड नहीं जोड़ता।
### macOS पर `up` विफल होता है
KVM एक Linux kernel सुविधा है। macOS बाइनरीज़ लेखन और
ऑफ़लाइन कमांड के लिए उपयोगी हैं, लेकिन `holos up` और `holos run` को Linux KVM
होस्ट पर निष्पादित होना चाहिए।
## गैर-लक्ष्य
holos Kubernetes नहीं है। यह multi-host clustering, live
migration, service meshes, overlay networks, schedulers, CRDs, या control plane
quorum को हल करने का प्रयास नहीं करता।
लक्ष्य KVM को single-host स्टैक के लिए व्यावहारिक बनाना है, बिना Kubernetes के
परिचालन स्वरूप को आयात किए।
## लाइसेंस
[Apache License, Version 2.0](https://github.com/zeroecco/holos/blob/main/LICENSE) के अंतर्गत लाइसेंस प्राप्त। एट्रिब्यूशन के लिए
[`NOTICE`](https://github.com/zeroecco/holos/blob/main/NOTICE) देखें।