I'm sorry I couldn't think of a superhero pun for this repository
This plugin extends the Illumina Connected Analytics v2 (ICAv2) CLI with higher-level operations for bundle management, project data, pipeline deployment, analysis inspection, and multi-tenant configuration.
Much of this is inspired from the ica-ica-lazy repo.
Autocompletion features are courtesy of the app-spec project.
Please refer to the wiki page for installation and usage.
The CLI now supports AWS CLI-style named profiles stored in ~/.icav2-cli-plugins/config. This replaces the previous shell-function-based tenant/project context management and enables:
- Standalone operation — no shell function sourcing required
- Multi-tenant profiles — switch tenants via
ICAV2_PROFILEenv var or--profileflag - Script-friendly — works in subshells, CI/CD pipelines, and non-interactive contexts
- Token caching — per-profile token cache with automatic refresh
- Bundled binary — local
_icav2binary removes external dependency oncommand icav2 - Fast startup — lazy imports keep
icav2 helpandicav2 versionunder 500ms
# Install (downloads icav2 binary + sets up Python env)
bash install.sh
# Configure your first profile
icav2 configure set
# Or configure a named profile
icav2 configure set production
# List configured profiles
icav2 configure list
# Use a specific profile
export ICAV2_PROFILE=production
icav2 projectdata ls /
# Or use the --profile flag
icav2 --profile production projectdata ls /# ~/.icav2-cli-plugins/config
[default]
server_url = ica.illumina.com
x_api_key = <your-api-key>
project_name = my-project
[profile production]
server_url = ica.illumina.com
x_api_key = <prod-api-key>
project_id = <project-uuid>
output_format = json| Priority | Source |
|---|---|
| 1 (highest) | Environment variables (ICAV2_ACCESS_TOKEN, ICAV2_PROJECT_ID, ICAV2_BASE_URL) |
| 2 | --profile CLI flag |
| 3 | ICAV2_PROFILE env var |
| 4 | ICAV2_TENANT_NAME env var (backward compatibility) |
| 5 (lowest) | [default] profile in config file |
Existing environment variables continue to work:
ICAV2_ACCESS_TOKEN— overrides profile tokenICAV2_PROJECT_ID— overrides profile projectICAV2_BASE_URL— overrides profile server URLICAV2_TENANT_NAME— treated as profile name whenICAV2_PROFILEis unset
The legacy tenants/ directory and shell functions are preserved. Existing workflows using icav2 tenants init / icav2 tenants enter still function.
Profile management commands for the new configuration system.
Interactively configure a profile (prompts for server URL, API key, project name)
icav2 configure set # Configure the default profile
icav2 configure set production # Configure a named profileDisplay all configured profiles
icav2 configure listSupport for generating and deploying bundles.
Initialise a bundle
See more in icav2 bundles init
Get a bundle
See more in icav2_bundles_get
List bundles
See more in icav2_bundles_list
Add data to a bundle
See more in icav2_bundles_add_data
Add pipeline to a bundle
See more in icav2_bundles_add_pipeline
Release a bundle
See more in icav2_bundles_release
Add a released bundle to a project
See more in icav2_bundles_add_to_project
Register a tenant with the plugins repository (legacy — consider using
icav2 configure setinstead)
See more in icav2_context_handling
List available tenants that have been initialised with 'icav2 tenants init'
See more in icav2_context_handling
Enter a tenant that has been initialised with 'icav2 tenants init'
See more in icav2_context_handling
- Autocompletion ✅
Set a default project to enter for a given tenant
See more in icav2_context_handling
Set a registered tenant to be the default tenant
See more in icav2_context_handling
Inspired by ica-context-switcher Enter a project in a terminal without affecting default project or other open terminals
- Autocompletion ✅
See more in icav2_context_handling
Inspired by gds-ls
List all files and folders in directory
- Autocompletion: ✅
See more in project data wiki
Inspired by gds-view
View a file in stdout
- Autocompletion: ✅
See more in project data wiki
Inspired by gds-find
Mimics the gnutls find command with --maxdepth, --mindepth, --type and --name parameters available
- Autocompletion ✅
See more in project data wiki
Inspired by gds-sync-download
Sync files from icav2 to local project with an aws s3 sync command
- Autocompletion ✅
See more in project data wiki
Inspired by gds-sync-upload
Sync files from local to icav2 with an aws s3 sync command
- Autocompletion ✅
See more in project data wiki
Inspired by gds-create-download-script
Create a download script with a list of encoded presigned urls for a given directory.
- Autocompletion ✅
See more in project data wiki
Create a pipeline in an icav2 project from a zipped up CWL directory
- Autocompletion ✅
See more in project pipelines wiki
Create a pipeline in an icav2 project from a GitHub release
- Autocompletion ✅
See more in project pipelines wiki
Inspired by cwl-ica-create-workflow-submission-template Create a WES input template ready for launch in ICAv2
- Autocompletion ✅
See more in project pipelines wiki
Launch a CWL Workflow from a wes template
- Autocompletion ✅
See more in project pipelines wiki
Release a projectpipeline from the CLI
- Autocompletion ✅
See more in project pipelines wiki
Collect inputjson used by an analyses
- Autocompletion ✅
See more in project analyses wiki
Collect outputjson used by an analyses
- Autocompletion ✅
See more in project analyses wiki
Inspired by ica-get-tasks-from-workflow-history
Collect all steps in a workflow run, useful for debugging
- Autocompletion ✅
See more in project analyses wiki
Get logs of a step id for a workflow
- Autocompletion ✅
See more in project analyses wiki
Generate a gantt chart for a workflow
- Autocompletion ✅
See more in project analyses wiki
~/.icav2-cli-plugins/
├── config # INI-style profile configuration
├── bin/
│ ├── icav2 # Python CLI wrapper (entry point)
│ └── _icav2 # Bundled icav2 binary
├── cache/
│ └── <profile_name>/
│ └── session.yaml # Cached access token per profile
├── pyenv/ # Python virtual environment
├── autocompletion/ # Bash/zsh completions
└── tenants/ # Legacy tenant configs (preserved if present)
List all available components to view for a cwltool step.
View a component for a cwltool step