
Research
SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.
fovus
Advanced tools
The official CLI tool for interacting with the Fovus Serverless HPC Platform. Installation, setup, and usage documentation is provided here. Further detail is available via the CLI --help command or at our CLI documentation website.
Features include job creation (with validation), job status checking, and job file downloading. In addition, reusable job and user configurations with optional command-line overriding are supported. Additional features are detailed in this README and in our help documentation (linked above).
pip install fovus
Note:
The pip package is usually bundled with Python. If you have Python and you don't have pip, you can install pip at the following link: https://pip.pypa.io/en/stable/installation/.
Windows: If you encounter a command not found error and have already installed Python, try re-running the Python installer, selecting "Modify". In the following menus (you may have to click "Next"), select the following options:
Unix-based OS: If you encounter any Python-related issues, try reinstalling Python according to the instructions above.
Before use, set up the following:
To login with your Fovus credentials, run the command:
fovus auth login
To logout from the Fovus CLI, run the command:
fovus auth logout
To view the current user and workspace information or verify whether a user is authenticated, run the command:
fovus auth user
In "Run" (Windows + R), enter sysdm.cpl
System Properties will open up. Go to Advanced -> Environment Variables
Under "User variables for xxx", click the variable labeled "Path"
Click the "Edit" button under the "User variables for xxx" section
Click the "New" button in the "Edit environment variables" pane that opens
In the terminal you used to install the Fovus CLI, run the following command: pip show fovus (this will show a message similar to the sample output provided after these instructions)
Copy the "Location" value from the output of the above command (e.g., C:\Users\TestFovusUser\AppData\Local\Programs\Python\Python311\Lib\site-packages) and paste it as a new environment variable. Once it is pasted, replace the \Lib\site-packages with \Scripts (e.g., C:\Users\TestFovusUser\AppData\Local\Programs\Python\Python311\Scripts)
Click "OK" on all open environment variable windows.
Sample output for pip show fovus (reference from step 6 above):
PS C:\Users\TestFovusUser> pip show fovus
Name: fovus
Version: 1.0.6
Summary: The Fovus Python CLI
Home-page:
Author: Fovus Corporation
Author-email:
License:
Location: C:\Users\TestFovusUser\AppData\Local\Programs\Python\Python311\Lib\site-packages
Requires: boto3, dateparser, jsonschema, pycognito, requests, tqdm
Required-by:
Note: If the above fails, try reinstalling/modifying your Python and pip installation following the instructions under the "Prerequisites" section above.
See the "Advanced Usage" section for additional options regarding file inclusion/exclusion for create job and download job files.
fovus config open
Note:
This command will upload files from the specified directory to Fovus and create a job.
Upon job creation:
.fovus folder will be created in your local file root directory, which will contain a job_data.json file (i.e., /path/to/job/file/root/directory/.fovus/job_data.json. This json is used to facilitate checking job status and downloading job files by tracking the job's jobID.fovus job create "/path/to/job/config/file.json" "/path/to/job/file/root/directory"
Note:
fovus config open.~/.fovus/job_configs/FOVUS_job_template_containerized.json or ~/.fovus/job_configs FOVUS_job_template_monolithic.json.--job-name "your_job_name_here" to set a custom job name.If you created the job using the Fovus CLI on the same local machine (i.e., the .fovus folder was created in your job root directory -- see "Creating job" section for details):
fovus job status --job-directory "/path/to/job/file/root/directory
If you did not create the job using the Fovus CLI:
fovus job status --job-id "your_job_id"
Note:
If you created the job using the Fovus CLI on the same local machine (i.e., the .fovus folder was created in your job root directory -- see "Creating job" section for details):
fovus job download "/path/to/job/file/root/directory"
If you did not create the job using the Fovus CLI:
fovus job download "/path/to/job/file/root/directory" --job-id "your_job_id"
Note:
To upload files or directories to Fovus storage for archival, sharing, use in jobs, or access from workstations, utilize the following command:
fovus storage upload "/path/to/file/directory/or/file"
To upload a file to a specific path within the My Files section of Fovus storage, you can append the path within My Files to the command:
fovus storage upload "/path/to/file/directory/or/file" "your/destination/path"
Supported operating systems: Windows, Ubuntu, CentOS, and Redhat.
To mount Fovus Storage as a network drive on your local machine, use the following command:
fovus storage mount
Supported file operations: sequential & random read, sequential write, overwrite, delete
Job files are read-only.
The Fovus Storage network file system does not support modifying existing files directly. To modify a file, overwrite it instead. We recommend using Fovus Storage as a cloud archive instead of a working directory due to suboptimal performance and usability.
Fovus Storage will be mounted as a network file system at /fovus-storage/ on Linux or <WindowsDrive>:\fovus-storage\ on Windows.
When creating a job, the arguments --include-paths and --exclude-paths are available to you. These arguments are used to include/exclude filepaths for upload/download. Valid values for these arguments are alphanumeric along with the wildcards: * (matches any number of characters), ? (matches any single character).
For example:
--include-paths "Car*/*" "config?/*" includes:
Car.configX, where X is any character.--exclude-paths "Car*/*.log" "local?/*" uploads all files except:
.log filetypes within every directory that begins with Car.localX where X is any character.fovus job create--include-paths will only upload filepaths (relative to the job root directory) that match the expressions provided.--exclude-paths will upload all filepaths except those that match the expression provided.fovus job download--include-paths will only download filepaths (relative to the job root directory) that match the expressions provided.--exclude-paths will download all filepaths except those that match the expression provided.Any value in a job config or a user config can be overriden by providing the respective json key as an argument. Examples are given below, and more details are available in --help.
All single-value arguments (i.e., not lists) can be overriden using a single argument and a value. For example, the benchmarkingProfileName in your job config, you can do so by providing the argument --benchmarking-profile-name "your_benchmarking_profile_name_here".
All lists of values can be overridden using a single argument and a list of values. For example, if you want to override the supportedCpuArchitectures in your job config, you can do so by providing the argument --supported-cpu-architectures "x86_64" "arm64".
Currently, the only list of objects that exists is the monolithicList, which is only used for monolithic jobs. The only value that can be overridden in a monolithicList is licenseCountPerTask. To do this, use the command --monolithic-override "vendor_name" "software_name" "license_feature" "your_new_license_count_here".
Note:
FAQs
The Fovus Python CLI
We found that fovus demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.

Company News
Socket is proud to join the OpenJS Foundation as a Silver Member, deepening our commitment to the long-term health and security of the JavaScript ecosystem.

Security News
npm now links to Socket's security analysis on every package page. Here's what you'll find when you click through.