Using the CLI#
The Zoomy CLI (zoomy) mirrors the GUI workflow from the terminal. It shares the same card system and produces identical results.
Setup#
The CLI requires Node.js (v18+). From the repository root:
# Verify it works
node library/zoomy_cli/cli.js --help
For convenience, create an alias:
alias zoomy="node $(pwd)/library/zoomy_cli/cli.js"
Workflow#
1. Initialize a project#
mkdir my-simulation && cd my-simulation
zoomy start
This creates a .zoomy/ directory with project state.
2. Browse available cards#
zoomy overview # all tabs at a glance
zoomy list model # list model cards
zoomy list mesh # list mesh cards
zoomy list solver # list solver cards
zoomy show model sme-l0 # detailed card info
3. Select cards#
zoomy select model sme-l0 # SWE (SME L0) model
zoomy select mesh create-1d # 1D mesh
zoomy select solver numpy # NumPy solver
zoomy status # verify selections
4. Inspect the case#
zoomy case # prints the simulation case as JSON
Output:
{
"version": "1.0",
"model": {
"class_path": "zoomy_core.model.models.sme_model.SMEInviscid",
"init": {"level": 0},
"parameters": {}
},
"mesh": {"type": "create_1d", "domain": [0, 1], "n_cells": 100},
"solver": {"time_end": 0.1, "cfl": 0.45, "output_snapshots": 10}
}
5. Run the simulation#
Locally (no server needed):
zoomy run --local
This generates a Python script from the selected cards and executes it via python -c. Output goes to stdout.
With a backend server:
zoomy connect http://localhost:8080
zoomy run --wait # submit and block until complete
zoomy jobs # list all jobs
zoomy watch <job_id> # attach to a running job
6. Save the project#
zoomy save my-project.zip # export to ZIP
zoomy load my-project.zip # restore later
Session Management#
zoomy session # show active session
zoomy session new "2D test" # create and switch to new session
zoomy session switch "1D test" # switch back
zoomy session list # list all sessions
zoomy session rename "New name" # rename active session
Use Cases#
Batch simulation script#
#!/usr/bin/env bash
set -euo pipefail
zoomy start
zoomy select model sme-l0
zoomy select mesh create-1d
zoomy select solver numpy
zoomy run --local
See library/zoomy_cli/examples/tutorial-pipeline.sh for a complete example.
Parameter sweep (multiple sessions)#
zoomy start
zoomy select model sme-l0
zoomy select solver numpy
# Coarse mesh
zoomy session new "Coarse (50 cells)"
zoomy select mesh create-1d
# (modify mesh params via code edit when available)
zoomy run --local
# Fine mesh
zoomy session new "Fine (200 cells)"
zoomy select mesh create-1d
zoomy run --local
zoomy save convergence-study.zip
CI/CD integration#
# In a GitHub Actions step:
- name: Run simulation
run: |
node library/zoomy_cli/cli.js start
node library/zoomy_cli/cli.js select model sme-l0
node library/zoomy_cli/cli.js select mesh create-1d
node library/zoomy_cli/cli.js select solver numpy
node library/zoomy_cli/cli.js run --local
Command Reference#
Command |
Description |
|---|---|
|
Initialize project in current directory |
|
Show all cards and current selections |
|
List cards (tabs: model, mesh, solver, visu) |
|
Show card details |
|
Select a card |
|
Show current selections and session |
|
Print case JSON |
|
Run with local Python |
|
Submit to connected backend |
|
Submit and wait for completion |
|
Connect to a backend |
|
Disconnect a backend |
|
List connected backends |
|
Live progress for a job |
|
List all jobs |
|
Save project to ZIP |
|
Load project from ZIP |
|
Create new session |
|
Switch to session |
|
List sessions |
|
Rename active session |