Universal Package Manager  ·  v0.2.0

Build once.
Ship everywhere.

One manifest. One command. kpkg packages your app for Linux, Windows, macOS, Android, and iOS — and installs natively via the Koder Store without a single extra click.

kpkg.toml
[package]
name    = "my-app"
version = "1.0.0"
display = "My App"

[platforms]
"linux-amd64"  = "my-app"
"win-x64"      = "my-app.exe"
"macos-arm64"  = "My App.app"
"android"      = "app.apk"
terminal
$ kpkg build --deb --rpm --msix

 my-app-1.0.0.kpkg       (Koder Store)
 my-app_1.0.0_amd64.deb  (Debian/Ubuntu)
 my-app-1.0.0.x86_64.rpm (Fedora/RHEL)
 my-app-1.0.0.msix        (Windows)

$ kpkg publish
 Published to Koder Store

Everything packaging should be

kpkg handles the complexity of multi-platform distribution so you can focus on building your app.

📦

Universal .kpkg Format

A single ZIP-based archive carries binaries for every platform, metadata, icon, screenshots, and a bootstrap script that runs even without the Koder Store installed.

Native Silent Install

The Koder Store installs .kpkg files silently in the background, registering launchers, shortcuts, and file associations — no wizard, no UAC prompts, no user friction.

🌍

Export to Native Formats

One build command produces .deb, .rpm, .msix, .pkg, .AppImage, and .apk alongside the .kpkg — each properly structured for its target package manager.

🔐

Ed25519 Signing

Every .kpkg is signed with your Koder ID key. The Koder Store verifies the signature before installation. Tampered packages are rejected automatically.

🔄

Version Tracking & Rollback

The Koder Store tracks installed versions and can roll back to any previous .kpkg. Developers can push delta updates to minimize download size.

📋

Declarative Permissions

Declare exactly what your app needs — network, filesystem paths, camera, notifications. Users see a clear permission summary before installing.

How It Works

From source to store in three steps.

1. Define your manifest

Create a kpkg.toml in your project root. Declare your app's identity, which platforms it targets, what permissions it needs, and how it should be installed.

  • Name, version, description, and Store listing metadata in one file
  • Per-platform entry points — each OS gets the right executable
  • Optional source build commands for Koder Lang, Go, Dart, and Rust
kpkg.toml
[store]
slug        = "my-app"
price       = "free"
category    = "productivity"

[permissions]
network       = true
notifications = true
filesystem    = ["~/Documents/my-app"]

[install]
launcher  = true
data_dir  = "{AppData}/my-app"

2. Build all targets at once

Run kpkg build and get every package format your app needs. No separate toolchain configuration per platform.

  • Produces .kpkg with bootstrap script prepended — executable on Linux and macOS directly
  • Cross-compiles .deb and .rpm using dpkg-deb and rpmbuild on Linux
  • Generates .msix for Windows using makemsix (no Windows machine required)
terminal
$ kpkg build \
    --deb --rpm --msix --appimage

Building my-app v1.0.0...

 dist/my-app-1.0.0.kpkg
 dist/my-app_1.0.0_amd64.deb
 dist/my-app_1.0.0_arm64.deb
 dist/my-app-1.0.0.x86_64.rpm
 dist/my-app-1.0.0.msix
 dist/my-app-1.0.0-x86_64.AppImage

6 artifacts in 4.2s

3. Publish to the Koder Store

Sign and publish with a single command. Your app appears in the Koder Store immediately, available for install on every supported platform.

  • Signing uses your Koder ID ed25519 key — no separate certificate management
  • The Store auto-detects the user's platform and serves the right artifact
  • Version history is preserved — users can roll back from the Store UI
terminal
$ kpkg publish

Signing my-app-1.0.0.kpkg...
 Signed with Koder ID key

Uploading to Koder Store...
 linux/amd64   58 MB
 linux/arm64   56 MB
 win/x64       61 MB
 macos/arm64   54 MB

 Published: store.koder.dev/app/my-app
  Version 1.0.0 is live

Output Formats

One build, every channel. kpkg exports to all major distribution formats from a single manifest.

.kpkg
Koder Store
Native
.deb
Debian · Ubuntu · Mint
.rpm
Fedora · RHEL · SUSE
.msix
Windows
.pkg
macOS Installer
.AppImage
Linux Portable
.apk
Android
.ipa
iOS (via Xcode)

How It Compares

Why .kpkg instead of shipping formats separately?

Feature .kpkg .deb / .rpm .msix .AppImage
Single file, all platforms
Bootstrap without store installed
Silent native install via Store
Signed with developer identity
Version rollback from Store UI
Store listing metadata in manifest
Declarative permissions

FAQ

Do I need to have the Koder Store installed to use a .kpkg file?
No. Every .kpkg includes a POSIX bootstrap script in its first bytes. On Linux and macOS, running chmod +x app.kpkg && ./app.kpkg will extract and launch the app directly — no Koder Store required. On Windows, you do need the Koder Store (or install it from store.koder.dev) since Windows cannot execute shell scripts on double-click.
Can I build .msix (Windows) packages from Linux?
Yes. kpkg uses makemsix under the hood, which runs on Linux. The resulting .msix is structurally valid, but Authenticode signing for Windows SmartScreen requires a separate Windows code-signing certificate, which is your responsibility. kpkg handles the Koder Store signing automatically.
Can I build macOS .pkg packages from Linux?
kpkg can produce the .app bundle structure and .pkg archive from Linux. However, Apple requires notarization (stapling an Apple-issued ticket) for Gatekeeper to accept the package without warnings on macOS. Notarization requires a macOS machine with Xcode and an Apple Developer account. kpkg generates the unsigned bundle; notarization is a separate step.
What's the difference between kpkg the CLI and .kpkg the format?
The kpkg CLI is the tool that builds, signs, and publishes packages. The .kpkg extension is the file format produced by the CLI and consumed by the Koder Store. The CLI can also manage source-level dependencies (like Cargo or npm) for projects written in Koder Lang, Go, Dart, or Rust.
How does kpkg handle dependency management for source code?
For Koder Lang projects, kpkg add <package> adds a dependency to your kpkg.toml and resolves it from the Koder package registry at pkg.koder.dev. For Go, Dart, and Rust projects, kpkg delegates to the native toolchain (go mod, pub, cargo) and wraps the result for distribution.

One package. Every platform.

Stop maintaining separate build pipelines for each OS. Ship faster with kpkg.

Get kpkg Read the Docs