All Docs

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 use latest in 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.yml updated with new image tags
  • [ ] VERSION file updated with correct semver and date
  • [ ] CHANGELOG.md written with all changes
  • [ ] checksums.txt generated with sha256sum
  • [ ] Offline .zip package 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