clonebox 0.1.20__py3-none-any.whl → 0.1.22__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clonebox
3
- Version: 0.1.20
3
+ Version: 0.1.22
4
4
  Summary: Clone your workstation environment to an isolated VM with selective apps, paths and services
5
5
  Author: CloneBox Team
6
6
  License: Apache-2.0
@@ -85,6 +85,22 @@ CloneBox lets you create isolated virtual machines with only the applications, d
85
85
  - 🧪 **Configuration testing** - Validate VM settings and functionality
86
86
  - 📁 **App data sync** - Include browser profiles, IDE settings, and app configs
87
87
 
88
+ ## Use Cases
89
+
90
+ CloneBox excels in scenarios where developers need:
91
+ - Isolated sandbox environments for testing AI agents, edge computing simulations, or integration workflows without risking host system stability
92
+ - Reproducible development setups that can be quickly spun up with identical configurations across different machines
93
+ - Safe experimentation with system-level changes that can be discarded by simply deleting the VM
94
+ - Quick onboarding for new team members who need a fully configured development environment
95
+
96
+ ## What's Next
97
+
98
+ Project roadmap includes:
99
+ - Container runtime integration (Podman/Docker lightweight mode)
100
+ - Local dashboard for VM and container management
101
+ - Profile system for reusable configuration presets
102
+ - Proxmox export capabilities for production migration
103
+
88
104
 
89
105
 
90
106
 
@@ -95,6 +111,8 @@ Kluczowe komendy:
95
111
  - `clonebox` – interaktywny wizard (detect + create + start)
96
112
  - `clonebox detect` – skanuje usługi/apps/ścieżki
97
113
  - `clonebox clone . --user --run` – szybki klon bieżącego katalogu z użytkownikiem i autostartem
114
+ - `clonebox container up|ps|stop|rm` – lekki runtime kontenerowy (podman/docker)
115
+ - `clonebox dashboard` – lokalny dashboard (VM + containers)
98
116
 
99
117
  ### Dlaczego wirtualne klony workstation mają sens?
100
118
 
@@ -167,6 +185,11 @@ pip install -e .
167
185
  # Or directly
168
186
  pip install clonebox
169
187
  ```
188
+
189
+ Dashboard ma opcjonalne zależności:
190
+ ```bash
191
+ pip install "clonebox[dashboard]"
192
+ ```
170
193
  lub
171
194
  ```bash
172
195
  # Aktywuj venv
@@ -247,7 +270,35 @@ Simply run `clonebox` to start the interactive wizard:
247
270
 
248
271
  ```bash
249
272
  clonebox
250
- clonebox clone . --user --run --replace --base-image ~/ubuntu-22.04-cloud.qcow2
273
+
274
+ clonebox clone . --user --run --replace --base-image ~/ubuntu-22.04-cloud.qcow2 --disk-size-gb 30
275
+
276
+ clonebox test . --user --validate
277
+ clonebox test . --user --validate --require-running-apps
278
+ ```
279
+
280
+ ### Profiles (Reusable presets)
281
+
282
+ Profiles pozwalają trzymać gotowe presety dla VM/container (np. `ml-dev`, `web-dev`) i nakładać je na bazową konfigurację.
283
+
284
+ ```bash
285
+ # Przykład: uruchom kontener z profilem
286
+ clonebox container up . --profile ml-dev --engine podman
287
+
288
+ # Przykład: generuj VM config z profilem
289
+ clonebox clone . --profile ml-dev --user --run
290
+ ```
291
+
292
+ Domyślne lokalizacje profili:
293
+ - `~/.clonebox.d/<name>.yaml`
294
+ - `./.clonebox.d/<name>.yaml`
295
+ - wbudowane: `src/clonebox/templates/profiles/<name>.yaml`
296
+
297
+ ### Dashboard
298
+
299
+ ```bash
300
+ clonebox dashboard --port 8080
301
+ # http://127.0.0.1:8080
251
302
  ```
252
303
 
253
304
  The wizard will:
@@ -268,7 +319,10 @@ clonebox create --name my-dev-vm --config '{
268
319
  },
269
320
  "packages": ["python3", "nodejs", "docker.io"],
270
321
  "services": ["docker"]
271
- }' --ram 4096 --vcpus 4 --start
322
+ }' --ram 4096 --vcpus 4 --disk-size-gb 20 --start
323
+
324
+ # Create VM with larger root disk
325
+ clonebox create --name my-dev-vm --disk-size-gb 30 --config '{"paths": {}, "packages": [], "services": []}'
272
326
 
273
327
  # List VMs
274
328
  clonebox list
@@ -325,10 +379,45 @@ clonebox clone . --user --run
325
379
 
326
380
  # Access in VM:
327
381
  ls ~/.config/google-chrome # Chrome profile
328
- ls ~/.mozilla/firefox # Firefox profile
329
- ls ~/.config/JetBrains # PyCharm settings
382
+
383
+ # Firefox profile (Ubuntu często używa snap):
384
+ ls ~/snap/firefox/common/.mozilla/firefox
385
+ ls ~/.mozilla/firefox
386
+
387
+ # PyCharm profile (snap):
388
+ ls ~/snap/pycharm-community/common/.config/JetBrains
389
+ ls ~/.config/JetBrains
390
+ ```
391
+
392
+ ### Container workflow (podman/docker)
393
+
394
+ ```bash
395
+ # Start a dev container (auto-detect engine if not specified)
396
+ clonebox container up . --engine podman --detach
397
+
398
+ # List running containers
399
+ clonebox container ps
400
+
401
+ # Stop/remove
402
+ clonebox container stop <name>
403
+ clonebox container rm <name>
404
+ ```
405
+
406
+ ### Full validation (VM)
407
+
408
+ `clonebox test` weryfikuje, że VM faktycznie ma zamontowane ścieżki i spełnia wymagania z `.clonebox.yaml`.
409
+
410
+ ```bash
411
+ clonebox test . --user --validate
330
412
  ```
331
413
 
414
+ Walidowane kategorie:
415
+ - **Mounts** (9p)
416
+ - **Packages** (apt)
417
+ - **Snap packages**
418
+ - **Services** (enabled + running)
419
+ - **Apps** (instalacja + dostępność profilu: Firefox/PyCharm/Chrome)
420
+
332
421
  ### Testing and Validating VM Configuration
333
422
 
334
423
  ```bash
@@ -557,6 +646,9 @@ The fastest way to clone your current working directory:
557
646
  # Base OS image is automatically downloaded to ~/Downloads on first run
558
647
  clonebox clone .
559
648
 
649
+ # Increase VM disk size (recommended for GUI + large tooling)
650
+ clonebox clone . --user --disk-size-gb 30
651
+
560
652
  # Clone specific path
561
653
  clonebox clone ~/projects/my-app
562
654
 
@@ -687,8 +779,10 @@ clonebox clone . --network auto
687
779
  | `clonebox clone . --replace` | Replace existing VM (stop, delete, recreate) |
688
780
  | `clonebox clone . --user` | Clone in user session (no root) |
689
781
  | `clonebox clone . --base-image <path>` | Use custom base image |
782
+ | `clonebox clone . --disk-size-gb <gb>` | Set root disk size in GB (generated configs default to 20GB) |
690
783
  | `clonebox clone . --network user` | Use user-mode networking (slirp) |
691
784
  | `clonebox clone . --network auto` | Auto-detect network mode (default) |
785
+ | `clonebox create --config <json> --disk-size-gb <gb>` | Create VM from JSON config with specified disk size |
692
786
  | `clonebox start .` | Start VM from `.clonebox.yaml` in current dir |
693
787
  | `clonebox start . --viewer` | Start VM and open GUI window |
694
788
  | `clonebox start <name>` | Start existing VM by name |
@@ -701,6 +795,11 @@ clonebox clone . --network auto
701
795
  | `clonebox detect --yaml` | Output as YAML config |
702
796
  | `clonebox detect --yaml --dedupe` | YAML with duplicates removed |
703
797
  | `clonebox detect --json` | Output as JSON |
798
+ | `clonebox container up .` | Start a dev container for given path |
799
+ | `clonebox container ps` | List containers |
800
+ | `clonebox container stop <name>` | Stop a container |
801
+ | `clonebox container rm <name>` | Remove a container |
802
+ | `clonebox dashboard` | Run local dashboard (VM + containers) |
704
803
  | `clonebox status . --user` | Check VM health, cloud-init, IP, and mount status |
705
804
  | `clonebox status . --user --health` | Check VM status and run full health check |
706
805
  | `clonebox test . --user` | Test VM configuration (basic checks) |
@@ -721,6 +820,97 @@ clonebox clone . --network auto
721
820
 
722
821
  ## Troubleshooting
723
822
 
823
+ ### Critical: Insufficient Disk Space
824
+
825
+ If you install a full desktop environment and large development tools (e.g. `ubuntu-desktop-minimal`, `docker.io`, large snaps like `pycharm-community`/`chromium`), you may hit low disk space warnings inside the VM.
826
+
827
+ Recommended fix:
828
+ - Set a larger root disk in `.clonebox.yaml`:
829
+
830
+ ```yaml
831
+ vm:
832
+ disk_size_gb: 30
833
+ ```
834
+
835
+ You can also set it during config generation:
836
+ ```bash
837
+ clonebox clone . --user --disk-size-gb 30
838
+ ```
839
+
840
+ Notes:
841
+ - New configs generated by `clonebox clone` default to `disk_size_gb: 20`.
842
+ - You can override this by setting `vm.disk_size_gb` in `.clonebox.yaml`.
843
+
844
+ Workaround for an existing VM (host-side resize + guest filesystem grow):
845
+ ```bash
846
+ clonebox stop . --user
847
+ qemu-img resize ~/.local/share/libvirt/images/<vm-name>/root.qcow2 +10G
848
+ clonebox start . --user
849
+ ```
850
+
851
+ Inside the VM:
852
+ ```bash
853
+ sudo growpart /dev/vda 1
854
+ sudo resize2fs /dev/vda1
855
+ df -h /
856
+ ```
857
+
858
+ ### Known Issue: IBus Preferences crash
859
+
860
+ During validation you may occasionally see a crash dialog from **IBus Preferences** in the Ubuntu desktop environment.
861
+ This is an upstream issue related to the input method daemon (`ibus-daemon`) and obsolete system packages (e.g. `libglib2.0`, `libssl3`, `libxml2`, `openssl`).
862
+ It does **not** affect CloneBox functionality and the VM operates normally.
863
+
864
+ Workaround:
865
+ - Dismiss the crash dialog
866
+ - Or run `sudo apt upgrade` inside the VM to update system packages
867
+
868
+ ### Snap Apps Not Launching (PyCharm, Chromium, Firefox)
869
+
870
+ If snap-installed applications (e.g., PyCharm, Chromium) are installed but don't launch when clicked, the issue is usually **disconnected snap interfaces**. This happens because snap interfaces are not auto-connected when installing via cloud-init.
871
+
872
+ **New VMs created with updated CloneBox automatically connect snap interfaces**, but for older VMs or manual installs:
873
+
874
+ ```bash
875
+ # Check snap interface connections
876
+ snap connections pycharm-community
877
+
878
+ # If you see "-" instead of ":desktop", interfaces are NOT connected
879
+
880
+ # Connect required interfaces
881
+ sudo snap connect pycharm-community:desktop :desktop
882
+ sudo snap connect pycharm-community:desktop-legacy :desktop-legacy
883
+ sudo snap connect pycharm-community:x11 :x11
884
+ sudo snap connect pycharm-community:wayland :wayland
885
+ sudo snap connect pycharm-community:home :home
886
+ sudo snap connect pycharm-community:network :network
887
+
888
+ # Restart snap daemon and try again
889
+ sudo systemctl restart snapd
890
+ snap run pycharm-community
891
+ ```
892
+
893
+ **For Chromium/Firefox:**
894
+ ```bash
895
+ sudo snap connect chromium:desktop :desktop
896
+ sudo snap connect chromium:x11 :x11
897
+ sudo snap connect firefox:desktop :desktop
898
+ sudo snap connect firefox:x11 :x11
899
+ ```
900
+
901
+ **Debug launch:**
902
+ ```bash
903
+ PYCHARM_DEBUG=true snap run pycharm-community 2>&1 | tee /tmp/pycharm-debug.log
904
+ ```
905
+
906
+ **Nuclear option (reinstall):**
907
+ ```bash
908
+ snap remove pycharm-community
909
+ rm -rf ~/snap/pycharm-community
910
+ sudo snap install pycharm-community --classic
911
+ sudo snap connect pycharm-community:desktop :desktop
912
+ ```
913
+
724
914
  ### Network Issues
725
915
 
726
916
  If you encounter "Network not found" or "network 'default' is not active" errors:
@@ -1069,4 +1259,4 @@ qm set 9000 --boot c --bootdisk scsi0
1069
1259
 
1070
1260
  ## License
1071
1261
 
1072
- MIT License - see [LICENSE](LICENSE) file.
1262
+ Apache License - see [LICENSE](LICENSE) file.
@@ -0,0 +1,17 @@
1
+ clonebox/__init__.py,sha256=CyfHVVq6KqBr4CNERBpXk_O6Q5B35q03YpdQbokVvvI,408
2
+ clonebox/__main__.py,sha256=Fcoyzwwyz5-eC_sBlQk5a5RbKx8uodQz5sKJ190U0NU,135
3
+ clonebox/cli.py,sha256=vbJ65ShdXG1nGkQteCaFtDTas0L2RNV--aay2Qx-6F0,110765
4
+ clonebox/cloner.py,sha256=dX6K56goT3qZD3GOYjZBuAPMrAI0PriyFJWsJpQvyKc,46320
5
+ clonebox/container.py,sha256=tiYK1ZB-DhdD6A2FuMA0h_sRNkUI7KfYcJ0tFOcdyeM,6105
6
+ clonebox/dashboard.py,sha256=RhSPvR6kWglqXeLkCWesBZQid7wv2WpJa6w78mXbPjY,4268
7
+ clonebox/detector.py,sha256=aS_QlbG93-DE3hsjRt88E7O-PGC2TUBgUbP9wqT9g60,23221
8
+ clonebox/models.py,sha256=yBRUlJejpeJHZjvCYMGq1nXPFcmhLFxN-LqkEyveWsA,7913
9
+ clonebox/profiles.py,sha256=VaKVuxCrgyMxx-8_WOTcw7E8irwGxUPhZHVY6RxYYiE,2034
10
+ clonebox/validator.py,sha256=z4YuIgVnX6ZqfIdJtjKIFwZ-iWlRUnpX7gmWwq-Jr88,35352
11
+ clonebox/templates/profiles/ml-dev.yaml,sha256=MT7Wu3xGBnYIsO5mzZ2GDI4AAEFGOroIx0eU3XjNARg,140
12
+ clonebox-0.1.22.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
13
+ clonebox-0.1.22.dist-info/METADATA,sha256=MuI44ArtnU0ql1rF99Hf_4frTRHe7_AikJK9w2jk6tI,41591
14
+ clonebox-0.1.22.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
15
+ clonebox-0.1.22.dist-info/entry_points.txt,sha256=FES95Vi3btfViLEEoHdb8nikNxTqzaooi9ehZw9ZfWI,47
16
+ clonebox-0.1.22.dist-info/top_level.txt,sha256=LdMo2cvCrEcRGH2M8JgQNVsCoszLV0xug6kx1JnaRjo,9
17
+ clonebox-0.1.22.dist-info/RECORD,,
@@ -1,17 +0,0 @@
1
- clonebox/__init__.py,sha256=CyfHVVq6KqBr4CNERBpXk_O6Q5B35q03YpdQbokVvvI,408
2
- clonebox/__main__.py,sha256=Fcoyzwwyz5-eC_sBlQk5a5RbKx8uodQz5sKJ190U0NU,135
3
- clonebox/cli.py,sha256=08k0XvVdcExl6M64jqt7I_E04QVES3opXPexX9bYJec,103621
4
- clonebox/cloner.py,sha256=_dJrcg4FoPzAU49J-duJdp37GF-5hE3R_ipbwaw-kaQ,32679
5
- clonebox/container.py,sha256=tiYK1ZB-DhdD6A2FuMA0h_sRNkUI7KfYcJ0tFOcdyeM,6105
6
- clonebox/dashboard.py,sha256=RhSPvR6kWglqXeLkCWesBZQid7wv2WpJa6w78mXbPjY,4268
7
- clonebox/detector.py,sha256=aS_QlbG93-DE3hsjRt88E7O-PGC2TUBgUbP9wqT9g60,23221
8
- clonebox/models.py,sha256=Uxz9eHov2epJpNYbl0ejaOX91iMSjqdHskGdC8-smVk,7789
9
- clonebox/profiles.py,sha256=VaKVuxCrgyMxx-8_WOTcw7E8irwGxUPhZHVY6RxYYiE,2034
10
- clonebox/validator.py,sha256=LnQSZEdJXFGcJrTPxzS2cQUmAXucGeHDKwxrX632h_s,21188
11
- clonebox/templates/profiles/ml-dev.yaml,sha256=MT7Wu3xGBnYIsO5mzZ2GDI4AAEFGOroIx0eU3XjNARg,140
12
- clonebox-0.1.20.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
13
- clonebox-0.1.20.dist-info/METADATA,sha256=qOJSrz8MfPrZe3zO0Q16AfcdD_ybXx-YuVAs0_sij2g,35353
14
- clonebox-0.1.20.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
15
- clonebox-0.1.20.dist-info/entry_points.txt,sha256=FES95Vi3btfViLEEoHdb8nikNxTqzaooi9ehZw9ZfWI,47
16
- clonebox-0.1.20.dist-info/top_level.txt,sha256=LdMo2cvCrEcRGH2M8JgQNVsCoszLV0xug6kx1JnaRjo,9
17
- clonebox-0.1.20.dist-info/RECORD,,