{"id":49076924,"url":"https://github.com/simvia-tech/csauto","last_synced_at":"2026-04-20T10:10:33.346Z","repository":{"id":351742257,"uuid":"1206953011","full_name":"simvia-tech/csauto","owner":"simvia-tech","description":"csauto automates code_saturne CFD simulation campaigns. Generate hundreds of cases from a DOE CSV + a template and monitor everything from a web dashboard.","archived":false,"fork":false,"pushed_at":"2026-04-16T08:45:44.000Z","size":1751,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T10:33:50.671Z","etag":null,"topics":["automation","cfd","cfd-simulation","code-saturne","design-of-experiments","docker","hpc","monitoring","parametric-study","python","singularity","slurm"],"latest_commit_sha":null,"homepage":"https://simvia-tech.github.io/csauto/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simvia-tech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-10T12:25:41.000Z","updated_at":"2026-04-16T08:45:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/simvia-tech/csauto","commit_stats":null,"previous_names":["simvia-tech/csauto"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/simvia-tech/csauto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simvia-tech%2Fcsauto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simvia-tech%2Fcsauto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simvia-tech%2Fcsauto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simvia-tech%2Fcsauto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simvia-tech","download_url":"https://codeload.github.com/simvia-tech/csauto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simvia-tech%2Fcsauto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32042443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["automation","cfd","cfd-simulation","code-saturne","design-of-experiments","docker","hpc","monitoring","parametric-study","python","singularity","slurm"],"created_at":"2026-04-20T10:10:32.391Z","updated_at":"2026-04-20T10:10:33.339Z","avatar_url":"https://github.com/simvia-tech.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"assets/simvia.png\" alt=\"Simvia Logo\" width=\"50%\" /\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://simvia-tech.github.io/csauto/\"\u003e\u003cimg src=\"https://img.shields.io/badge/website-landing%20page-1057C8\" alt=\"Website\" /\u003e\u003c/a\u003e\n  \u003ca href=\"/\"\u003e\u003cimg src=\"https://img.shields.io/badge/version-0.1.0-blue\" alt=\"Version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/simvia-tech/csauto/actions/workflows/pr.yml\"\u003e\u003cimg src=\"https://github.com/simvia-tech/csauto/actions/workflows/pr.yml/badge.svg\" alt=\"CI-CD\" /\u003e\u003c/a\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-GPL%203.0-green\" alt=\"License\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# csauto\n\nThis project is in early development. Expect breaking changes until v1.0.\n\n## Description\n\n**csauto** automates [code_saturne](https://www.code-saturne.org/) CFD simulation campaigns.\nIt offers:\n\n- Generation of tens or hundreds of cases from one template + one CSV, in seconds\n- Local and Slurm job execution with status tracking\n- A web dashboard for monitoring residuals, probes, logs, and job status in real time\n- Restart from checkpoint, input file comparison, and cleanup utilities\n\nNo manual case duplication. No directory juggling. Just simulations.\n\n![csauto dashboard](assets/ui-overview.png)\n\n## Installation\n\ncsauto requires **Python 3.11+** and has **no external dependencies** for core features (pure standard library). The web dashboard requires a few extra packages.\n\n```bash\n# One-line install (clones to ~/.local/share/csauto, creates venv, adds alias)\nbash -c \"$(curl -fsSL https://raw.githubusercontent.com/simvia-tech/csauto/main/install.sh)\"\n\n# Reload your shell\nsource ~/.bashrc   # or: source ~/.zshrc\n```\n\nTo update an existing installation, re-run the same command — the script detects the existing install, pulls the latest changes, and reinstalls.\n\n\u003cdetails\u003e\n\u003csummary\u003eManual installation (for contributors or custom locations)\u003c/summary\u003e\n\n```bash\ngit clone https://github.com/simvia-tech/csauto.git ~/tools/csauto\ncd ~/tools/csauto\n\n# Option A: use the install script (creates venv, adds alias)\n./install.sh\n\n# Option B: manual setup\npython3 -m venv .venv \u0026\u0026 source .venv/bin/activate\npip install -e \".[web]\"\n```\n\nThe `csauto` command is available inside the venv. To use it globally, add an alias:\n\n```bash\necho \"alias csauto='$HOME/tools/csauto/.venv/bin/csauto'\" \u003e\u003e ~/.bashrc\n```\n\nTo install without a venv: `./install.sh --no-venv`\n\n\u003c/details\u003e\n\nVerify:\n\n```bash\ncsauto --help\n```\n\n### Prerequisites\n\nYou need at least one code_saturne runtime:\n\n| Runtime       | Requirement                                      |\n|---------------|--------------------------------------------------|\n| `native`      | `code_saturne` binary in PATH or set via config  |\n| `singularity` | Apptainer/Singularity + a `.sif` image           |\n| `docker`      | Docker engine + image                            |\n\n## Usage\n\n\u003e **First time?** Follow the [Quickstart guide](docs/quickstart.md) for a complete walkthrough from zero to a running campaign.\n\n```bash\n# 1. Generate cases from your DOE and template\ncsauto prepare doe.csv TEMPLATE RUNS\n\n# 2. Validate environment\ncsauto doctor RUNS\n\n# 3. Launch the web dashboard\ncsauto serve RUNS --host 127.0.0.1 --port 8000\n```\n\nOpen [http://127.0.0.1:8000](http://127.0.0.1:8000), then launch runs from the **Status** panel: `Ctrl+A` → **Run Selected**.\n\n### Example project layout\n\n```\nmy-campaign/\n├── csauto.toml\n├── doe.csv\n├── TEMPLATE/\n│   └── DATA/\n│       └── setup.xml      ← uses {u_inlet}, {turbulence_model}, etc.\n└── RUNS/                  ← generated by csauto prepare\n    ├── registry.json\n    ├── case0001/\n    └── case0002/\n```\n\n### CLI commands\n\nThe web UI (`csauto serve`) is the primary interface for runtime monitoring and operations — launching, killing, restarting, comparing, and inspecting cases. The CLI covers initial setup (`prepare`, `doctor`), data export (`residuals`, `perf`), and offers terminal alternatives for common actions.\n\n| Command     | Description                                       | UI equivalent              |\n|-------------|---------------------------------------------------|----------------------------|\n| `prepare`   | Generate cases from a DOE CSV and a template      | — (CLI only)               |\n| `doctor`    | Validate runtime environment and configuration    | — (CLI only)               |\n| `serve`     | Start the web monitoring dashboard                | — (starts the UI)          |\n| `run`       | Launch cases locally or on Slurm (`--n`, `--nt` required) | Status → Run Selected |\n| `status`    | Show case status in the terminal                  | Status panel               |\n| `tail`      | Stream a case log file (like `tail -f`)           | Log Tail panel             |\n| `residuals` | Export residuals data and/or SVG plot             | Residuals Plot panel       |\n| `perf`      | Extract performance metrics from logs             | Timing Snapshot panel      |\n| `cleanup`   | Remove old RESU dirs, logs (`--prune-resu`, etc.) | Status → Clean Selected    |\n\nThe web UI also provides features beyond the CLI: kill running cases, edit case files, add notes, mark convergence, compare runs side-by-side, plot probes/profiles, and scan logs for recent errors.\n\n## Troubleshooting\n\nRun `csauto doctor RUNS` to diagnose common issues (missing runtimes, broken paths, configuration errors).\n\nFor more details, see the [troubleshooting guide](docs/troubleshooting.md).\n\n## Telemetry\n\ncsauto collects anonymous usage statistics to help us understand how the tool is used and prioritize improvements. No personal data, file paths, simulation data, or case names are ever sent.\n\n**What is collected:**\n\n- A random anonymous identifier (persistent across sessions)\n- csauto version\n- Timezone offset\n- Runtime type (docker, singularity, or native)\n- Event type (install or serve session)\n\n**When it is sent:**\n\n- Once during first install\n- Once when `csauto serve` starts\n- A daily heartbeat while the web server is running\n\n**How to opt out:**\n\n```bash\n# Via the CLI\ncsauto disable-telemetry\n\n# During installation\n./install.sh --no-telemetry\n\n# Via the web UI\n# Open Settings (gear icon) and uncheck \"Send anonymous usage statistics\"\n```\n\nTo re-enable: `csauto enable-telemetry`\n\n## Documentation\n\n- [Quickstart](docs/quickstart.md)\n- [Core concepts](docs/concepts.md)\n- [Web UI guide](docs/web-ui.md)\n- [CLI reference](docs/cli.md)\n- [Configuration](docs/config.md)\n- [DOE format](docs/doe-format.md)\n- [Run lifecycle](docs/run-lifecycle.md)\n- [HTTP API](docs/api.md)\n- [Task cookbook](docs/task-cookbook.md)\n- [Limitations](docs/limitations.md)\n\n## Contributing\n\nPlease check out our [CONTRIBUTING.md](./CONTRIBUTING.md) file if you want to contribute to the project.\n\nThank you to all our contributors :\n\n- Ulysse Bouchet - [Email](mailto:ulysse.bouchet@simvia.tech)\n- Florian Hermet - [Email](mailto:florian.hermet@simvia.tech)\n\n## Development\n\n```bash\n# Install with dev + web dependencies\npip install -e \".[dev,web]\"\n\n# Run full test suite\npytest -q\n\n# Run by scope\npytest tests/unit -q\npytest tests/integration -q\npytest tests/web -q\n\n# Run a single test\npytest tests/unit/test_foo.py::test_bar -q\n```\n\n### Frontend development\n\nThe web dashboard is a SvelteKit app in `frontend/`. The pre-built output (`frontend/dist/`) is committed, so end users don't need Node.js.\n\nTo work on the frontend:\n\n```bash\n# Install dependencies (requires Node.js and pnpm)\ncd frontend \u0026\u0026 pnpm install\n\n# Start the dev server (hot reload, proxies /api to the backend)\npnpm dev\n\n# In another terminal, start the backend\ncsauto serve RUNS\n\n# Build for production (updates frontend/dist/)\npnpm build\n```\n\nSee [architecture](docs/architecture.md) for an overview of the codebase.\n\n## See Also\n\n- [code_saturne](https://www.code-saturne.org/) — the open-source CFD solver csauto automates\n- [Simvia's website](https://simvia.tech)\n\n## License\n\nThis project is licensed under the GNU General Public License version 3 (GPL-3.0).\nSee the full license text in the [LICENSE](./LICENSE) file.\n\n- **Summary:** You are free to use, copy, modify, and redistribute this software.\n- **Conditions:** Redistributions and derivative works must be licensed under GPL-3.0 and include source or a written offer to provide the source.\n- **More information:** https://www.gnu.org/licenses/gpl-3.0.en.html\n\n## Contact Us\n\nContact us at [ulysse.bouchet@simvia.tech](mailto:ulysse.bouchet@simvia.tech) or [florian.hermet@simvia.tech](mailto:florian.hermet@simvia.tech).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimvia-tech%2Fcsauto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimvia-tech%2Fcsauto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimvia-tech%2Fcsauto/lists"}