{"id":35772945,"url":"https://github.com/eliocamp/pbs-workbench","last_synced_at":"2026-06-14T07:02:20.221Z","repository":{"id":312052257,"uuid":"1046064537","full_name":"eliocamp/pbs-workbench","owner":"eliocamp","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-08T13:18:07.000Z","size":88,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-08T14:22:42.195Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eliocamp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-28T06:15:45.000Z","updated_at":"2026-06-08T13:19:17.000Z","dependencies_parsed_at":"2025-09-25T01:13:37.496Z","dependency_job_id":"2bb231f1-3640-4091-a4c6-c72f0685b853","html_url":"https://github.com/eliocamp/pbs-workbench","commit_stats":null,"previous_names":["eliocamp/gadi-job","eliocamp/pbs-workbench"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/eliocamp/pbs-workbench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eliocamp%2Fpbs-workbench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eliocamp%2Fpbs-workbench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eliocamp%2Fpbs-workbench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eliocamp%2Fpbs-workbench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eliocamp","download_url":"https://codeload.github.com/eliocamp/pbs-workbench/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eliocamp%2Fpbs-workbench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34312137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"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":[],"created_at":"2026-01-07T04:50:40.190Z","updated_at":"2026-06-14T07:02:20.216Z","avatar_url":"https://github.com/eliocamp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pbs-workbench\n\nStart a PBS job that runs idle to ssh into and work interactively. \n\n## Installation\n\n[Install pipx](https://pipx.pypa.io/stable/how-to/install-pipx/).\n\n```sh\nmodule load python3/3.12.1   # The default version on gadi is too old\npython3 -m venv ~/.local/share/pipx-venv\n~/.local/share/pipx-venv/bin/pip install pipx\nln -s ~/.local/share/pipx-venv/bin/pipx ~/.local/bin/pipx\npipx ensurepath\n```\n\nAnd then install pbs-workbench with\n\n```sh\npipx install git+https://github.com/eliocamp/pbs-workbench.git\n```\n\nTo uninstall, run \n\n```sh\npipx unsintall pbs-workbench\n```\n\n## Quick Start\n\n0. **Create a profile** (first time only):\n\n```sh\njob profile\n```\n\nUse the UI to configure job requirements (CPUs, memory, walltime, etc.). \nIf you want to create more than one profile, you can run `job profile [profile]` to create a new profile with a particular name. \n\n1. **Start a job**:\n\n```sh\njob start\n```\n\nThis will start the `default` profile. You can start a different one with `job start [profile]`.\n\n2. **Monitor your job**:\n \nThe monitor starts automatically, showing job status and connection instructions. \nYou can safely close the monitor with `Ctrl + C` and restart it with \n\n```sh\njob monitor\n```\n\n3. **End your job**:\n\nTo end the job early use \n\n```sh\njob end\n```\n\n## Connecting to the workbench\n\nYou can connect to the workbench using SSH using the commands shown in the monitor. \n\nOnce the job starts, the monitor show something like this: \n\n```\n─────────────────────────────────────────────────────────────────────────────────────────\n                                   PBS Workbench Monitor\n───────────────────────────────────────────────────────────────────────────────────────── \n Job ID: 170258723.gadi-pbs                                                             \n Usage: 15 SU                                                                           \n Running on node gadi-cpu-clx-0428                                                      \n                                                                                        \n SSH command:                                                                           \n    ssh -X xxxxx@gadi-cpu-clx-0428                                                  \n SSH tunnel:                                                                            \n    ssh -L 8080:127.0.0.1:8080 xxxxx@gadi-cpu-clx-0428                                \n Remote-ssh:                                                                            \n    --remote ssh-remote+gadi-cpu-clx-0428 /home/565/xxxxx     \n                                                                                        \n         00:57:52                    Progress: 12 %                    07:02:08         \n            0.0GB                      Memory: 0 %                     32.0GB           \n                                        CPU: 0 %                                        \n─────────────────────────────────────────────────────────────────────────────────────────\n\n```\n\nThe monitor will tell you the status of the job and the compute node where it's running. \nIt will also show you convenient commands that you can copy to connect directly to the compute node via SSH, create an SSH tunnel or connect in VSCode with the Remote-SSH extension. \nThe bars wil show you your used and remaining time, as well as CPU usage and memory usage reported by `qstat`. \nIf you consistently underuse your CPU, consider requesting a smaller job. \n\n### SSH\n\nIn a terminal **in your local machine**: \n\nUse the SSH command to ssh into the node: \n\n```sh\nssh -X xxxxx@gadi-cpu-clx-0428\n```\n\n### VScode and similar IDEs\n\nTo use a IDE that supports the Remote SSH extension, like VSCode or its forks, first you need to set up the proxy jump [as explained here](https://21centuryweather.github.io/21st-Century-Weather-Software-Wiki/gadi/vscode.html#configure-ssh-only-once). \n\nAfter that setup, you can install the [companion extension](https://github.com/eliocamp/pbs-workbench-vscode). \nIt will add commands to start and stop Workbenches as well as a command to connect to it via Remote SSH extension. \n\nAlternatively, you can use the \"Remote-ssh\" command provided by the monitor. \nOpen a new terminal in your local machine, write your editor's command followed by the remote-ssh command.\n\nFor example, to use vscode, use \n\n```sh\ncode --remote ssh-remote+gadi-cpu-clx-0428 /home/565/xxxxx\n```\n\nFor Positron, use\n\n```sh\npositron --remote ssh-remote+gadi-cpu-clx-0428 /home/565/xxxxx\n```\n\nThis will open the editor, connect to the remote node, and open the current directory. \n\n### Jupyter notebook\n\nTo run a jupyter notebook first **in your local machine** run the SSH tunnel command:  \n\n\n```sh\nssh -L 8080:127.0.0.1:8080 xxxxx@gadi-cpu-clx-0428\n```\n\nThis will SSH into the node and now your terminal will be **in the remote**. \nNavigate to your project and start a jupyter notebook \n\n```sh\nmodule load jupyterlab/3.4.3-py3.9\njupyter notebook --no-browser --port=8080\n```\n\nThis will start the server up and end with this message\n\n```\n    To access the notebook, open this file in a browser:\n        file:///home/xxxx/xxxx/.local/share/jupyter/runtime/nbserver-275862-open.html\n    Or copy and paste one of these URLs:\n        http://localhost:8889/?token=49ba65820b79e0cfcf769f311cob5f70ffac2396f251ba7a\n     or http://127.0.0.1:8889/?token=49ba65820b79e0cfcf769f311cob5f70ffac2396f251ba7a\n```\n\nOpen any of the two last links in a browser and done!\n\n## More details \n\n### Project File\n\nPBS Workbench tracks your running job using the file `~/pbs-workbench/workbenches/00`, which contains the job ID of the current job. \nDon't edit or delete that file. \n\n### Log Files\n\nJob output is saved to `~/pbs-workbench/logs/` with files named:\n\n- `{job_id}.gadi-pbs.OU` (standard output)\n- `{job_id}.gadi-pbs.ER` (standard error)\n\n\n## Limitations\n\nCurrently, only one job can be run at a time. \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feliocamp%2Fpbs-workbench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feliocamp%2Fpbs-workbench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feliocamp%2Fpbs-workbench/lists"}