.vpkg files (Vega’s standard package format).
To get started with VPT, install the Vega Software Development Kit (SDK), which includes two main command-line tools:
- VPT: Manages package operations like creation and validation
- Vega CLI: Handles the overall app development workflow, including building and deploying apps
- Examine packages
- Validate content
- Add custom signatures to your apps
Package contents and filtering
When you runvega exec vpt pack, VPT reads only the folders that Vega OS mounts at runtime. It drops build artifacts that have no runtime purpose on a device.
Starting with VPT 1.2.18, VPT also drops files from lib/ that aren’t shared libraries. If you upgrade from an earlier Vega SDK version, files that your app previously shipped in lib/ might no longer be packaged.
This filtering runs inside vega exec vpt pack, which every build path uses. It applies to React Native for Vega apps and native apps alike, including builds you start with vega build.
Folders that VPT packages
VPT readsmanifest.toml and the following folders from your source directory: lib/, bin/, assets/, bundle/, config/, shared/lib/, and shared/assets/. VPT doesn’t package any other top-level folder, and it gives no warning when it ignores one.
The following table lists what VPT keeps and drops in each folder.
shared/lib/ and shared/assets/ follow the same rules as lib/ and assets/. A CMake build can stage shared artifacts into that separate tree, and VPT filters both trees the same way.
A dropped file doesn’t fail your build. The warning looks like the following example.
lib/ or bin/ takes noticeably longer as a result. To get that time back, remove the files from your build.
To confirm what a built package contains, run show-contents or unpack.
How VPT filters the lib folder
VPT decides what to keep inlib/ by filename, not by file format. A file stays in the package when its name ends in .so or contains .so.. VPT drops every other file, including static libraries, scripts, JSON files, and files that have no extension.
Three more rules apply to lib/:
- VPT checks the
.debugsuffix first. A debug symbol file namedlibfoo.so.debugis dropped, even though its name contains.so.. - VPT judges a symlink by the symlink’s own name, so
libfoo.so -> libfoo.so.1is packaged as a symlink. A symlink that points to a missing file causes an error. - VPT flattens subfolders under
lib/. Each file that VPT keeps lands atlib/<arch>/<filename>in the package.
Where to put files that aren’t shared libraries
Put runtime files that aren’t shared libraries inassets/raw/. VPT doesn’t filter assets/ by file type, so scripts, JSON files, certificates, and archives are packaged as they are.
At runtime, these files are read-only at /pkg/assets/raw/<filename>. Subfolders keep their paths, so assets/raw/scripts/main.lua is available at /pkg/assets/raw/scripts/main.lua. To change one of these files at runtime, copy it to /data first.
Commands
VPT provides the following command categories. For a complete list of commands and their latest options, usevega exec vpt --help.
Package information
These commands view package details and contents.info
Shows package information, including ID, title, and build details.show-contents
Lists all files in the package.Package creation and extraction
These commands create and modify packages.pack
Creates a package from source directories. You can specify package name, version, and build number. For the folders thatpack reads and the files it drops, see Package contents and filtering.
unpack
Extracts all package files to a destination path.dump
Extracts a file from the package. Prints tostdout, or saves to the destination path you specified.
extract-locales
Extracts localization files from a package as JSON or text.Package signature and verification
These commands handle security and validation.pull
Extracts digest and signature files from the package. A digest file lists cryptographic checksums for all files in the VPKG. A signature file contains a detached cryptographic signature that verifies the digest file’s authenticity. Use--json-digest to extract the digest file in JSON format, or --json-signature to extract the signature file in JSON format.
push
Adds a signature file to the package. Use--json-signature to insert a JSON-formatted signature file that corresponds to the package’s digest.
sign
Signs a message using a private key and certificate.verify
Verifies a message’s signature using specified certificates.checksum
Calculates the package checksum.generate-csr
Creates a certificate signing request (CSR) from a configuration file.Package analysis
These commands validate package structure and contents.validate
Runs validation checks for AppStore submission requirements:- Validates the package manifest for required configurations and syntactical correctness. See the manifest user guide.
- Validates whether the bundled libraries or declared dependencies for your app’s native code meet Vega’s ABI requirements.
Create a custom signature for your package
-
Pull the signature file from the package:
Example output:
-
Update the signature file using your private key and certificate:
Example output:
-
Push the updated signature file back to the package:
Example output:
Related topics
- Vega CLI
- Vega Studio Performance CLI
- App Management and Communication Tools
- Vega Studio Commands
- Use Loggingctl to Manage System Logs

