Release Package Specification
Standard format for PacketPilot offline and air-gapped release packages.
Release Package Specification
This document defines the standard structure for PacketPilot release packages. Follow this spec when preparing releases for air-gapped or offline distribution.
PacketPilot Config — Offline Installer Package
Distribution Format
A signed executable installer (.exe) distributed via the hosted download route. For offline distribution, package as a .zip archive.
Required Files
| File | Description |
|------|-------------|
| PacketPilot-Setup-X.Y.Z.exe | The Windows installer executable |
| checksums.txt | SHA-256 checksums for all files in the package |
Checksum File Format
# SHA-256 checksums for PacketPilot Config X.Y.Z
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 PacketPilot-Setup-1.0.0.exe
File Naming Convention
PacketPilot-Setup-{MAJOR}.{MINOR}.{PATCH}.exe
PacketPilot-Setup-1.0.0.exe
Versioning
Semantic versioning (MAJOR.MINOR.PATCH). Increment:
- MAJOR: Breaking changes to the app, config format, or database schema
- MINOR: New features, new vendor profiles, workflow improvements
- PATCH: Bug fixes, security patches, small improvements
PacketPilot Analyze — Offline Release Package
Distribution Format
A .zip archive containing Docker images as tarballs, the compose file, environment templates, and metadata.
Required Files
| File | Description |
|------|-------------|
| docker-compose.yml | Updated Docker Compose file with new image tags |
| .env.example | Environment template — compare with existing .env, do not replace |
| VERSION | Plain text file: {semver}\n{build-date}\n |
| CHANGELOG.md | Release notes for this version |
| checksums.txt | SHA-256 checksums for all files in the package |
| {service}.tar | Docker image tarball for each service (see below) |
Docker Image Tarballs
Each service image is exported as a standalone tarball:
| Tarball | Source image | Notes |
|---------|-------------|-------|
| frontend.tar | packetpilot/frontend:{tag} | Next.js web UI |
| backend.tar | packetpilot/backend:{tag} | FastAPI REST API |
| postgres.tar | postgres:16-alpine | Database — pinned version |
| ollama.tar | ollama/ollama:{tag} | AI inference |
| license-server.tar | packetpilot/license-server:{tag} | License validation |
Image tags are version-specific. Always use the tags published in the current
docker-compose.yml. Do not uselatestin tarballs intended for offline deployment.
Optional Files
| File | Description |
|------|-------------|
| ollama-mistral.tar | Pre-downloaded Ollama model for air-gapped first-run |
| migration.sh | Database migration script (if schema changed) |
| README-offline.md | Step-by-step air-gapped deployment guide |
File Naming Convention
PacketPilot-Analyze-Suite-{MAJOR}.{MINOR}.{PATCH}.zip
PacketPilot-Analyze-Suite-1.0.0.zip
VERSION File Format
1.0.0
2026-05-11
Line 1: Semantic version. Line 2: ISO 8601 build date.
Checksum File Format
# SHA-256 checksums for PacketPilot Analyze Suite 1.0.0
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 docker-compose.yml
a1b2c3d4e5f6... frontend.tar
b2c3d4e5f6a1... backend.tar
c3d4e5f6a1b2... postgres.tar
d4e5f6a1b2c3... ollama.tar
e5f6a1b2c3d4... license-server.tar
f6a1b2c3d4e5... .env.example
...
Update Manifest Schema
For PacketPilot Config, the update manifest is a JSON file served from the docs domain.
URL: https://packetpilot.db-electronics.no/updates/config.json
{
"version": "1.0.0",
"releaseDate": "2026-05-11",
"releaseNotesUrl": "https://packetpilot.db-electronics.no/docs/updates/config",
"downloadUrl": "https://packetpilot.db-electronics.no/api/download/exe",
"checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"minimumSupportedVersion": "1.0.0",
"severity": "recommended",
"offlinePackageUrl": "https://packetpilot.db-electronics.no/updates/PacketPilot-Setup-1.0.0.zip"
}
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| version | string | Yes | Semantic version, e.g. "1.0.0" |
| releaseDate | string (date) | Yes | ISO 8601 date, e.g. "2026-05-11" |
| releaseNotesUrl | string (uri) | Yes | Link to release notes |
| downloadUrl | string (uri) | Yes | URL to the installer or bundle |
| checksum | string | Yes | SHA-256 hex digest |
| minimumSupportedVersion | string | No | Older versions must update |
| severity | string | No | critical, recommended, optional |
| offlinePackageUrl | string (uri) | No | URL to offline .zip package |
Release Checklist
Before publishing a release:
- [ ] All Docker images tagged and pushed to registry
- [ ]
docker-compose.ymlupdated with new image tags - [ ]
VERSIONfile updated with correct semver and date - [ ]
CHANGELOG.mdwritten with all changes - [ ]
checksums.txtgenerated withsha256sum - [ ] Offline
.zippackage created and tested (Analyze) - [ ] Config manifest (
public/updates/config.json) updated with new version, checksum, and severity - [ ] Config offline package uploaded to
public/updates/ - [ ] Docs updated with any new update workflow steps
- [ ] No secrets, tokens, or credentials in any released files