{"id":33507672,"url":"https://github.com/lifebit-ai/cloudos-cli","last_synced_at":"2026-04-02T13:23:54.612Z","repository":{"id":37240167,"uuid":"397563372","full_name":"lifebit-ai/cloudos-cli","owner":"lifebit-ai","description":"Python library and Command Line Interface for interacting with Lifebit Applications","archived":false,"fork":false,"pushed_at":"2025-11-21T11:01:32.000Z","size":4892,"stargazers_count":48,"open_issues_count":57,"forks_count":0,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-11-21T11:22:44.539Z","etag":null,"topics":["cloudos","lifebit"],"latest_commit_sha":null,"homepage":"https://lifebit-ai.github.io/cloudos-cli/","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/lifebit-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2021-08-18T10:39:07.000Z","updated_at":"2025-11-21T11:00:47.000Z","dependencies_parsed_at":"2023-02-10T02:45:28.479Z","dependency_job_id":"6b5d787c-6d04-4475-ad4c-e07ee2aaf117","html_url":"https://github.com/lifebit-ai/cloudos-cli","commit_stats":null,"previous_names":[],"tags_count":101,"template":false,"template_full_name":null,"purl":"pkg:github/lifebit-ai/cloudos-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifebit-ai%2Fcloudos-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifebit-ai%2Fcloudos-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifebit-ai%2Fcloudos-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifebit-ai%2Fcloudos-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lifebit-ai","download_url":"https://codeload.github.com/lifebit-ai/cloudos-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifebit-ai%2Fcloudos-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286079811,"owners_count":27282121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-26T02:00:06.075Z","response_time":193,"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":["cloudos","lifebit"],"created_at":"2025-11-26T03:04:05.033Z","updated_at":"2026-04-02T13:23:54.595Z","avatar_url":"https://github.com/lifebit-ai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cloudos-cli\n\n[![CI_tests](https://github.com/lifebit-ai/cloudos-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/lifebit-ai/cloudos-cli/actions/workflows/ci.yml)\n\nPython package for interacting with CloudOS\n\n---\n\n## Table of Contents\n\n- [cloudos-cli](#cloudos-cli)\n  - [Table of Contents](#table-of-contents)\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n    - [From PyPI](#from-pypi)\n    - [Docker Image](#docker-image)\n    - [From Github](#from-github)\n  - [Usage](#usage)\n  - [Configuration](#configuration)\n    - [Configure Default Profile](#configure-default-profile)\n    - [Configure Named Profile](#configure-named-profile)\n    - [Change the Default Profile](#change-the-default-profile)\n    - [List Profiles](#list-profiles)\n    - [Remove Profile](#remove-profile)\n  - [Commands](#commands)\n    - [Configure](#configure)\n    - [Project](#project)\n      - [List Projects](#list-projects)\n      - [Create Projects](#create-projects)\n    - [Queue](#queue)\n      - [List Queues](#list-queues)\n    - [Workflow](#workflow)\n      - [List All Available Workflows](#list-all-available-workflows)\n      - [Import a Nextflow Workflow](#import-a-nextflow-workflow)\n    - [Nextflow Jobs](#nextflow-jobs)\n      - [Submit a Job](#submit-a-job)\n      - [Check Job Status](#check-job-status)\n      - [List Jobs](#list-jobs)\n      - [Get Job Results](#get-job-results)\n      - [Clone or Resume Job](#clone-or-resume-job)\n      - [Abort Jobs](#abort-jobs)\n        - [Basic Usage](#basic-usage)\n        - [Force Abort](#force-abort)\n        - [Additional Options](#additional-options)\n      - [Get Job Details](#get-job-details)\n      - [Get Job Workdir](#get-job-workdir)\n      - [Get Job Logs](#get-job-logs)\n      - [Get Job Costs](#get-job-costs)\n      - [Get Job Related Analyses](#get-job-related-analyses)\n      - [Delete Job Results](#delete-job-results)\n      - [Archive Jobs](#archive-jobs)\n      - [Unarchive Jobs](#unarchive-jobs)\n    - [Bash Jobs](#bash-jobs)\n      - [Send Array Job](#send-array-job)\n      - [Submit a Bash Array Job](#submit-a-bash-array-job)\n        - [Options](#options)\n          - [Array File](#array-file)\n          - [Separator](#separator)\n          - [List Columns](#list-columns)\n          - [Array File Project](#array-file-project)\n          - [Disable Column Check](#disable-column-check)\n          - [Array Parameter](#array-parameter)\n          - [Custom Script Path](#custom-script-path)\n          - [Custom Script Project](#custom-script-project)\n      - [Use multiple projects for files in `--parameter` option](#use-multiple-projects-for-files-in---parameter-option)\n    - [Interactive Sessions](#interactive-sessions)\n      - [List Interactive Sessions](#list-interactive-sessions)\n      - [Create Interactive Session](#create-interactive-session)\n      - [Get Interactive Session Status](#get-interactive-session-status)\n      - [Pause Interactive Session](#pause-interactive-session)\n      - [Resume Interactive Session](#resume-interactive-session)\n    - [Datasets](#datasets)\n      - [List Files](#list-files)\n      - [Move Files](#move-files)\n      - [Rename Files](#rename-files)\n      - [Copy Files](#copy-files)\n      - [Link S3 Folders to Interactive Analysis](#link-s3-folders-to-interactive-analysis)\n      - [Create Folder](#create-folder)\n      - [Remove Files or Folders](#remove-files-or-folders)\n    - [Link](#link)\n      - [Link Folders to Interactive Analysis](#link-folders-to-interactive-analysis)\n    - [Procurement](#procurement)\n      - [List Procurement Images](#list-procurement-images)\n      - [Set Procurement Organization Image](#set-procurement-organization-image)\n      - [Reset Procurement Organization Image](#reset-procurement-organization-image)\n    - [Cromwell and WDL Pipeline Support](#cromwell-and-wdl-pipeline-support)\n      - [Manage Cromwell Server](#manage-cromwell-server)\n      - [Run WDL Workflows](#run-wdl-workflows)\n  - [Python API Usage](#python-api-usage)\n      - [Running WDL pipelines using your own scripts](#running-wdl-pipelines-using-your-own-scripts)\n  - [Unit Testing](#unit-testing)\n\n---\n\n## Requirements\n\nCloudOS CLI requires Python 3.9 or higher and several key dependencies for API communication, data processing, and user interface functionality.\n\n```\nclick\u003e=8.0.1\npandas\u003e=1.3.4\nnumpy\u003e=1.26.4\nrequests\u003e=2.26.0\nrich_click\u003e=1.8.2\n```\n\n---\n\n## Installation\n\nCloudOS CLI can be installed in multiple ways depending on your needs and environment. Choose the method that best fits your workflow.\n\n### From PyPI\n\nThe repository is also available from [PyPI](https://pypi.org/project/cloudos-cli/):\n\n```bash\npip install cloudos-cli\n```\n\nTo update CloudOS CLI to the latest version using pip, you can run:\n\n```bash\npip install --upgrade cloudos-cli\n```\n\nTo check your current version:\n\n```bash\ncloudos --version\n```\n\n### Docker Image\n\nIt is recommended to install it as a docker image using the `Dockerfile` and the `environment.yml` files provided.\n\nTo run the existing docker image at `quay.io`:\n\n```bash\ndocker run --rm -it quay.io/lifebitaiorg/cloudos-cli:latest\n```\n\n\n### From Github\n\nYou will need Python \u003e= 3.9 and pip installed.\n\nClone the repo and install it using pip:\n\n```bash\ngit clone https://github.com/lifebit-ai/cloudos-cli\ncd cloudos-cli\npip install -r requirements.txt\npip install .\n```\n\n\u003e NOTE: To be able to call the `cloudos` executable, ensure that the local clone of the `cloudos-cli` folder is included in the `PATH` variable, using for example the command `export PATH=\"/absolute/path/to/cloudos-cli:$PATH\"`.\n\n---\n\n## Usage\n\nCloudOS CLI can be used both as a command-line interface tool for interactive work and as a Python package for scripting and automation.\n\nTo get general information about the tool:\n\n```bash\ncloudos --help\n```\n```console\n                                                                                                                        \n Usage: cloudos [OPTIONS] COMMAND [ARGS]...                                                                             \n                                                                                                                        \n CloudOS python package: a package for interacting with CloudOS.                                                        \n                                                                                                                        \n╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│ --debug        Show detailed error information and tracebacks                                                        │\n│ --version      Show the version and exit.                                                                            │\n│ --help         Show this message and exit.                                                                           │\n╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│ bash               CloudOS bash functionality.                                                                       │\n│ configure          CloudOS configuration.                                                                            │\n│ cromwell           Cromwell server functionality: check status, start and stop.                                      │\n│ datasets           CloudOS datasets functionality.                                                                   │\n│ job                CloudOS job functionality: run, check and abort jobs in CloudOS.                                  │\n│ procurement        CloudOS procurement functionality.                                                                │\n│ project            CloudOS project functionality: list and create projects in CloudOS.                               │\n│ queue              CloudOS job queue functionality.                                                                  │\n│ workflow           CloudOS workflow functionality: list and import workflows.                                        │\n╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n```\n\nThis will tell you the implemented commands. Each implemented command has its own subcommands with its own `--help`:\n\n```bash\ncloudos job list --help\n```\n```console                                                                                                      Usage: cloudos job list [OPTIONS]                                                                          \n                                                                                                            \n Collect workspace jobs from a CloudOS workspace in CSV or JSON format.                                     \n                                                                                                            \n╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────╮\n│ *  --apikey                    -k  TEXT        Your CloudOS API key [required]                           │\n│ *  --cloudos-url               -c  TEXT        The CloudOS url you are trying to access to.              │\n│                                                Default=https://cloudos.lifebit.ai.                       │\n│                                                [required]                                                │\n│ *  --workspace-id                  TEXT        The specific CloudOS workspace id. [required]             │\n│    --output-basename               TEXT        Output file base name to save jobs list. Default=joblist  │\n│    --output-format                 [csv|json]  The desired file format (file extension) for the output.  │\n│                                                For json option --all-fields will be automatically set to │\n│                                                True. Default=csv.                                        │\n│    --all-fields                                Whether to collect all available fields from jobs or just │\n│                                                the preconfigured selected fields. Only applicable when   │\n│                                                --output-format=csv. Automatically enabled for json       │\n│                                                output.                                                   │\n│    --last-n-jobs                   TEXT        The number of last workspace jobs to retrieve. You can    │\n│                                                use 'all' to retrieve all workspace jobs. Default=30.     │\n│    --page                          INTEGER     Response page to retrieve. If --last-n-jobs is set, then  │\n│                                                --page value corresponds to the first page to retrieve.   │\n│                                                Default=1.                                                │\n│    --archived                                  When this flag is used, only archived jobs list is        │\n│                                                collected.                                                │\n│    --filter-status                 TEXT        Filter jobs by status (e.g., completed, running, failed,  │\n│                                                aborted).                                                 │\n│    --filter-job-name               TEXT        Filter jobs by job name ( case insensitive ).             │\n│    --filter-project                TEXT        Filter jobs by project name.                              │\n│    --filter-workflow               TEXT        Filter jobs by workflow/pipeline name.                    │\n│    --last                                      When workflows are duplicated, use the latest imported    │\n│                                                workflow (by date).                                       │\n│    --filter-job-id                 TEXT        Filter jobs by specific job ID.                           │\n│    --filter-only-mine                          Filter to show only jobs belonging to the current user.   │\n│    --filter-queue                  TEXT        Filter jobs by queue name. Only applies to jobs running   │\n│                                                in batch environment. Non-batch jobs are preserved in     │\n│                                                results.                                                  │\n│    --filter-owner                  TEXT        Filter jobs by owner username.                            │\n│    --verbose                                   Whether to print information messages or not.             │\n│    --disable-ssl-verification                  Disable SSL certificate verification. Please, remember    │\n│                                                that this option is not generally recommended for         │\n│                                                security reasons.                                         │\n│    --ssl-cert                      TEXT        Path to your SSL certificate file.                        │\n│    --debug                                     Show detailed error information and tracebacks               │\n│    --profile                       TEXT        Profile to use from the config file                          │\n│    --help                                      Show this message and exit.                                  │\n╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n```\n\nIn the same way, each implemented command has its own subcommands with its own `--debug` flag, that will print the full traceback for detailed error debugging. When this flag is not activated, the errors are presented in short descriptive format.\n\n---\n\n## Configuration\n\nCloudOS CLI uses a profile-based configuration system to store your credentials and settings securely. This eliminates the need to provide authentication details with every command and allows you to work with multiple CloudOS environments.\n\nConfiguration will be saved in the $HOME path folder regardless of operating system. Here, a new folder named `.cloudos` will be created, with files `credentials` and `config` also being created. The structure will look like:\n\n```console\n$HOME\n    └── .cloudos/\n          ├── credentials     # Stores API keys\n          └── config          # Stores all other parameters\n```\n\n### Configure Default Profile\n\nTo facilitate the reuse of required parameters, you can create profiles. \n\nTo generate a profile called `default`, use the following command:\n\n```bash\ncloudos configure\n```\n\nThis will prompt you for API key, platform URL, project name, platform executor, repository provider, workflow name (if any), and session ID for interactive analysis. This becomes the default profile if no other profile is explicitly set. The default profile allows running all subcommands without adding the `--profile` option.\n\n### Configure Named Profile\n\nTo generate a named profile, use the following command:\n\n```bash\ncloudos configure --profile {profile-name}\n```\n\nThe same prompts will appear, including the execution platform (aws or azure). If a profile with the same name already exists, the current parameters will appear in square brackets and can be overwritten or left unchanged by pressing Enter/Return.\n\nWhen configuring a profile, you can specify:\n- **API Key**: Your CloudOS API credentials\n- **CloudOS URL**: The CloudOS instance URL  \n- **Project Name**: Default project for commands\n- **Execution Platform**: `aws` (default) or `azure` - determines default instance types and available features\n- **Repository Platform**: Version control system (github, gitlab, etc.)\n\n\u003e [!NOTE]\n\u003e When there is already at least 1 previous profile defined, a new question will appear asking to make the current profile as default\n\n### Change the Default Profile\n\nChange the default profile with:\n\n```bash\ncloudos configure --profile {other-profile} --make-default\n```\n\n### List Profiles\n\nView all configured profiles and identify the default:\n\n```bash\ncloudos configure list-profiles\n```\n\nThe response will look like:\n\n```console\nAvailable profiles:\n - default (default)\n - second-profile\n - third-profile\n```\n\n### Remove Profile\n\nRemove any profile with:\n\n```bash\ncloudos configure remove-profile --profile second-profile\n```\n\n---\n\n## Commands\n\n### Configure\n\nSee [Configuration](#configuration) section above for detailed information on setting up profiles and managing your CloudOS CLI configuration.\n\n\n\n### Project\n\nProjects in CloudOS provide logical separation of datasets, workflows, and results, making it easier to manage complex research initiatives. You can list all available projects or create new ones using the CLI.\n\n#### List Projects\n\nYou can get a summary of all available workspace projects in three different output formats using the `--output-format` option:\n\n- **stdout** (default): Displays a rich formatted table directly in the terminal with pagination and visual formatting\n- **csv**: Saves project data to a CSV file with a minimum predefined set of columns by default, or all available columns using the `--all-fields` parameter\n- **json**: Saves complete project information to a JSON file with all available fields\n\nTo display projects as a formatted table in the terminal:\n\n```bash\ncloudos project list --profile my_profile\n# or explicitly:\ncloudos project list --profile my_profile --output-format stdout\n```\n\nTo save projects to a CSV file with all available fields:\n\n```bash\ncloudos project list --profile my_profile --output-format csv --all-fields\n```\n\nThe expected output is something similar to:\n\n```console\nExecuting list...\n\tProject list collected with a total of 320 projects.\n\tProject list saved to project_list.csv\n```\n\nTo save the same information in JSON format:\n\n```bash\ncloudos project list --profile my_profile --output-format json\n```\n\n#### Create Projects\n\nYou can create a new project in your CloudOS workspace using the `project create` command. This command requires the name of the new project and will return the project ID upon successful creation.\n\n```bash\ncloudos project create --profile my_profile --new-project \"My New Project\"\n```\n\nThe expected output is something similar to:\n\n```console\n\tProject \"My New Project\" created successfully with ID: 64f1a23b8e4c9d001234abcd\n```\n\n\n### Queue\n\nJob queues are required for running jobs using AWS batch executor. The available job queues in your CloudOS workspace are listed in the \"Compute Resources\" section in \"Settings\".\n\n\u003e [!NOTE]\n\u003e **Azure Platform**: Queue listing is not available for CloudOS workspaces configured to use Azure execution platform, as Azure does not use AWS batch queues.\n\n#### List Queues\n\nThis command allows you to view available computational queues and their configurations. You can get a summary of all available workspace job queues in three different output formats using the `--output-format` option:\n\n- **stdout** (default): Displays a rich formatted table directly in the terminal with pagination and visual formatting\n- **csv**: Saves queue data to a CSV file with a selection of available queue information, or all information using the `--all-fields` flag\n- **json**: Saves complete queue information to a JSON file with all available fields\n\nTo display queues as a formatted table in the terminal:\n\n```bash\ncloudos queue list --profile my_profile\n# or explicitly:\ncloudos queue list --profile my_profile --output-format stdout\n```\n\nTo save all available job queues in JSON format:\n\n```bash\ncloudos queue list --profile my_profile --output-format json --output-basename \"available_queues\"\n```\n\n```console\nExecuting list...\n\tJob queue list collected with a total of 5 queues.\n\tJob queue list saved to available_queues.json\n```\n\nTo save queue data to a CSV file:\n\n```bash\ncloudos queue list --profile my_profile --output-format csv\n```\n\n\u003e NOTE: The queue name that is visible in CloudOS and must be used with the `--job-queue` parameter is the one in the `label` field.\n\n**Job queues for platform workflows**\n\nPlatform workflows (those provided by CloudOS in your workspace as modules) run on separate and specific AWS batch queues. Therefore, CloudOS will automatically assign the valid queue and you should not specify any queue using the `--job-queue` parameter. Any attempt to use this parameter will be ignored. Examples of such platform workflows are \"System Tools\" and \"Data Factory\" workflows.\n\n\n### Workflow\n\n#### List All Available Workflows\n\nYou can get a list of all available workspace workflows in three different output formats using the `--output-format` option:\n\n- **stdout** (default): Displays a rich formatted table directly in the terminal with pagination and visual formatting\n- **csv**: Saves workflow data to a CSV file with a minimum predefined set of columns by default, or all available columns using the `--all-fields` parameter\n- **json**: Saves complete workflow information to a JSON file with all available fields\n\nTo display the list of workflows as a formatted table in the terminal:\n\n```bash\ncloudos workflow list --profile my_profile\n# or explicitly:\ncloudos workflow list --profile my_profile --output-format stdout\n```\n\nTo save the list of workflows to a CSV file with all available fields:\n\n```bash\ncloudos workflow list --profile my_profile --output-format csv --all-fields\n```\n\nThe expected output is something similar to:\n\n```console\nExecuting list...\n\tWorkflow list collected with a total of 609 workflows.\n\tWorkflow list saved to workflow_list.csv\n```\n\nTo save the same information in JSON format:\n\n```bash\ncloudos workflow list --profile my_profile --output-format json\n```\n\n```console\nExecuting list...\n\tWorkflow list collected with a total of 609 workflows.\n\tWorkflow list saved to workflow_list.json\n```\n\nThe collected workflows are those that can be found in the \"WORKSPACE TOOLS\" section in CloudOS.\n\n#### Import a Nextflow Workflow\n\nYou can import new workflows to your CloudOS workspaces. The requirements are:\n\n- The workflow must be a Nextflow pipeline\n- The workflow repository must be located at GitHub, GitLab or BitBucket Server (specified by the `--repository-platform` option. Available options: `github`, `gitlab` and `bitbucketServer`)\n- If your repository is private, you must have access to the repository and have linked your GitHub, Gitlab or Bitbucket server accounts to CloudOS\n\n**Usage of the workflow import command**\n\nTo import GitHub workflows to CloudOS:\n\n```bash\n# Example workflow to import: https://github.com/lifebit-ai/DeepVariant\ncloudos workflow import --profile my_profile --workflow-url \"https://github.com/lifebit-ai/DeepVariant\" --workflow-name \"new_name_for_the_github_workflow\" --repository-platform github\n```\n\nThe expected output will be:\n\n```console\nCloudOS workflow functionality: list and import workflows.\n\nExecuting workflow import...\n\n\tOnly Nextflow workflows are currently supported.\n\n\tWorkflow test_import_github_3 was imported successfully with the following ID: 6616a8cb454b09bbb3d9dc20\n```\n\nOptionally, you can add a link to your workflow documentation by providing the URL using the `--workflow-docs-link` parameter:\n\n```bash\ncloudos workflow import --profile my_profile --workflow-url \"https://github.com/lifebit-ai/DeepVariant\" --workflow-name \"new_name_for_the_github_workflow\" --workflow-docs-link \"https://github.com/lifebit-ai/DeepVariant/blob/master/README.md\" --repository-platform github\n```\n\n\u003e NOTE: Importing workflows using cloudos-cli is not yet available in all CloudOS workspaces. If you try to use this feature in a non-prepared workspace you will get the following error message: `It seems your API key is not authorised. Please check if your workspace has support for importing workflows using cloudos-cli`.\n\n\n### Nextflow Jobs\n\nThe job commands allow you to submit, monitor, and manage computational workflows on CloudOS. This includes both Nextflow pipelines and bash scripts, with support for various execution platforms.\n\n#### Submit a Job\n\nYou can submit Nextflow workflows to CloudOS using either configuration files or command-line parameters. Jobs can be configured with specific compute resources, execution platforms, parameters, etc.\n\nFirst, configure your local environment to ease parameter input. We will try to submit a small toy example already available:\n\n```bash\ncloudos job run --profile my_profile --workflow-name rnatoy --job-config cloudos_cli/examples/rnatoy.config --resumable\n```\n\nAs you can see, a file with the job parameters is used to configure the job. This file could be a regular `nextflow.config` file or any file with the following structure:\n\n```\nparams {\n        reads   = s3://lifebit-featured-datasets/pipelines/rnatoy-data\n        annot   = s3://lifebit-featured-datasets/pipelines/rnatoy-data/ggal_1_48850000_49020000.bed.gff\n}\n```\n\nIn addition, parameters can also be specified using the command-line `-p` or `--parameter`. For instance:\n\n```bash\ncloudos job run \\\n  --profile my_profile \\\n  --workflow-name rnatoy \\\n  --parameter reads=s3://lifebit-featured-datasets/pipelines/rnatoy-data \\\n  --parameter genome=s3://lifebit-featured-datasets/pipelines/rnatoy-data/ggal_1_48850000_49020000.Ggal71.500bpflank.fa \\\n  --parameter annot=s3://lifebit-featured-datasets/pipelines/rnatoy-data/ggal_1_48850000_49020000.bed.gff \\\n  --resumable\n```\n\n**Params file**\n\nYou can pass a Nextflow-style params file using `--params-file` (only JSON or YAML):\n\n```bash\ncloudos job run \\\n  --profile my_profile \\\n  --workflow-name rnatoy \\\n  --params-file Data/params.json \\\n  --resumable\n```\n\nAzure Blob example:\n\n```bash\ncloudos job run \\\n  --profile my_profile \\\n  --workflow-name rnatoy \\\n  --params-file az://6480f3db916489d248956a5f.blob.core.windows.net/cloudos-66607e71e8cffa9985592c10/dataset/697b7341c69bacdd8b0b700d/rnatoy_params.json \\\n  --resumable\n```\n\nExample JSON params file:\n\n```json\n{\n  \"reads\": \"s3://lifebit-featured-datasets/pipelines/rnatoy-data\",\n  \"genome\": \"s3://lifebit-featured-datasets/pipelines/rnatoy-data/ggal_1_48850000_49020000.Ggal71.500bpflank.fa\",\n  \"annot\": \"s3://lifebit-featured-datasets/pipelines/rnatoy-data/ggal_1_48850000_49020000.bed.gff\"\n}\n```\n\nExample YAML params file:\n\n```yaml\nreads:\n  s3://lifebit-featured-datasets/pipelines/rnatoy-data\ngenome:\n  s3://lifebit-featured-datasets/pipelines/rnatoy-data/ggal_1_48850000_49020000.Ggal71.500bpflank.fa\nannot:\n  s3://lifebit-featured-datasets/pipelines/rnatoy-data/ggal_1_48850000_49020000.bed.gff\n```\n\n\u003e NOTE: options `--job-config`, `--parameter` and `--params-file` are completely compatible and complementary, so you can use a `--job-config` or `--params-file` and add additional parameters using `--parameter` in the same call.\n\n\u003e NOTE: when using `--params-file`, the value must be an S3 URI, an Azure Blob URI (`az://\u003caccount\u003e.blob.core.windows.net/\u003ccontainer\u003e/\u003cblob\u003e`), or a File Explorer relative path (e.g., `Data/file.json`). Local file paths are not supported.\n\nIf everything went well, you should see something like:\n\n```console\nExecuting run...\n\tJob successfully launched to CloudOS, please check the following link: https://cloudos.lifebit.ai/app/advanced-analytics/analyses/62c83a1191fe06013b7ef355\n\tYour assigned job id is: 62c83a1191fe06013b7ef355\n\tYour current job status is: initializing\n\tTo further check your job status you can either go to https://cloudos.lifebit.ai/app/advanced-analytics/analyses/62c83a1191fe06013b7ef355 or use the following command:\n    cloudos job status \\\n        --apikey $MY_API_KEY \\\n        --cloudos-url https://cloudos.lifebit.ai \\\n        --job-id 62c83a1191fe06013b7ef355\n```\n\nAs you can see, the current status is `initializing`. This will change while the job progresses. To check the status, just apply the suggested command.\n\nAnother option is to set the `--wait-completion` parameter, which runs the same job run command but waits for its completion:\n\n```bash\ncloudos job run --profile my_profile --workflow-name rnatoy --job-config cloudos_cli/examples/rnatoy.config --resumable --wait-completion\n```\n\nWhen setting this parameter, you can also set `--request-interval` to a bigger number (default is 30s) if the job is quite large. This will ensure that the status requests are not sent too close from each other and recognized as spam by the API.\n\nIf the job takes less than `--wait-time` (3600 seconds by default), the previous command should have an output similar to:\n\n```console\nExecuting run...\n\tJob successfully launched to CloudOS, please check the following link: https://cloudos.lifebit.ai/app/advanced-analytics/analyses/62c83a6191fe06013b7ef363\n\tYour assigned job id is: 62c83a6191fe06013b7ef363\n\tPlease, wait until job completion or max wait time of 3600 seconds is reached.\n\tYour current job status is: initializing.\n\tYour current job status is: running.\n\tYour job took 420 seconds to complete successfully.\n```\n\nWhen there are duplicate `--workflow-name` in the platform, you can add the `--last` flag to use the latest import of that pipeline in the workspace, based on the date.\n\n_For example, the pipeline `lifebit-process` was imported on May 23 2025 and again on May 30 2025; with the `--last` flag, it will use the import of May 30, 2025._\n\n**AWS Executor Support**\n\nCloudOS supports [AWS batch](https://www.nextflow.io/docs/latest/executor.html?highlight=executors#aws-batch) executor by default.\nYou can specify the AWS batch queue to use from the ones available in your workspace (see [here](#list-job-queues)) by specifying its name with the `--job-queue` parameter. If none is specified, the most recent suitable queue in your workspace will be selected by default.\n\nExample command:\n\n```bash\ncloudos job run --profile my_profile --workflow-name rnatoy --job-config cloudos_cli/examples/rnatoy.config --resumable\n```\n\n\u003e Note: From cloudos-cli 2.7.0, the default executor is AWS batch. The previous Apache [ignite](https://www.nextflow.io/docs/latest/ignite.html#apache-ignite) executor is being removed progressively from CloudOS, so most likely will not be available in your CloudOS. Cloudos-cli still supports ignite during this period by adding the `--ignite` flag to the `cloudos job run` command. Please note that if you use the `--ignite` flag in a CloudOS without ignite support, the command will fail.\n\n**Azure Execution Platform Support**\n\nCloudOS can also be configured to use Microsoft Azure compute platforms. If your CloudOS is configured to use Azure, you will need to take into consideration the following:\n\n- When sending jobs to CloudOS using `cloudos job run` command, please use the option `--execution-platform azure`\n- Due to the lack of AWS batch queues in Azure, `cloudos queue list` command is not working\n\nOther than that, `cloudos-cli` will work very similarly. For instance, this is a typical send job command:\n\n```bash\ncloudos job run --profile my_profile --workflow-name rnatoy --job-config cloudos_cli/examples/rnatoy.config --resumable --execution-platform azure\n```\n\n**HPC Execution Support**\n\nCloudOS is also prepared to use an HPC compute infrastructure. For such cases, you will need to take into account the following for your job submissions using `cloudos job run` command:\n\n- Use the following parameter: `--execution-platform hpc`\n- Indicate the HPC ID using: `--hpc-id XXXX`\n\nExample command:\n\n```bash\ncloudos job run --profile my_profile --workflow-name rnatoy --job-config cloudos_cli/examples/rnatoy.config --execution-platform hpc --hpc-id $YOUR_HPC_ID\n```\n\nPlease note that HPC execution does not support the following parameters and all of them will be ignored:\n\n- `--job-queue`\n- `--resumable | --do-not-save-logs`\n- `--instance-type` | `--instance-disk` | `--cost-limit`\n- `--storage-mode` | `--lustre-size`\n- `--wdl-mainfile` | `--wdl-importsfile` | `--cromwell-token`\n\n#### Check Job Status\n\nTo check the status of a submitted job, use the following command:\n\n```bash\ncloudos job status --profile my_profile --job-id 62c83a1191fe06013b7ef355\n```\n\nThe expected output should be something similar to:\n\n```console\nExecuting status...\n\tYour current job status is: completed\n\n\tTo further check your job status you can either go to https://cloudos.lifebit.ai/app/advanced-analytics/analyses/62c83a1191fe06013b7ef355 or repeat the command you just used.\n```\n\n#### List Jobs\n\nView your workspace jobs in a clean, formatted table directly in your terminal. The table automatically adapts to your terminal width, showing different column sets for optimal viewing. By default, jobs are displayed as a rich table with job IDs and colored visual status indicators.\n\n**Output Formats**\n\nCloudOS CLI provides three output formats for job listings:\n\n- **Table (default)**: Rich formatted table displayed in the terminal with pagination information\n- **CSV**: Tabular format with predefined or all available columns using `--all-fields`\n- **JSON**: Complete job information in JSON format (`--all-fields` is always enabled)\n\n**Default Behavior**\n\nBy default, the command displays the 10 most recent jobs in a formatted table:\n\n```bash\ncloudos job list --profile my_profile\n```\n\nThe output shows a rich table with job information and pagination details:\n\n```console\nExecuting list...\n\n                                                    Job List                                                    \n┏━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓\n┃ Status ┃ Name         ┃ Project     ┃ Owner    ┃ Pipeline     ┃ ID                      ┃ Submit time  ┃\n┡━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩\n│ ✓      │ analysis_run │ test-proj   │ John     │ rnatoy       │ 692ee71c40e98ed6ed529e43│ 2025-12-02   │\n│        │              │             │ Doe      │              │                         │ 15:30:45     │\n│ ◐      │ test_job     │ research    │ Jane     │ VEP          │ 692ee81d50f98ed7fe639f54│ 2025-12-02   │\n│        │              │             │ Smith    │              │                         │ 14:20:30     │\n└────────┴──────────────┴─────────────┴──────────┴──────────────┴─────────────────────────┴──────────────┘\n\nShowing 10 of 45 total jobs | Page 1 of 5\n```\n\n**Status Indicators**\n\nJobs are displayed with colored visual status indicators:\n- **Green ✓** Completed\n- **Grey ◐** Running\n- **Red ✗** Failed\n- **Orange ■** Aborted\n- **Grey ○** Initialising\n\n**Clickable Job IDs**\n\nJob IDs in the table are clickable hyperlinks (when supported by your terminal) that open the job details page in CloudOS.\n\n**Job Listing Control Options**\n\nCloudOS CLI provides two ways to control the number of jobs retrieved:\n\n1. **Pagination Control (Default)**: Use `--page` and `--page-size` for precise pagination\n2. **Last N Jobs**: Use `--last-n-jobs` for retrieving the most recent jobs\n\n\u003e [!IMPORTANT]\n\u003e **These options are mutually exclusive**. When `--last-n-jobs` is specified, it takes precedence and `--page`/`--page-size` parameters are ignored. A warning message will be displayed if both are provided.\n\n**Pagination Examples**\n\nRetrieve specific pages using `--page` and `--page-size`:\n\n```bash\n# Get page 2 with 15 jobs per page\ncloudos job list --profile my_profile --page 2 --page-size 15\n\n# Get page 5 with maximum 100 jobs per page (maximum allowed)\ncloudos job list --profile my_profile --page 5 --page-size 100\n```\n\n\u003e [!NOTE]\n\u003e `--page-size` has a maximum limit of 100 jobs per page. Attempting to use a larger value will result in an error.\n\n**Last N Jobs Examples**\n\nUse `--last-n-jobs` to get the most recent jobs:\n\n```bash\n# Get the last 50 jobs\ncloudos job list --profile my_profile --last-n-jobs 50\n\n# Get all workspace jobs\ncloudos job list --profile my_profile --last-n-jobs all\n```\n\n**Customizing Table Columns**\n\nYou can customize which columns are displayed in the table using the `--table-columns` option:\n\n```bash\n# Show only status, name, and cost columns\ncloudos job list --profile my_profile --table-columns status,name,cost\n\n# Show a minimal view\ncloudos job list --profile my_profile --table-columns status,name,id,submit_time\n```\n\nAvailable columns: `status`, `name`, `project`, `owner`, `pipeline`, `id`, `submit_time`, `end_time`, `run_time`, `commit`, `cost`, `resources`, `storage_type`\n\n\u003e [!NOTE]\n\u003e The `--table-columns` option only applies when using the default table output format (stdout).\n\n**File Output Formats**\n\nTo save job lists to files instead of displaying them in the terminal:\n\n```bash\n# Save as CSV with default columns\ncloudos job list --profile my_profile --output-format csv\n\n# Save as CSV with all available fields\ncloudos job list --profile my_profile --output-format csv --all-fields\n\n# Save as JSON with complete job data\ncloudos job list --profile my_profile --output-format json\n```\n\nThe expected output for file formats:\n\n```console\nExecuting list...\n\tJob list collected with a total of 10 jobs.\n\tJob list saved to joblist.csv\n```\n\n**Filtering Jobs**\n\nYou can find specific jobs within your workspace using the filtering options. Filters can be combined to narrow down results and work with all output formats.\n\n**Available filters:**\n\n- **`--filter-status`**: Filter jobs by execution status (e.g., completed, running, failed, aborted, initialising)\n- **`--filter-job-name`**: Filter jobs by job name (case insensitive partial matching)\n- **`--filter-project`**: Filter jobs by project name (exact match required)\n- **`--filter-workflow`**: Filter jobs by workflow/pipeline name (exact match required)\n- **`--filter-job-id`**: Filter jobs by specific job ID (exact match required)\n- **`--filter-only-mine`**: Show only jobs belonging to the current user\n- **`--filter-owner`**: Show only jobs for the specified owner (exact match required, e.g., \"John Doe\")\n- **`--filter-queue`**: Filter jobs by queue name (only applies to batch jobs)\n\n**Filtering Examples**\n\nUsing pagination approach (default):\n\n```bash\n# Get completed jobs from page 1 (default 10 jobs)\ncloudos job list --profile my_profile --filter-status completed\n\n# Get completed jobs from page 2 with 20 jobs per page\ncloudos job list --profile my_profile --page 2 --page-size 20 --filter-status completed\n```\n\nUsing last-n-jobs approach:\n\n```bash\n# Get all completed jobs from the last 50 jobs\ncloudos job list --profile my_profile --last-n-jobs 50 --filter-status completed\n```\n\nFind jobs with \"analysis\" in the name from a specific project:\n\n```bash\n# Using pagination (gets first 10 matching jobs)\ncloudos job list --profile my_profile --filter-job-name analysis --filter-project \"My Research Project\"\n\n# Using last-n-jobs\ncloudos job list --profile my_profile --last-n-jobs 100 --filter-job-name analysis --filter-project \"My Research Project\"\n```\n\nGet all jobs using a specific workflow and queue:\n\n```bash\n# Using pagination with larger page size\ncloudos job list --profile my_profile --page-size 50 --filter-workflow rnatoy --filter-queue high-priority-queue\n\n# Using last-n-jobs to search all jobs\ncloudos job list --profile my_profile --last-n-jobs all --filter-workflow rnatoy --filter-queue high-priority-queue\n```\n\n\u003e [!NOTE]\n\u003e - Project and workflow names must match exactly (case sensitive)\n\u003e - Job name filtering is case insensitive and supports partial matches\n\u003e - The `--last` flag can be used with `--filter-workflow` when multiple workflows have the same name\n\u003e - When filters are applied, pagination information reflects the filtered results\n\n#### Get Job Results\n\nThe following command allows you to get the path where CloudOS stores the output files for a job. This can be used only on your user's jobs and for jobs with \"completed\" status.\n\nExample:\n```bash\ncloudos job results --profile my_profile --job-id \"12345678910\"\n```\n```console\nExecuting results...\nresults: s3://path/to/location/of/results/results/\n```\n\nYou can also link all result directories to an interactive session using the `--link` flag. This will mount all result directories from the job, providing direct access to output files in your interactive session:\n\n```bash\ncloudos job results --profile my_profile --job-id \"12345678910\" --link --session-id your_session_id\n```\n\n**Check Results Deletion Status**\n\nYou can check the deletion status of a job's results folder using the `--status` flag. This is useful for monitoring the deletion lifecycle of analysis results.\n\n```bash\ncloudos job results --status --profile my_profile --job-id \"12345678910\"\n```\n\nThe command will display the current status of the results folder. Possible statuses include:\n- **available**: Results are available and accessible\n- **scheduled for deletion**: Results are scheduled to be deleted\n- **deleting**: Results are currently being deleted\n- **deleted**: Results have been deleted\n- **failed to delete**: Deletion process failed\n\nExample output for available results:\n```console\nThe results of job 1234567890 are in status: available\n```\n\nFor results in any state other than available, the output includes additional information about when the status changed and who initiated the change:\n```console\nThe results of job 6912036aa6ed001148c96018 are in status: scheduled for deletion\nStatus changed at: 2025-11-11T14:43:44.416Z\nUser: Leila Mansouri (leila.mansouri@lifebit.ai)\n```\n\nUse the `--verbose` flag to see detailed information including the results folder name, folder ID, creation and update timestamps:\n```bash\ncloudos job results --status --profile my_profile --job-id \"12345678910\" --verbose\n```\n\n\u003e [!NOTE]\n\u003e If results have been completely deleted, the command will report that the results folder was not found, which may indicate that results have been deleted or scheduled for deletion.\n\n#### Clone or Resume Job\n\nThe `clone` command allows you to create a new job based on an existing job's configuration, with the ability to override specific parameters.\nThe `resume` command allows you to create a new job (with the ability to override specific parameters) without re-running every step but only the ones failed/where changes are applied.\nThese commands are particularly useful for re-running jobs with slight modifications without having to specify all parameters or starting again from scratch.\n\n\u003e [!NOTE]\n\u003e Only jobs initially run with `--resumable` can be resumed.\n\n**Basic Usage:**\n\nClone a job:\n```bash\ncloudos job clone \\\n    --profile my_profile \\\n    --job-id \"60a7b8c9d0e1f2g3h4i5j6k7\"\n```\n\nResume a job:\n```bash\ncloudos job resume \\\n    --profile my_profile \\\n    --job-id \"60a7b8c9d0e1f2g3h4i5j6k7\"\n```\n\n**With Parameter Overrides:**\n\nClone with parameter overrides:\n```bash\ncloudos job clone \\\n    --profile my_profile \\\n    --job-id \"60a7b8c9d0e1f2g3h4i5j6k7\" \\\n    --job-queue \"high-priority-queue\" \\\n    --cost-limit 50.0 \\\n    --instance-type \"c5.2xlarge\" \\\n    --job-name \"cloned_analysis_v2\" \\\n    --nextflow-version \"24.04.4\" \\\n    --git-branch \"dev\" \\\n    --nextflow-profile \"production\" \\\n    --do-not-save-logs \\\n    --accelerate-file-staging \\\n    --workflow-name \"updated-workflow\" \\\n    -p \"input=s3://new-bucket/input.csv\" \\\n    -p \"output_dir=s3://new-bucket/results\"\n```\n\nResume with parameter overrides:\n```bash\ncloudos job resume \\\n    --profile my_profile \\\n    --job-id \"60a7b8c9d0e1f2g3h4i5j6k7\" \\\n    --job-queue \"high-priority-queue\" \\\n    --cost-limit 50.0 \\\n    --instance-type \"c5.2xlarge\" \\\n    --job-name \"resumed_analysis_v2\" \\\n    --nextflow-version \"24.04.4\" \\\n    --git-branch \"dev\" \\\n    --nextflow-profile \"production\" \\\n    -p \"input=s3://new-bucket/input.csv\" \\\n    -p \"output_dir=s3://new-bucket/results\"\n```\n\n**Available Override Options:**\n- `--job-queue`: Specify a different job queue\n- `--cost-limit`: Set a new cost limit (use -1 for no limit)\n- `--instance-type`: Change the master instance type\n- `--job-name`: Assign a custom name to the cloned/resumed job\n- `--nextflow-version`: Use a different Nextflow version\n- `--git-branch`: Switch to a different git branch\n- `--nextflow-profile`: Change the Nextflow profile\n- `--do-not-save-logs`: Enable/disable log saving\n- `--accelerate-file-staging`: Enable/disable fusion filesystem\n- `--workflow-name`: Use a different workflow\n- `-p, --parameter`: Override or add parameters (can be used multiple times)\n\n\u003e [!NOTE]\n\u003e Parameters can be overridden or new ones can be added using `-p` option\n\n#### Abort Jobs\n\nAborts jobs in the CloudOS workspace that are either running or initializing. It can be used with one or more job IDs provided as a comma-separated string using the `--job-ids` parameter.\n\n##### Basic Usage\n\n```bash\ncloudos job abort --profile my_profile --job-ids \"680a3cf80e56949775c02f16\"\n```\n\n```console\nAborting jobs...\n        Job 680a3cf80e56949775c02f16 aborted successfully.\n```\n\n##### Force Abort\n\nThe `--force` flag allows you to abort jobs faster as it removes the running infrastructure. When using this flag, be aware that some data might be lost (it could be results or logs, based on what the job is performing at the moment of the forced abort).\n\n```bash\ncloudos job abort --profile my_profile --job-ids \"680a3cf80e56949775c02f16\" --force\n```\n\n```console\nAborting jobs...\nWarning: Using --force to abort job 680a3cf80e56949775c02f16. Some data might be lost.\nJob 680a3cf80e56949775c02f16 aborted successfully.\n```\n\n##### Additional Options\n\n- `--workspace-id`: The CloudOS workspace ID (can be set in profile)\n- `--apikey`: Your CloudOS API key (can be set in profile)\n- `--cloudos-url`: The CloudOS URL (default: https://cloudos.lifebit.ai)\n- `--verbose`: Print detailed information messages\n- `--disable-ssl-verification`: Disable SSL certificate verification (not recommended)\n- `--ssl-cert`: Path to your SSL certificate file\n\n#### Get Job Details\n\nDetails of a job, including cost, status, and timestamps, can be retrieved with:\n\n```bash\ncloudos job details --profile my_profile --job-id 62c83a1191fe06013b7ef355\n```\n\nThe expected output should be something similar to when using the defaults and the details are displayed in the standard output console:\n\n```console\nExecuting details...\n                                                    Job Details\n┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃ Field                    ┃ Value                                                                                 ┃\n┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n│ Status                   │ completed                                                                             │\n│ Name                     │ mutSign_vcf_prep_genome_chart_non_resumable                                           │\n│ Project                  │ DB-PR-testing                                                                         │\n│ Owner                    │ Name Surname                                                                          │\n│ Pipeline                 │ MutSign                                                                               │\n│ ID                       │ 68bf2178b4ae9f283ea8a0bf                                                              │\n│ Submit time              │ 2025-09-08 18:34:26                                                                   │\n│ End time                 │ 2025-09-08 18:38:26                                                                   │\n│ Run time                 │ 4m 0s                                                                                 │\n│ Commit                   │ 11fea740366b92b2858349b764879792272f2996                                              │\n│ Cost                     │ $0.2515                                                                               │\n│ Master Instance          │ c5.xlarge                                                                             │\n│ Storage                  │ 500 GB                                                                                │\n│ Job Queue ID             │ nextflow-job-queue-5c6d3e9bd954e800b23f8c62-f7386cc5-cbdf-40e7-b379                   │\n│ Job Queue Name           │ v41                                                                                   │\n│ Task Resources           │ 1 CPUs, 4 GB RAM'                                                                 │\n│ Pipeline url             │ https://github.com/lifebit-ai/mutational-signature-nf                                 │\n│ Nextflow Version         │ 22.10.8                                                                               │\n│ Execution Platform       │ Batch AWS                                                                             │\n│ Accelerated File Staging │ False                                                                                 │\n│ Parameters               │ --snv_indel=lifebit-user-data-106c12d2-cf8f-446c-b77e-661d697c833c/deploit/teams/5c6d │\n│                          │ 3e9bd954e800b23f8c62/users/6329e3bd3c0e00014641eeea/projects/655cc29778391a7e1901a5b7 │\n│                          │ /jobs/68810fda9b301f037d38c4be/results/results/W0000664B01_W0000665B01/W0000664B01_W0 │\n│                          │ 000665B01_filtered.vcf.gz                                                             │\n│                          │ --sv=lifebit-user-data-f60fc49a-9081-417e-a4fc-03c52de4c820/deploit/teams/5c6d3e9bd95 │\n│                          │ 4e800b23f8c62/users/669a9dfe474e319e71685421/projects/66d864817afbdfa1d4515d56/jobs/6 │\n│                          │ 8763aac9e7fe38ec6e9236d/results/results/manta/W0000665B01-W0000664B01/somaticSV_annot │\n│                          │ ation.vcf.gz                                                                          │\n│                          │ --cnv=lifebit-user-data-106c12d2-cf8f-446c-b77e-661d697c833c/deploit/teams/5c6d3e9bd9 │\n│                          │ 54e800b23f8c62/users/6329e3bd3c0e00014641eeea/projects/655cc29778391a7e1901a5b7/jobs/ │\n│                          │ 687f5b383e05673d74aab1b9/results/W0000664B01_vs_W0000665B01/W0000664B01.copynumber.ca │\n│                          │ veman.csv                                                                             │\n│                          │ --sample_name=W0000664B01                                                             │\n│ Profile                  │ None                                                                                  │\n└──────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────┘\n```\n\nTo change this behaviour and save the details into a local CSV or JSON, the parameter `--output-format` needs to be set as `--output-format=json` or `--output-format=csv`.\n\nBy default, all details are saved in a file with the basename as `{job_id}_details`, for example `68bf2178b4ae9f283ea8a0bf_details.json` or `68bf2178b4ae9f283ea8a0bf_details.config.`. This can be changed with the parameter `--output-basename=new_filename`.\n\nThe `details` subcommand, can also take `--parameters` as an argument flag, which will create a new file `*.config` that holds all parameters as a Nextflow configuration file, example:\n\n```console\nparams {\n    parameter_one = value_one\n    parameter_two = value_two\n    parameter_three = value_three\n}\n```\n\nThis file can later be used when running a job with `cloudos job run --job-config job_details.config ...`.\n\n\u003e [!NOTE]\n\u003e Job details can only be retrieved for a single user, cannot see other user's job details.\n\n#### Get Job Workdir\n\nTo get the working directory of a job submitted to CloudOS:\n\n```shell\ncloudos job workdir \\\n    --profile profile-name \\\n    --job-id 62c83a1191fe06013b7ef355\n```\n\nThe output should be something similar to:\n\n```console\nCloudOS job functionality: run, check and abort jobs in CloudOS.\n\nFinding working directory path...\nWorking directory for job 68747bac9e7fe38ec6e022ad: az://123456789000.blob.core.windows.net/cloudos-987652349087/projects/455654676/jobs/54678856765/work\n```\n\nYou can also link the working directory to an interactive session using the `--link` flag. This requires specifying a session ID either through the `--session-id` option or from a configured profile:\n\n```shell\ncloudos job workdir \\\n    --profile profile-name \\\n    --job-id 62c83a1191fe06013b7ef355 \\\n    --link --session-id your_session_id\n```\n\n**Check Working Directory Deletion Status**\n\nYou can check the deletion status of a job's working directory using the `--status` flag. This is useful for monitoring the deletion lifecycle of intermediate job files.\n\n```bash\ncloudos job workdir --status --profile my_profile --job-id \"12345678910\"\n```\n\nThe command will display the current status of the working directory folder. Possible statuses include:\n- **available**: Working directory is available and accessible\n- **scheduled for deletion**: Working directory is scheduled to be deleted\n- **deleting**: Working directory is currently being deleted\n- **deleted**: Working directory has been deleted\n- **failed to delete**: Deletion process failed\n\nExample output for available working directory:\n```console\nThe working directory of job 6912036aa6ed001148c96018 is in status: available\n```\n\nFor working directories in any state other than available, the output includes additional information about when the status changed and who initiated the change:\n```console\nThe working directory of job 6912036aa6ed001148c96018 is in status: scheduled for deletion\nStatus changed at: 2025-11-11T14:43:44.416Z\nUser: Leila Mansouri (leila.mansouri@lifebit.ai)\n```\n\nUse the `--verbose` flag to see detailed information including the working directory folder name, folder ID, creation and update timestamps:\n```bash\ncloudos job workdir --status --profile my_profile --job-id \"12345678910\" --verbose\n```\n\n\u003e [!NOTE]\n\u003e This command only works for jobs that were run with resumable mode enabled (using the `--resumable` flag). Jobs without resumable mode will not have a working directory to check.\n\u003e If the working directory has been completely deleted, the command will report that the working directory was not found.\n\n#### Get Job Logs\n\nThe following command allows you to get the path to \"Nextflow logs\", \"Nextflow standard output\", and \"trace\" files. It can be used only on your user's jobs, with any status.\n\nExample:\n```bash\ncloudos job logs --profile my_profile --job-id \"12345678910\"\n```\n```console\nExecuting logs...\nLogs URI: s3://path/to/location/of/logs\n\nNextflow log: s3://path/to/location/of/logs/.nextflow.log\n\nNextflow standard output: s3://path/to/location/of/logs/stdout.txt\n\nTrace file: s3://path/to/location/of/logs/trace.txt\n```\n\nYou can also link the logs directory to an interactive session using the `--link` flag. This will mount the entire logs directory, providing access to all log files in your interactive session:\n\n```bash\ncloudos job logs --profile my_profile --job-id \"12345678910\" --link --session-id your_session_id\n```\n\n#### Get Job Costs\n\nYou can retrieve detailed cost information for any job in your CloudOS workspace using the `job cost` command. This provides insights into compute costs, storage usage, and runtime metrics to help optimize workflows and manage expenses.\n\nThe cost information is retrieved from CloudOS and can be displayed in multiple formats:\n\n- **Console display**: Rich formatted tables with pagination for easy viewing\n- **CSV**: Structured data for analysis and reporting\n- **JSON**: Complete cost data for programmatic processing\n\nTo get cost information for a specific job:\n\n```bash\ncloudos job cost --profile my_profile --job-id 62c83a1191fe06013b7ef355\n```\n\nThe expected output is a formatted table showing:\n\n```console\n                              Job Cost Details - Job ID: 62c83a1191fe06013b7ef355                              \n┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━┓\n┃        ┃            ┃            ┃            ┃          ┃             ┃            ┃ Compute     ┃         ┃\n┃        ┃ Instance   ┃            ┃ Life-cycle ┃          ┃ Compute     ┃ Instance   ┃ storage     ┃         ┃\n┃ Type   ┃ id         ┃ Instance   ┃ type       ┃ Run time ┃ storage     ┃ price      ┃ price       ┃ Total   ┃\n┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━┩\n│ Worker │ pgti_mediu │ standard_d │ spot       │ 2m 12s   │ 500 Gb      │ $0.0888/hr │ $0.0298/hr  │ $0.0043 │\n│        │ m_pool/tvm │ 8a_v4      │            │          │             │            │             │         │\n│        │ ps_e57148f │            │            │          │             │            │             │         │\n│        │ f29a2186e2 │            │            │          │             │            │             │         │\n│        │ ba07c0566c │            │            │          │             │            │             │         │\n│        │ a7d494148a │            │            │          │             │            │             │         │\n│        │ 7f8d9d547d │            │            │          │             │            │             │         │\n│        │ 8fdbb71ead │            │            │          │             │            │             │         │\n│        │ 4355497_p  │            │            │          │             │            │             │         │\n│ Worker │ pgti_mediu │ standard_d │ spot       │ 7m 48s   │ 500 Gb      │ $0.0888/hr │ $0.0298/hr  │ $0.0154 │\n│        │ m_pool/tvm │ 8a_v4      │            │          │             │            │             │         │\n│        │ ps_acc84ab │            │            │          │             │            │             │         │\n│        │ 980b9bd654 │            │            │          │             │            │             │         │\n│        │ b690de025a │            │            │          │             │            │             │         │\n│        │ 7abab8c5e2 │            │            │          │             │            │             │         │\n│        │ 7fe60e80c7 │            │            │          │             │            │             │         │\n│        │ 34d65f6519 │            │            │          │             │            │             │         │\n│        │ 5a56c26_p  │            │            │          │             │            │             │         │\n└────────┴────────────┴────────────┴────────────┴──────────┴─────────────┴────────────┴─────────────┴─────────┘\nOn page 1/2: n = next, p = prev, q = quit\n\nBy pressing 'n', it will show the next page or the last if it is the case.\n\n                              Job Cost Details - Job ID: 62c83a1191fe06013b7ef355                              \n┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━┓\n┃        ┃            ┃            ┃            ┃          ┃             ┃            ┃ Compute     ┃         ┃\n┃        ┃ Instance   ┃            ┃ Life-cycle ┃          ┃ Compute     ┃ Instance   ┃ storage     ┃         ┃\n┃ Type   ┃ id         ┃ Instance   ┃ type       ┃ Run time ┃ storage     ┃ price      ┃ price       ┃ Total   ┃\n┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━┩\n│ Worker │ pgti_large │ standard_d │ spot       │ 1m 24s   │ 500 Gb      │ $0.1780/hr │ $0.0298/hr  │ $0.0049 │\n│        │ _pool/tvmp │ 16a_v4     │            │          │             │            │             │         │\n│        │ s_fde00bd8 │            │            │          │             │            │             │         │\n│        │ b7b0c2fd49 │            │            │          │             │            │             │         │\n│        │ c24a9f2d29 │            │            │          │             │            │             │         │\n│        │ c2958994d8 │            │            │          │             │            │             │         │\n│        │ 125708b7d2 │            │            │          │             │            │             │         │\n│        │ ab2309c419 │            │            │          │             │            │             │         │\n│        │ 747a8a_p   │            │            │          │             │            │             │         │\n│ Worker │ pgti_large │ standard_d │ spot       │ 1m 20s   │ 500 Gb      │ $0.1780/hr │ $0.0298/hr  │ $0.0046 │\n│        │ _pool/tvmp │ 16a_v4     │            │          │             │            │             │         │\n│        │ s_abe5f8f5 │            │            │          │             │            │             │         │\n│        │ afe98535d3 │            │            │          │             │            │             │         │\n│        │ a74a73a9e5 │            │            │          │             │            │             │         │\n│        │ e2e2d1c181 │            │            │          │             │            │             │         │\n│        │ a6b1056a17 │            │            │          │             │            │             │         │\n│        │ 6ecaacdb65 │            │            │          │             │            │             │         │\n│        │ 0737b7_p   │            │            │          │             │            │             │         │\n│        │            │            │            │          │             │            │             │         │\n├────────┼────────────┼────────────┼────────────┼──────────┼─────────────┼────────────┼─────────────┼─────────┤\n│        │            │            │            │          │             │            │             │ $0.5563 │\n└────────┴────────────┴────────────┴────────────┴──────────┴─────────────┴────────────┴─────────────┴─────────┘\n\nIn the last page, the total job cost will be in the last row.\n```\n\n**Export options:**\n\nSave cost data to CSV for further analysis:\n\n```bash\ncloudos job cost --profile my_profile --job-id 62c83a1191fe06013b7ef355 --output-format csv\n\ncat 62c83a1191fe06013b7ef355_costs.csv\nType,Instance id,Instance,Life-cycle type,Run time,Compute storage,Instance price,Compute storage price,Total\nMaster,186b12c2-a518-40de-8bef-7c43f9adcfce,Standard_D4as_v4,on demand,39m 43s,1000 Gb,$0.2220/hr,$0.0561/hr,$0.1841\nWorker,pgti_large_pool/tvmps_e739a24d7e64e06f1006d3410ee74c7929388fb1146231d4be84ecdb2c39db0f_p,standard_d16a_v4,spot,1m 26s,500 Gb,$0.1780/hr,$0.0298/hr,$0.0050\nWorker,pgti_large_pool/tvmps_abe5f8f5afe98535d3a74a73a9e5e2e2d1c181a6b1056a176ecaacdb650737b7_p,standard_d16a_v4,spot,1m 20s,500 Gb,$0.1780/hr,$0.0298/hr,$0.0046\nWorker,pgti_large_pool/tvmps_dad8c86e744056f581e9298273ff7df99d2f9f2b5dc8f706037b1a8b61c4ce0b_p,standard_d16a_v4,spot,5m 10s,500 Gb,$0.1780/hr,$0.0298/hr,$0.0179\n...\n```\n\nSave complete cost data to JSON:\n\n```bash\ncloudos job cost --profile my_profile --job-id 62c83a1191fe06013b7ef355 --output-format json\n\ncat 62c83a1191fe06013b7ef355_costs.json\n{\n  \"job_id\": \"688ade923643c2454f5ac77d\",\n  \"cost_table\": [\n    {\n      \"Type\": \"Master\",\n      \"Instance id\": \"186b12c2-a518-40de-8bef-7c43f9adcfce\",\n      \"Instance\": \"Standard_D4as_v4\",\n      \"Life-cycle type\": \"on demand\",\n      \"Run time\": \"39m 43s\",\n      \"Compute storage\": \"1000 Gb\",\n      \"Instance price\": \"$0.2220/hr\",\n      \"Compute storage price\": \"$0.0561/hr\",\n      \"Total\": \"$0.1841\"\n    },\n    {\n      \"Type\": \"Worker\",\n      \"Instance id\": \"pgti_medium_pool/tvmps_ba00d365ca2b35cce93b2853480be9afc0202bf2f5633648f2dd576414dd8987_p\n\",\n      \"Instance\": \"standard_d8a_v4\",\n      \"Life-cycle type\": \"spot\",\n      \"Run time\": \"19m 55s\",\n      \"Compute storage\": \"500 Gb\",\n      \"Instance price\": \"$0.0888/hr\",\n      \"Compute storage price\": \"$0.0298/hr\",\n      \"Total\": \"$0.0394\"\n    },\n    ...\n    {\n      \"Type\": \"Worker\",\n      \"Instance id\": \"pgti_large_pool/tvmps_abe5f8f5afe98535d3a74a73a9e5e2e2d1c181a6b1056a176ecaacdb650737b7_p\"\n,\n      \"Instance\": \"standard_d16a_v4\",\n      \"Life-cycle type\": \"spot\",\n      \"Run time\": \"1m 20s\",\n      \"Compute storage\": \"500 Gb\",\n      \"Instance price\": \"$0.1780/hr\",\n      \"Compute storage price\": \"$0.0298/hr\",\n      \"Total\": \"$0.0046\"\n    }\n  ],\n  \"final_cost\": \"$0.5563\"\n}\n\n```\n\n#### Get Job Related Analyses\n\nYou can view related jobs that share the same working directory in a CloudOS workspace by using the `job related` command. This feature helps track job lineages, resume workflows, and understand job relationships.\n\nThe information is retrieved from CloudOS and can be displayed in multiple formats:\n\n- **Console display**: Rich formatted tables with pagination\n- **JSON**: Complete job data for programmatic processing\n\nTo get related analyses for a specific job:\n\n```bash\ncloudos job related --profile my_profile --job-id 66b5e5ded52f33061e2468d5\n```\n\nThe expected output is a formatted table showing:\n\n```console\nTotal related analyses found: 15\n\n                                              Related Analyses                                              \n┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┓\n┃ Status    ┃ Name                               ┃ Owner          ┃ ID                       ┃ Submit time         ┃ Run time  ┃ Total Cost ┃\n┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━┩\n│ completed │ workflow_analysis_v1               │ John Smith     │ 66b5e5ded52f33061e2468d5 │ 2024-08-09 14:23:10 │ 45m 12s   │ $1.2340    │\n│ completed │ workflow_analysis_v1_resumed       │ John Smith     │ 66b6f2a1e52f33061e246abc │ 2024-08-10 09:15:22 │ 12m 5s    │ $0.3210    │\n│ running   │ workflow_analysis_v2               │ Jane Doe       │ 66b7a3b2f52f33061e246def │ 2024-08-11 11:30:45 │ 5m 30s    │ $0.1150    │\n│ failed    │ workflow_analysis_test             │ John Smith     │ 66b8c4d3g52f33061e246ghi │ 2024-08-12 16:42:18 │ 2m 15s    │ $0.0450    │\n│ completed │ workflow_downstream_processing     │ Jane Doe       │ 66b9d5e4h52f33061e246jkl │ 2024-08-13 08:20:33 │ 28m 40s   │ $0.7890    │\n│ aborted   │ workflow_analysis_v1_test2         │ John Smith     │ 66bae6f5i52f33061e246mno │ 2024-08-14 13:55:07 │ 1m 8s     │ $0.0120    │\n│ completed │ workflow_final_results             │ Jane Doe       │ 66bbf807j52f33061e246pqr │ 2024-08-15 10:12:44 │ 18m 22s   │ $0.5670    │\n│ queued    │ workflow_reanalysis                │ John Smith     │ 66bcd918k52f33061e246stu │ 2024-08-16 15:38:19 │ N/A       │ N/A        │\n│ completed │ workflow_quality_control           │ Jane Doe       │ 66bdea29l52f33061e246vwx │ 2024-08-17 07:45:52 │ 8m 15s    │ $0.2340    │\n│ completed │ workflow_variant_calling           │ John Smith     │ 66befb3am52f33061e246yz1 │ 2024-08-18 12:03:28 │ 55m 48s   │ $1.5620    │\n└───────────┴────────────────────────────────────┴────────────────┴──────────────────────────┴─────────────────────┴───────────┴────────────┘\nOn page 1/2: n = next, p = prev, q = quit\n```\n\nThe table displays key information for each related job:\n- **Status**: Current job state (initializing, running, completed, aborting, aborted, failed)\n- **Name**: Job name assigned when submitted\n- **Owner**: User who submitted the job (first name and last name)\n- **ID**: Job identifier in CloudOS\n- **Submit time**: When the job was submitted (formatted as YYYY-MM-DD HH:MM:SS)\n- **Run time**: Actual execution time (formatted as hours, minutes, seconds)\n- **Total Cost**: Compute cost in USD\n\n**Pagination controls:**\n- Press `n` to navigate to the next page\n- Press `p` to navigate to the previous page\n- Press `q` to quit and return to the terminal\n\nThe console automatically clears between pages for a clean viewing experience, displaying 10 jobs per page.\n\n**Export options:**\n\nSave related analyses to JSON for programmatic analysis:\n\n```bash\ncloudos job related --profile my_profile --job-id 66b5e5ded52f33061e2468d5 --output-format json\n\ncat related_analyses.json\n{\n  \"66b5e5ded52f33061e2468d5\": {\n    \"status\": \"completed\",\n    \"name\": \"workflow_analysis_v1\",\n    \"user_name\": \"John\",\n    \"user_surname\": \"Smith\",\n    \"_id\": \"66b5e5ded52f33061e2468d5\",\n    \"createdAt\": \"2024-08-09T14:23:10.000Z\",\n    \"runTime\": 2712,\n    \"computeCostSpent\": 123400\n  },\n  \"66b6f2a1e52f33061e246abc\": {\n    \"status\": \"completed\",\n    \"name\": \"workflow_analysis_v1_resumed\",\n    \"user_name\": \"John\",\n    \"user_surname\": \"Smith\",\n    \"_id\": \"66b6f2a1e52f33061e246abc\",\n    \"createdAt\": \"2024-08-10T09:15:22.000Z\",\n    \"runTime\": 725,\n    \"computeCostSpent\": 32100\n  },\n  ...\n}\n```\n\nThe JSON format includes:\n- `status`: Job execution status\n- `name`: Job name\n- `user_name` and `user_surname`: Owner information\n- `_id`: Job identifier\n- `createdAt`: ISO 8601 timestamp of job submission\n- `runTime`: Execution time in seconds\n- `computeCostSpent`: Total cost in cents (divide by 100 for dollars)\n\n**Use cases:**\n\nRelated analyses are particularly useful for:\n- **Resumed workflows**: Find previous jobs to continue from checkpoints\n- **Job lineage tracking**: Understand which jobs are part of the same analysis\n- **Cost analysis**: Compare costs across related jobs\n- **Debugging**: Identify failed jobs in a workflow series\n- **Collaboration**: See all jobs from team members working on shared data\n\n\u003e [!NOTE]\n\u003e Related jobs are identified by their shared working directory folder ID. Only jobs within the same workspace that use the same working directory will be displayed.\n\n#### Delete Job Results\n\nCloudOS allows you to permanently delete job results directories to manage storage and clean up completed analyses. This feature provides a safe way to remove final analysis results with built-in confirmation prompts and status tracking.\n\n\u003e [!WARNING]\n\u003e Deleting job results is **irreversible**. All data and backups will be permanently removed and cannot be recovered. Use this feature with caution.\n\n**Delete Results with Confirmation**\n\nTo delete the results directory of a completed job, use the `--delete` flag with the `job results` command. By default, a confirmation prompt will be displayed before deletion:\n\n```bash\ncloudos job results --profile my_profile --job-id 62c83a1191fe06013b7ef355 --delete\n```\n\nThe expected output will show a warning confirmation:\n\n```console\nExecuting results...\nResults: s3://lifebit-featured-datasets/results/62c83a1191fe06013b7ef355\n\n⚠️ Deleting final analysis results is irreversible. All data and backups will be permanently removed and cannot be recovered. You can skip this confirmation step by providing '-y' or '--yes' flag to 'cloudos job results --delete'. Please confirm that you want to delete final results of this analysis? [y/n]\n```\n\nType `y` to proceed with deletion or `n` to cancel:\n\n```console\ny\n\nResults directories deleted successfully.\n```\n\n**Skip Confirmation Prompt**\n\nFor automated workflows or when you're certain about deletion, you can skip the confirmation prompt using the `-y` or `--yes` flag:\n\n```bash\ncloudos job results --profile my_profile --job-id 62c83a1191fe06013b7ef355 --delete --yes\n```\n\nThis will immediately proceed with deletion without prompting for confirmation:\n\n```console\nExecuting results...\nResults: s3://lifebit-featured-datasets/results/62c83a1191fe06013b7ef355\n\nResults directories deleted successfully.\n```\n\n**Error Handling**\n\nThe deletion command handles various scenarios with specific error messages:\n\n- **Job not found**: If the specified job ID doesn't exist or is not accessible\n- **No results directory**: If the job doesn't have a results directory associated with it\n- **Permission denied**: If your API key doesn't have permission to delete the results\n- **Resource conflict**: If the folder cannot be deleted due to dependencies\n\nExample when a job has no results:\n\n```bash\ncloudos job results --profile my_profile --job-id 62c83a1191fe06013b7ef355 --delete\n```\n\n```console\nExecuting results...\nSelected job does not have 'Results' information.\n```\n\n\u003e [!NOTE]\n\u003e The `--delete` flag is compatible with other `job results` options. You can combine it with `--verbose` for detailed logging, but cannot be used together with `--link` or `--status` flags.\n\n**Bulk Deletion**\n\nFor bulk deletion of job results and working directories across multiple jobs in a project, see the [delete_project_jobs.sh utility script](docs/utils/delete_project_jobs.md) in the `utils` folder. This script allows you to efficiently delete results and/or working directories for all jobs in a project.\n\n#### Archive Jobs\n\nCloudOS allows you to archive completed jobs to organize and manage your analysis history.\n\n\u003e [!NOTE]\n\u003e Archiving jobs does not delete any data or results. It simply adds metadata to mark jobs as archived for organizational purposes.\n\n\u003e [!IMPORTANT]\n\u003e **Admin Permissions Required**: Only workspace administrators can archive jobs belonging to other users. Regular users can only archive their own jobs.\n\n**Archive a Single Job**\n\nTo archive a single job, use the `job archive` command with the job ID:\n\n```bash\ncloudos job archive --profile my_profile --job-ids 69413101b07d5f5bb46891b4\n```\n\nThe expected output will confirm successful archiving:\n\n```console\nArchiving jobs...\nJob '69413101b07d5f5bb46891b4' archived successfully.\n```\n\n**Archive Multiple Jobs**\n\nYou can archive multiple jobs simultaneously by providing a comma-separated list of job IDs:\n\n```bash\ncloudos job archive --profile my_profile --job-ids \"job1,job2,job3\"\n```\n\nThis will archive all valid job IDs in a single operation:\n\n```console\nArchiving jobs...\n3 jobs archived successfully: job1, job2, job3\n```\n\n**Verbose Output**\n\nFor detailed information about the archiving process, use the `--verbose` flag:\n\n```bash\ncloudos job archive --profile my_profile --job-ids 69413101b07d5f5bb46891b4 --verbose\n```\n\nThis provides additional details about the operation:\n\n```console\nArchiving jobs...\n\t...Preparing objects\n\tThe following Cloudos object was created:\n\tCloudos(cloudos_url='https://cloudos.lifebit.ai', apikey='***', cromwell_token=None)\n\n\tArchiving jobs in the following workspace: workspace_123\n\tJob 69413101b07d5f5bb46891b4 found with status: completed\nJob '69413101b07d5f5bb46891b4' archived successfully.\n```\n\n**Error Handling**\n\nThe archive command handles various scenarios gracefully:\n\n- **Invalid Job IDs**: Jobs that don't exist are skipped with a warning message\n- **Mixed Valid/Invalid**: Valid jobs are archived, invalid ones are reported\n- **Empty Job List**: Providing empty job IDs results in a clear error message\n\nExample with mixed valid and invalid job IDs:\n\n```bash\ncloudos job archive --profile my_profile --job-ids \"valid_job,invalid_job\"\n```\n\n```console\nArchiving jobs...\nFailed to get status for job invalid_job, please make sure it exists in the workspace: Job not found\nJob 'valid_job' archived successfully.\n```\n\n**Command Options**\n\n- `--job-ids`: One or more job IDs to archive (comma-separated for multiple)\n- `--verbose`: Display detailed information about the archiving process\n- `--profile`: Use a specific configuration profile\n- `--workspace-id`: Specify the workspace ID (if not using profiles)\n- `--apikey`: Your CloudOS API key (if not using profiles)\n\n\u003e [!TIP]\n\u003e Use the `cloudos job list` command to identify jobs you want to archive. You can filter by status, project, or other criteria to find specific jobs for archiving.\n\n#### Unarchive Jobs\n\nCloudOS allows you to restore archived jobs back to their active state. Unarchiving removes the archived status while preserving all job data, results, and history.\n\n\u003e [!NOTE]\n\u003e Unarchiving jobs does not modify any data or results. It simply removes the archived metadata flag, making jobs appear as regular (non-archived) jobs again.\n\n\u003e [!IMPORTANT]\n\u003e **Admin Permissions Required**: Only workspace administrators can unarchive jobs belonging to other users. Regular users can only unarchive their own jobs.\n\n**Unarchive a Single Job**\n\nTo unarchive a single archived job, use the `job unarchive` command with the job ID:\n\n```bash\ncloudos job unarchive --profile my_profile --job-ids 6929d62fe63b3cba2b32261a\n```\n\nThe expected output will confirm successful unarchiving:\n\n```console\nUnarchiving jobs...\nJob '6929d62fe63b3cba2b32261a' unarchived successfully.\n```\n\n**Unarchive Multiple Jobs**\n\nYou can unarchive multiple jobs simultaneously by providing a comma-separated list of job IDs:\n\n```bash\ncloudos job unarchive --profile my_profile --job-ids \"job1,job2,job3\"\n```\n\nThis will unarchive all valid job IDs in a single operation:\n\n```console\nUnarchiving jobs...\n3 jobs unarchived successfully: job1, job2, job3\n```\n\n**Verbose Output**\n\nFor detailed information about the unarchiving process, use the `--verbose` flag:\n\n```bash\ncloudos job unarchive --profile my_profile --job-ids 6929d62fe63b3cba2b32261a --verbose\n```\n\nThis provides additional details about the operation:\n\n```console\nUnarchiving jobs...\n\t...Preparing objects\n\tThe following Cloudos object was created:\n\tCloudos(cloudos_url='https://cloudos.lifebit.ai', apikey='***', cromwell_token=None)\n\n\tUnarchiving jobs in the following workspace: workspace_123\n\tJob 6929d62fe63b3cba2b32261a found with status: completed\nJob '6929d62fe63b3cba2b32261a' unarchived successfully.\n```\n\n**Error Handling**\n\nThe unarchive command handles various scenarios gracefully:\n\n- **Invalid Job IDs**: Jobs that don't exist are skipped with a warning message\n- **Mixed Valid/Invalid**: Valid jobs are unarchived, invalid ones are reported\n- **Empty Job List**: Providing empty job IDs results in a clear error message\n\nExample with mixed valid and invalid job IDs:\n\n```bash\ncloudos job unarchive --profile my_profile --job-ids \"valid_job,invalid_job\"\n```\n\n```console\nUnarchiving jobs...\nFailed to get status for job invalid_job, please make sure it exists in the workspace: Job not found\nJob 'valid_job' unarchived successfully.\n```\n\n**Command Options**\n\n- `--job-ids`: One or more job IDs to unarchive (comma-separated for multiple)\n- `--verbose`: Display detailed information about the unarchiving process\n- `--profile`: Use a specific configuration profile\n- `--workspace-id`: Specify the workspace ID (if not using profiles)\n- `--apikey`: Your CloudOS API key (if not using profiles)\n\n**Managing Job Lifecycle**\n\nUse the archive and unarchive commands together to manage your job organization:\n\n1. **Archive completed jobs** to keep your workspace organized\n2. **Unarchive when needed** to access or review historical analyses\n3. **Combine with filtering** using `cloudos job list` to manage jobs in bulk\n\n\u003e [!TIP]\n\u003e Archived jobs remain fully accessible - archiving is purely for organizational purposes. Use `cloudos job list` with appropriate filters to view and manage both archived and active jobs.\n\n### Bash Jobs\nExecute bash scripts on CloudOS for custom processing workflows. Bash jobs allow you to run shell commands with custom parameters and are ideal for data preprocessing or simple computational tasks.\n\n#### Send Array Job\n\n\nA bash job can be sent to CloudOS using the command `bash` and the subcommand `job`. In this case, the `--workflow-name` must be a bash job already present in the platform. Bash jobs are identified by bash icon (unlike Nextflow jobs, which are identified with Nextflow icon).\n\n```bash\ncloudos bash job \\\n    --profile my_profile \\\n    --workflow-name ubuntu \\\n    --parameter -test_variable=value \\\n    --parameter --flag=activate \\\n    --parameter send=\"yes\" \\\n    --job-name $JOB_NAME \\\n    --command \"echo 'send' \u003e new_file.txt\" \\\n    --resumable\n```\n\nThe `--command` parameter is required and will setup the command for the parameters to run.\n\nEach `--parameter` can have a different prefix, either '--', '-', or '', depending on the use case. These can be used as many times as needed.\n\n\u003e [!NOTE]\n\u003e At the moment only string values are allowed to the `--parameter` options, adding a filepath at the moment does not upload/download the file. This feature will be available in a future implementation.\n\nIf everything went well, you should see something like:\n\n```console\nCloudOS bash functionality.\n\n        Job successfully launched to CloudOS, please check the following link: https://cloudos.lifebit.ai/app/advanced-analytics/analyses/682622d09f305de717327334\n        Your assigned job id is: 682622d09f305de717327334\n\n        Your current job status is: initializing\n        To further check your job status you can either go to https://cloudos.lifebit.ai/app/advanced-analytics/analyses/682622d09f305de717327334 or use the following command:\n        cloudos job status \\\n                --apikey $MY_API_KEY \\\n                --cloudos-url https://cloudos.lifebit.ai \\\n                --job-id 682622d09f305de717327334\n```\n\nAs you can see, the current status is `initializing`. This will change while the job progresses. To check the status, just apply the suggested command.\n\nOther options like `--wait-completion` are also available and work in the same way as for the `cloudos job run` command.\nCheck `cloudos bash job --help` for more details.\n\n#### Submit a Bash Array Job\n\nRun parallel bash jobs across multiple samples or datasets using array files. This is particularly useful for processing large datasets where each row represents a separate computational task.\n\nWhen running a bash array job, you can specify an array file containing sample information and process each row in parallel. The CLI validates column names and provides flexible parameter mapping.\n\n```bash\ncloudos bash array-job --profile my_profile --command \"echo {file}\" --array-file my_array.csv --separator ,\n```\n\n##### Options\n\n###### Array File\n- **`--array-file`**: Specifies the path to a file containing a set of columns useful in running the bash job. This option is **required** when using the command `bash array-job`.\n\n###### Separator\n- **`--separator`**: Defines the separator to use in the array file. Supported separators include:\n    - `,` (comma)\n    - `;` (semicolon)\n    - `tab`\n    - `space`\n    - `|` (pipe)\nThis option is **required** when using the command `bash array-job`.\n\n###### List Columns\n- **`--list-columns`**: Lists the columns available in the array file. This is useful for inspecting the structure of the file. This flag disables sending the job, it just prints the column list, one per line:\n\n```console\nColumns:\n    - column1\n    - column2\n    - column3\n```\n\n###### Array File Project\n- **`--array-file-project`**: Specifies the name of the project in which the array file is placed, if it is different from the project specified by `--project-name`.\n\n###### Disable Column Check\n- **`--disable-column-check`**: Disables the validation of columns in the array file. This implies that each `--array-parameter` value is not checked against the header of the `--array-file`. For example, `--array-parameter --bar=foo`, without `--disable-column-check`, expects the array file to have column 'foo' inside the file header. If the column is not present, the CLI will throw an error. When `--disable-column-check` flag is added, the column check is not performed and the bash array job is sent to the platform.\n\n\u003e [!NOTE]\n\u003e Adding `--disable-column-check` will make the CLI command run without errors, but the errors might appear when checking the job in the platform, if the columns in the array file do not exists, as depicted with `--array-parameter`.\n\n###### Array Parameter\n- **`-a` / `--array-parameter`**: Allows specifying the column name present in the header of the array file. Each parameter should be in the format `arary_parameter_name=array_file_column`. For example:\n    - `-a --test=value` or\n    - `--array-parameter -test=value`\nspecify a column named 'value' in the array file header. Adding array parameters not present in the header will cause an error. This option can be used multiple times to include as many array parameters as needed. This type of parameter is similar to `-p, --parameter`, both parameters can be interpolated in the bash array job command (either with `--command` or `--custom-script-path`), but this parameter can only be used to name the column present in the header of the array file.\n\nFor example, the array file has the following header:\n\n```console\nid,bgen,csv\n1,s3://data/adipose.bgen,s3://data/adipose.csv\n2,s3://data/blood.bgen,s3://data/blood.csv\n3,s3://data/brain.bgen,s3://data/brain.csv\n...\n```\nand in the command there is need to go over the `bgen` column, this can be specified as `--array-parameter file=bgen`, refering to the column in the header.\n\n###### Custom Script Path\n- **`--custom-script-path`**: Specifies the path to a custom script to run in the bash array job instead of a command. When adding this command, parameter `--command` is ignored. To ensure the script runs successfully, you must either:\n\n1. Use a Shebang Line at the Top of the Script\n\nThe shebang (#!) tells the system which interpreter to use to run the script. The path should match absolute path to python or other interpreter installed inside the docker container.\n\nExamples:\n`#!/usr/bin/python3` –-\u003e for Python scripts\n`#!/usr/bin/Rscript` –-\u003e for R scripts\n`#!/bin/bash`        –-\u003e for Bash scripts\n\nExample Python Script:\n\n```python\n#!/usr/bin/python3\nprint(\"Hello world\")\n```\n \n2. Or use an interpreter command in the executable field\n\nIf your script doesn’t have a shebang line, you can execute it by explicitly specifying the interpreter in the executable command:\n\n```console\npython my_script.py\nRscript my_script.R\nbash my_script.sh\n```\nThis assumes the interpreter is available on the container’s $PATH. If not, you can use the full absolute path instead:\n\n```console\n/usr/bin/python3 my_script.py\n/usr/local/bin/Rscript my_script.R\n```\n\n###### Custom Script Project\n- **`--custom-script-project`**: Specifies the name of the project in which the custom script is placed, if it is different from the project specified by `--project-name`.\n\nThese options provide flexibility for configuring and running bash array jobs, allowing to tailor the execution for specific requirements.\n\n#### Use multiple projects for files in `--parameter` option\n\nThe option `--parameter` could specify a file input located in a different project than option `--project-name`. The files can only be located inside the project's `Data` subfolder, not `Cohorts` or `Analyses Results`. The accepted structures for different parameter projects are:\n- `-p/--parameter \"--file=\u003cproject\u003e/Data/file.txt\"`\n- `-p/--parameter \"--file=\u003cproject\u003e/Data/subfolder/file.txt\"`\n- `-p/--parameter \"--file=Data/subfolder/file.txt\"` (the same project as `--project-name`)\n- `-p/--parameter \"--file=\u003cproject\u003e/Data/subfolder/*.txt\"`\n- `-p/--parameter \"--file=\u003cproject\u003e/Data/*.txt\"`\n- `-p/--parameter \"--file=Data/*.txt\"` (the same project as `--project-name`)\n\nThe project should be specified at the beginning of the file path. For example:\n\n```bash\ncloudos bash array-job --profile my_profile -p file=Data/input.csv\n```\nThis will point to the global project, specified with `--project-name`. In contrast:\n\n```bash\ncloudos bash array-job \\\n    --profile my_profile \\\n    -p data=Data/input.csv \\\n    -p exp=PROJECT_EXPRESSION/Data/input.csv \\\n    --project-name \"ADIPOSE\"\n```\nfor parameter `exp` it will point to a project named `PROJECT_EXPRESSION` in the File Explorer, and `data` parameter will be found in the global project `ADIPOSE`.\n\nApart from files, the parameter can also take glob patterns, for example:\n\n```bash\ncloudos bash array-job \\\n    --profile my_profile \\\n    -p data=Data/input.csv \\\n    -p exp=\"PROJECT_EXPRESSION/Data/*.csv\" \\\n    --project-name \"ADIPOSE\"\n```\nwill take all `csv` file extensions in the specified folder.\n\n\u003e [!NOTE]\n\u003e When specifying glob patterns, depending on the terminal it is best to add it in double quotes to avoid the terminal searching for the glob pattern locally, e.g. `-p exp=\"PROJECT_EXPRESSION/Data/*.csv\"`.\n\n\u003e [!NOTE]\n\u003e Project names in the `--parameter` option can start with either forward slash `/` or without. The following are the same: `-p data=/PROJECT1/Data/input.csv` and `-p data=PROJECT1/Data/input.csv`.\n\n---\n\n\n\n### Interactive Sessions\n\nInteractive sessions allow you to work within the platform using different virtual environments (Jupyter Notebooks, RStudio, VS Code, etc.). You can list, monitor, and manage your interactive sessions using the CLI.\n\n#### List Interactive Sessions\n\nYou can get a list of all interactive sessions in your workspace by running `cloudos interactive-session list`. The command can produce three different output formats that can be selected using the `--output-format` option:\n\n- **stdout** (default): Displays a table directly in the terminal with interactive pagination \n- **csv**: Saves session data to a CSV file with a minimum predefined set of columns by default, or all available columns using the `--all-fields` parameter\n- **json**: Saves complete session information to a JSON file with all available fields\n\nTo display the list of interactive sessions as a formatted table in the terminal:\n\n```bash\ncloudos interactive-session list --profile my_profile\n# or explicitly:\ncloudos interactive-session list --profile my_profile --output-format stdout\n```\n\nThe table displays sessions with pagination controls (press `n` for next page, `p` for previous page, or `q` to quit):\n\n```console\n                          Interactive Sessions                          \n┏━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━┓\n┃ Status  ┃ Name         ┃ Type           ┃ ID            ┃ Owner  ┃\n┡━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━┩\n│ paused  │ cloudosR     │ RStudio        │ 69aee0dba197… │ Leila  │\n│ running │ analysis-dev │ Jupyter        │ 69ae972a18f0… │ John   │\n│ paused  │ test_session │ VS Code        │ 69a996c098ab… │ James  │\n└─────────┴──────────────┴────────────────┴───────────────┴────────┘\n\nTotal sessions: 15\nPage: 1 of 3\nSessions on this page: 5\n\nn = next, p = prev, q = quit\n```\n\nTo save sessions to a CSV file with all available fields:\n\n```bash\ncloudos interactive-session list --profile my_profile --output-format csv --all-fields\n```\n\nThe expected output is something similar to:\n\n```console\nInteractive session list saved to interactive_sessions_list.csv\n```\n\nTo save the same information in JSON format:\n\n```bash\ncloudos interactive-session list --profile my_profile --output-format json\n```\n\n```console\nInteractive session list collected with a total of 15 sessions.\nInteractive session list saved to interactive_sessions_list.json\n```\n\n**Filtering Options**\n\nYou can filter sessions by status and other criteria:\n\n```bash\n# Filter by status (setup, initialising, running, scheduled, paused)\ncloudos interactive-session list --profile my_profile --filter-status running\n\n# Show only your own sessions\ncloudos interactive-session list --profile my_profile --filter-only-mine\n\n# Include archived sessions\ncloudos interactive-session list --profile my_profile --archived\n\n# Custom pagination\ncloudos interactive-session list --profile my_profile --limit 20 --page 2\n```\n\n**Table Columns**\n\nYou can customize which columns to display:\n\n```bash\n# Display specific columns\ncloudos interactive-session list --profile my_profile --table-columns \"status,name,owner,project,created_at,cost\"\n```\n\nAvailable columns: `backend`, `cost`, `cost_limit`, `created_at`, `id`, `instance`, `name`, `owner`, `project`, `resources`, `runtime`, `saved_at`, `spot`, `status`, `time_left`, `type`, `version`\n\n#### Create Interactive Session\n\nYou can create and start a new interactive session using the `cloudos interactive-session create` command. This command provisions a new virtual environment with your specified configuration.\n\nThe command automatically loads API credentials and workspace information from your profile configuration, so you only need to specify the session-specific details.\n\n**Basic Usage**\n\nCreate a simple Jupyter notebook session:\n\n```bash\ncloudos interactive-session create \\\n  --profile my_profile \\\n  --name \"My Analysis\" \\\n  --session-type jupyter\n```\n\nCreate an RStudio session with specific R version:\n\n```bash\ncloudos interactive-session create \\\n  --profile my_profile \\\n  --name \"R Analysis\" \\\n  --session-type rstudio \\\n  --r-version 4.4.2\n```\n\nCreate a VS Code session (AWS only):\n\n```bash\ncloudos interactive-session create \\\n  --profile my_profile \\\n  --name \"Development\" \\\n  --session-type vscode\n```\n\nCreate a Spark cluster session with custom instance types (AWS only):\n\n```bash\ncloudos interactive-session create \\\n  --profile my_profile \\\n  --name \"Spark Analysis\" \\\n  --session-type spark \\\n  --spark-master c5.2xlarge \\\n  --spark-core c5.xlarge \\\n  --spark-workers 3\n```\n\n**Configuration Options**\n\nYou can customize your session with various options:\n\n```bas","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flifebit-ai%2Fcloudos-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flifebit-ai%2Fcloudos-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flifebit-ai%2Fcloudos-cli/lists"}