diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-24 12:49:57 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-24 12:49:57 +0300 |
| commit | 993b63cb32135bc8d45defd7d1549d83df200cad (patch) | |
| tree | 2be15d7481ec9b13af37e5fefca06027d1bf3a1b /README.md | |
| parent | bed1f24770ca1995e38278d4804b84f957ddc028 (diff) | |
feat(cli): replace --config with --vm 1|2|both, remove create-both/delete-both
- Drop single-VM default hyperstack-vm.toml and @config_path/@config_explicit machinery
- Add global --vm flag (default: 1) mapping to hyperstack-vm1.toml and/or hyperstack-vm2.toml
- Fold create-both and delete-both into create/delete --vm both
- Teach status, watch, test, model to accept --vm (default: 1)
- Update help text and README/AGENTS/fish abbreviations accordingly
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 50 |
1 files changed, 21 insertions, 29 deletions
@@ -78,7 +78,7 @@ Runs two A100 VMs concurrently — each serving a different model — with [Pi]( ## WireGuard setup -`hyperstack.rb` runs `wg1-setup.sh` automatically during `create` / `create-both`. +`hyperstack.rb` runs `wg1-setup.sh` automatically during `create` and `create --vm both`. This section explains the tunnel design for reference and manual troubleshooting. ### Tunnel design @@ -137,19 +137,11 @@ ssh ubuntu@<vm-public-ip> 'sudo systemctl start wg-quick@wg1' ```bash # Deploy both VMs in parallel, set up WireGuard + vLLM (~10 min) -ruby hyperstack.rb create-both +ruby hyperstack.rb create --vm both # Verify both VMs are working -ruby hyperstack.rb --config hyperstack-vm1.toml test -ruby hyperstack.rb --config hyperstack-vm2.toml test - -# Launch Pi coding agents — one per terminal (fish abbreviations from hypr.fish) -pi-hyperstack-coder # Qwen3-Coder-Next on VM1 -pi-hyperstack-qwen36 # Qwen3.6 27B FP8 on VM2 -pi-hyperstack-gemma4 # Gemma 4 31B on VM2 - -# Tear down both VMs -ruby hyperstack.rb delete-both +ruby hyperstack.rb test --vm 1 +ruby hyperstack.rb test --vm 2 ``` ## Using Pi @@ -270,8 +262,8 @@ No API key or account required. Uses DuckDuckGo's free HTML endpoint. Each VM has independent state files so they can be managed separately: ```bash -ruby hyperstack.rb --config hyperstack-vm1.toml status -ruby hyperstack.rb --config hyperstack-vm2.toml status +ruby hyperstack.rb --vm 1 status +ruby hyperstack.rb --vm 2 status ``` ## Switching models @@ -279,8 +271,8 @@ ruby hyperstack.rb --config hyperstack-vm2.toml status Each VM has named model presets in its TOML config. Hot-switch without reprovisioning: ```bash -ruby hyperstack.rb --config hyperstack-vm1.toml model switch qwen3-coder-next -ruby hyperstack.rb --config hyperstack-vm2.toml model switch qwen3-coder-next +ruby hyperstack.rb --vm 1 model switch qwen3-coder-next +ruby hyperstack.rb --vm 2 model switch qwen3-coder-next ``` Available presets (both VMs share the same set): @@ -301,23 +293,23 @@ Available presets (both VMs share the same set): ## CLI reference ``` -ruby hyperstack.rb [--config path] <command> [options] +ruby hyperstack.rb [--vm 1|2|both] <command> [options] Commands: create Deploy a new VM and run full provisioning - create-both Deploy VM1 + VM2 in parallel (uses hyperstack-vm1/vm2.toml) delete Destroy the tracked VM - delete-both Destroy both VM1 and VM2 status Show VM and WireGuard status watch Live dashboard: vLLM + GPU stats for all active VMs (refreshes every 5 s) test Run end-to-end inference tests (vLLM) model switch <preset> Hot-switch the running vLLM model -create / create-both options: - --replace Delete existing tracked VM before creating - --dry-run Print the plan without making changes - --vllm / --no-vllm Override config: enable/disable vLLM setup +create options: + --replace Delete existing tracked VM before creating + --dry-run Print the plan without making changes + --vllm / --no-vllm Override config: enable/disable vLLM setup --ollama / --no-ollama Override config: enable/disable Ollama setup + +All commands accept --vm 1|2|both (default: 1). ``` ## Configuration @@ -367,11 +359,11 @@ ruby hyperstack.rb delete ```bash # Deploy both VMs in parallel, set up tunnel and vLLM on each (~10 min) -ruby hyperstack.rb create-both +ruby hyperstack.rb create --vm both # Test each VM individually -ruby hyperstack.rb --config hyperstack-vm1.toml test -ruby hyperstack.rb --config hyperstack-vm2.toml test +ruby hyperstack.rb test --vm 1 +ruby hyperstack.rb test --vm 2 # Launch Pi coding agents — one per terminal pi-hyperstack-coder # fish abbreviation → Qwen3-Coder-Next on VM1 @@ -379,15 +371,15 @@ pi-hyperstack-qwen36 # fish abbreviation → Qwen3.6 27B FP8 on VM2 pi-hyperstack-gemma4 # fish abbreviation → Gemma 4 31B on VM2 # Tear down both VMs -ruby hyperstack.rb delete-both +ruby hyperstack.rb delete --vm both ``` ### Hot-switching models without reprovisioning ```bash # Switch the running vLLM container to a different model preset -ruby hyperstack.rb --config hyperstack-vm1.toml model switch qwen3-coder-next -ruby hyperstack.rb --config hyperstack-vm2.toml model switch qwen3-coder-next +ruby hyperstack.rb --vm 1 model switch qwen3-coder-next +ruby hyperstack.rb --vm 2 model switch qwen3-coder-next ``` See the [VM configuration](#vm-configuration) and [Switching models](#switching-models) |
