Package Structure & Required Files Guide
Everything you need to know before publishing a package or new version to the NextViper Registry: manifest schema, file checklist, folder layout, and validation rules.
1. Package Files Checklist
A NextViper package bundle is an archive containing your source code and metadata files.
Mandatory Files (Required)
Required- nextviper.toml (or
viper.toml)The package manifest defining name, SemVer version, description, authors, license, and entrypoint.
- src/ source directory & entrypoint
Contains your module logic (e.g.
src/lib.nvorsrc/main.nv). - README.md
Documentation rendered directly on your package page. Must explain installation, quickstart, and code examples.
- LICENSE file
Standard open-source or proprietary license (MIT, Apache-2.0, BSD-3-Clause, etc.).
Recommended Optional Files
Optional- .nvignore (or
.gitignore)Specifies file patterns to exclude from the publication bundle (e.g. test artifacts, `.git`, heavy dataset dumps).
- tests/ directory
Automated unit tests run via
nextviper testto ensure package stability across platform releases. - CHANGELOG.md
Chronological history of features, bug fixes, and breaking changes for each published SemVer release.
- examples/ directory
Ready-to-run sample scripts illustrating how to integrate your module in applications.
2. Canonical Directory Structure
Follow this recommended directory layout for seamless compatibility with the NextViper compiler and package resolver.
my-awesome-package/
├── nextviper.toml # [MANDATORY] Package manifest (name, version, license)
├── README.md # [MANDATORY] Markdown documentation & usage instructions
├── LICENSE # [MANDATORY] License text (MIT, Apache-2.0, etc.)
├── .nvignore # [OPTIONAL] Files excluded from package tarball
├── CHANGELOG.md # [OPTIONAL] Version history and release notes
│
├── src/ # [MANDATORY] Source code root
│ ├── lib.nv # Primary library entrypoint exported to consumers
│ ├── matrix.nv # Submodule: Matrix algorithms & SIMD kernels
│ └── utils.nv # Submodule: Helper routines
│
├── tests/ # [RECOMMENDED] Unit and integration tests
│ ├── test_matrix.nv # Test cases for matrix multiplication
│ └── test_utils.nv # Test cases for utility helpers
│
└── examples/ # [OPTIONAL] Ready-to-run demonstration scripts
└── benchmark_demo.nv # Example benchmarking script3. nextviper.toml Manifest Specification
The nextviper.toml file is the single source of truth for your package.
[package] name = "fast_matrix" version = "1.0.0" description = "Hardware-accelerated SIMD matrix multiplication and tensor utilities" authors = ["Your Name <you@example.com>"] license = "MIT" repository = "https://github.com/username/fast_matrix" homepage = "https://nextviper.nuratix.com/packages/fast_matrix" documentation = "https://docs.nextviper.nuratix.com/packages/fast_matrix" keywords = ["matrix", "simd", "tensor", "math", "numerical"] category = "numerical" entry = "src/lib.nv" [dependencies] std_math = "^1.0.0" tensor_core = "^0.4.0"
Manifest Fields Breakdown
| Field | Type | Required | Description |
|---|---|---|---|
| name | String | Yes | Unique package identifier (2-64 chars, a-z, 0-9, _, -). |
| version | String | Yes | Strict Semantic Versioning (e.g. 1.0.0, 1.2.4). |
| description | String | Yes | Concise 1-sentence summary of the package capabilities. |
| license | String | Yes | SPDX license identifier (e.g. MIT, Apache-2.0, GPL-3.0). |
| authors | Array<String> | No | Creator name and optional email contact. |
| repository | String | No | Public GitHub / GitLab repository URL. |
| keywords | Array<String> | No | Search index keywords for registry discoverability. |
| category | String | No | Category (data, ai, numerical, networking, crypto, system, general). |
| [dependencies] | Map<String, String> | No | Required external NextViper packages with SemVer ranges. |
4. Registry Validation Rules & Limits
Ensure your package complies with the registry security and stability invariants.
Strict Immutability
Once a version (e.g. 1.0.0) is published, its bundle cannot be modified or replaced. You must increment the version number to publish updates.
Package Ownership
Only the verified author/owner of a package can publish subsequent versions unless organization team members are added.
Size & Format Limits
Maximum archive bundle size is 15 MB. Supported archive formats include .tar.gz, .tgz, and .nvpkg.
5. Generating Developer Access Keys
Publishing requires an authenticated Developer Access Key (starts with nv_...).
Open Creator Dashboard
Log in and navigate to /dashboard. Scroll down to the Developer Access Keys management card.
Configure Token Options
Enter a descriptive token label (e.g. "MacBook CLI", "GitHub Actions CI") and select the desired key expiration lifetime (30d, 90d, 1y, or never).
Generate & Save Token
Click Generate Access Key. Copy your raw token string immediately. For security, full keys are never shown again after creation.
6. Publishing via Terminal CLI
Automate package publishing with the official NextViper CLI tooling.
Step 1: Validate & Test Locally
Verify your package builds cleanly and tests pass before dispatching to the global registry:
Step 2: One-Step Cloud Publish
Run nextviper publish. The CLI packages and uploads directly to the live registry:
7. Publishing New Versions of an Existing Package
How to upgrade existing packages while preserving immutable cryptographic integrity.
Bump the Version in nextviper.toml
Increment your version following strict Semantic Versioning rules:
Backwards-compatible bug fixes and minor internal refactors.
New features added in a backwards-compatible manner.
Incompatible API breaks or syntax redesigns.
Publish via CLI or Dashboard Quick Action
You can release the new version using either method:
Visit /dashboard and click "Publish New Version" next to your owned package.
8. Package Metadata & URL Rules (GitHub, Homepage, Docs)
How external URLs and repository links are validated and rendered across the registry.
Public GitHub/GitLab link. If omitted, no GitHub icon is shown on the package page.
Project website or showcase. Renders a Homepage link only when a valid URL is provided.
External documentation portal. If not specified, users reference the package's embedded README.
Ready to Share Your NextViper Package?
Distribute your libraries, tensors, HTTP middleware, or GPU shaders globally with instant sub-millisecond downloads.

