Skip to main content

CLI Cheat Sheet

Quick reference for all Krema CLI commands.

Development

Start Development Server

krema dev

Starts the app in development mode with hot reload.

Options:

FlagDescription
--profile <name>Use environment profile
--verboseEnable verbose output
--no-frontendSkip starting frontend dev server

Examples:

krema dev                          # Start dev server
krema dev --profile development # Use dev profile
krema dev --no-frontend # Backend only (frontend running separately)

Building

Build for Production

krema build

Compiles frontend and Java code for production.

Options:

FlagDescription
--profile <name>Use environment profile
--verboseEnable verbose output
--skip-frontendSkip frontend build

Examples:

krema build                        # Full build
krema build --profile production # Production build
krema build --skip-frontend # Java only

Create Platform Bundle

krema bundle

Creates a distributable application bundle (.app, .exe, .AppImage).

Options:

FlagDescription
--profile <name>Use environment profile
--target <platform>Target platform (macos, windows, linux)
--signSign the bundle (macOS/Windows)
--notarizeNotarize the bundle (macOS only)
--verboseEnable verbose output

Examples:

krema bundle                       # Bundle for current platform
krema bundle --sign # Bundle and code sign
krema bundle --sign --notarize # Bundle, sign, and notarize (macOS)
krema bundle --target windows # Cross-compile for Windows

Project Management

Initialize New Project

krema init [name]

Creates a new Krema project with interactive setup.

Options:

FlagDescription
--template <name>Use a project template
--no-gitSkip git initialization

Examples:

krema init my-app                  # Create new project
krema init my-app --template react # Use React template
krema init . --no-git # Init in current dir, no git

Update Signing

Generate Signing Keys

krema signer generate

Generates Ed25519 key pair for update signing.

Options:

FlagDescription
--output <dir>Output directory (default: current dir)
--forceOverwrite existing keys

Output:

  • private.key - Keep secret, used for signing
  • public.key - Embed in app for verification

Sign Update Artifact

krema signer sign <file>

Signs a file for distribution.

Options:

FlagDescription
--key <path>Path to private key
--output <path>Output signature file path

Examples:

krema signer sign dist/app-1.0.0.dmg --key private.key
# Creates: dist/app-1.0.0.dmg.sig

Environment Variables

VariableDescription
KREMA_SIGNING_PRIVATE_KEYEd25519 private key for build-time signing
KREMA_LOG_LEVELLog level (debug, info, warn, error)
KREMA_NO_COLORDisable colored output

Common Workflows

Development Cycle

# Start fresh project
krema init my-app
cd my-app

# Install dependencies
npm install

# Start development
krema dev

# Build and test production
krema build

# Create distributable
krema bundle --sign

Release Workflow

# Build production
krema build --profile production

# Create signed bundle
krema bundle --sign --notarize

# Sign update artifact
krema signer sign dist/MyApp-1.0.0.dmg --key ~/.keys/private.key

# Upload to release server
# (your release script here)

CI/CD Pipeline

# Set signing key from secrets
export KREMA_SIGNING_PRIVATE_KEY="$SIGNING_KEY_SECRET"

# Build
krema build --profile production

# Bundle with signing (key from env)
krema bundle --sign

# Artifacts are in dist/bundle/

Configuration Files

FilePurpose
krema.tomlMain configuration
.envEnvironment variables (all profiles)
.env.localLocal overrides (gitignored)
.env.<profile>Profile-specific variables

Exit Codes

CodeMeaning
0Success
1General error
2Configuration error
3Build error
4Bundle error

Getting Help

krema --help              # General help
krema <command> --help # Command-specific help
krema --version # Show version