@corva/create-app
Apps generator for corva.ai.
Prerequisites
- Node.js 24.22.2 or newer (https://nodejs.org/en/download/)
Installation
npm i -g @corva/create-app
Usage
corva-create-app provides a user-friendly CLI wizard to create an app.
Usage: create-corva-app [options] [command]
Options:
-h, --help display help for command
Commands:
create [options] [project-directory] Create a new app
zip [options] <project-directory> [patterns...] Bundle app
release [options] <project-directory> [patterns...] Release app
rerun [options] <project-directory> Rerun app
attach [options] <project-directory> Add app to live assets streams
help [command] display help for command
Create an app
To create a new app use create command.
Usage: create-corva-app create <project-directory> [options]
Create a new app
Arguments:
project-directory Project directory to work with (default: "Current working dir")
Options:
--developerName [string] Enter the Developer Name (default: "O&G Company")
--developerIdentifier [string] Enter the Developer Identifier (default: "oandgc")
--appType Choose the App Type (choices: "ui", "scheduler", "stream", "task")
--schedulerType Choose the scheduler type (choices: "1", "2", "4")
--cronString [string] Provide CRON string for the scheduler (default: "*/5 * * * *")
--depthMilestone [number] Provide depth milestone for the scheduler (default: 1)
--logType Choose the log type (choices: "time", "depth")
--appName [string] Enter the App Name (default: "Corva Dev Center App")
--description [string] Enter description (default: "This is the description of my app. You can do great things with it!")
--summary [string] Enter summary (default: "More information about this app goes here")
--category [string] Enter category (default: "")
--website [string] Enter website (default: "https://www.oandgexample.com/my-app/")
--segments Choose segments (choices: "drilling", "completion")
--runtime Choose runtime (choices: "ui", "nodejs24.x", "python3.14", "python3.13")
-p, --packageManager Please select the desired package manager (choices: "yarn", "npm")
-t, --useTypescript [boolean] Would you like to use TypesScript? (default: false)
--silent [boolean] Only log result of the operation (default: false)
--no-dependencies-install Skip installing dependencies
--no-git-init Skip initializing git repository
Examples
Create a UI application
create-corva-app test --appName "Test" --segments "drilling" --category "wellDesign" --appKey "some-company.test.ui" --appType "ui" --runtime "ui"
Create a NodeJs TypeScript application
create-corva-app test --appName "Test" --segments "drilling" --category "wellDesign" --appKey "some-company.test.scheduler" --appType "scheduler" --runtime "nodejs24.x" -t
Create a Python application
create-corva-app test --appName "Test" --segments "drilling" --category "analytics" --appKey "some-company.test.stream" --appType "stream" --runtime "python3.14"
Zip
To create a zip that contains app ready to be deployed to Corva use zip command.
Usage: create-corva-app zip [options] <project-directory> [patterns...]
Bundle app
Arguments:
project-directory Project directory to work with
patterns Additional patterns to zip (default: [])
Options:
--bump-version <string> Bump version (choices: "major", "minor", "patch", "skip")
--ignored-files [ignoredFiles...] Patterns to skip zip
--silent [boolean] Only log result of the operation (default: false)
What is getting zipped?
By default next files will be included.
For frontend apps:
manifest.jsonpackage.jsonyarn.lock.npmrcconfig-overrides.js(webpack apps)vite.config.mjsindex.htmldevApp.jsisolatedApp.jsvitest.setup.jsvitest.global-setup.js- all files under
src - all files under
config - all files under
public tsconfig.json
For apps that written in node:
manifest.jsonpackage.json- either
package-lock.jsonoryarn.lock - all files under
configfolder - all
*.jsfiles undersrcandlibfolders (iftypescriptis not used) tsconfig.json,tsconfig.build.json(iftypescriptis used)- all
*.tsfiles undersrcandlibfolders (iftypescriptis used)
For apps that written in python:
manifest.jsonpyproject.toml,uv.lock(if present in the app)- all
*.pyfiles
If you want to zip some files that are not included pass that as patterns arguments.
To skip some files from zipping please use --ignored-files option.
Examples
Create a zip file from the content of test-app folder & put zip file in it.
create-corva-app zip test-app
Create a zip file & automatically bump version
create-corva-app zip test-app --bump-version=patch
Create a zip file from the content of test-app folder with custom content (globs are supported)
create-corva-app zip test-app some/missing/file1 some/other/missing/file2 all/files/*.glob
Release
To push app to Corva use release command.
Usage: create-corva-app release [options] <project-directory> [patterns...]
Release app
Arguments:
project-directory Project directory to work with
patterns Additional patterns to zip (default: [])
Options:
--bump-version <string> Bump version (choices: "major", "minor", "patch", "skip")
--ignored-files [string...] Patterns to skip zip (default: [])
--env [string] Environment to use (choices: "qa", "staging", "production", default: "qa")
--api-key [string] Pre generated API key for authorization during app upload
--app-key [string] Explicitly set appKey that CLI is going to use. Otherwise it will be taken from manifest.json file. [works only for Front-End apps currently]
--notes [string] Add custom notes to published app
--label [string] Put a label on the release (choices: "DEV", "BETA", "PROD")
--remove-on-fail [boolean] Remove release if it fails during deployment (default: false)
--silent [boolean] Only log result of the operation (default: false)
--remove-on-success App package (.zip) will not be deleted after upload (default: true)
--remove-existing [boolean] If package.json version is already taken - remove the previously published package and upload a new one (default: false)
--zip-file-name <string> Upload an existing ZIP without recreating it or bumping its version
--prebuilt Skip the Corva build for an existing ZIP (requires --zip-file-name)
--author [string] Author name for the audit
Examples
Release a locally built package
Build the app and install its dependencies in your own CI, then upload the prepared ZIP:
create-corva-app release . --zip-file-name app-prebuilt.zip --prebuilt \
--env production --api-key "$CORVA_API_KEY" --label BETA --notes "Prebuilt release"
The CLI uploads the ZIP unchanged, waits for deployment, and publishes it with the requested label
and notes. It does not build, install dependencies, bump versions, or delete the supplied ZIP.
Without --prebuilt, Corva uses its normal build process, including when --zip-file-name is supplied.
Keep manifest.json in the project directory, and package.json for JavaScript apps: the CLI uses
these files to identify the app and, with --remove-existing, its version. They must match the ZIP.
Set the final app key and version before compiling an FE app; the bundle embeds this identity.
With --prebuilt, the CLI checks the ZIP structure and relevant metadata before contacting Corva.
It checks root manifest/app metadata, FE app.js, JavaScript package versions, and Python entrypoint and
installed-dependency layout. Duplicate and unsafe archive paths are rejected. Metadata files are
limited to 1 MiB each. It does not rewrite the ZIP or verify imports, embedded FE identity, or native
dependency compatibility; deployment and runtime testing are still needed.
ZIP entries must be at the archive root, without an enclosing project folder:
- FE:
manifest.json,package.json, and the contents ofdist/(includingapp.js, chunks, and any required assets). Do not includedist/itself, source code,node_modules/, or an offline mirror. - Python BE:
manifest.json, application code at the manifest's entrypoint path,requirements.txt, and installed runtime dependencies underrequirements/. Build dependencies for Linux and the Python version and CPU architecture declared in the manifest; macOS or Windows dependencies may not run on Lambda. Include all runtime dependencies because Corva skips dependency installation.
Prebuilt uploads still use the platform's upload and runtime limits; this option does not increase them.
Make a release with ask for version
create-corva-app release test-app
Make a release without version increase
create-corva-app release test-app --bump-version=skip
Make a release with increased version
create-corva-app release test-app --bump-version=patch
Make a release with custom version
create-corva-app release test-app --bump-version=4.2.0
Make a release with author option(by default it will use your GitHub username)
create-corva-app release test-app --author=MyName