nika 0.47.1

Semantic YAML workflow engine for AI tasks - DAG execution, MCP integration, multi-provider LLM support
Documentation
# syntax=docker/dockerfile:1.6
# =============================================================================
# Nika CLI — Multi-Stage Docker Image
# =============================================================================
#
# Stage 1 (builder): Rust build environment for testing
#   docker compose -f docker-compose.test.yml --profile unit up
#
# Stage 2 (runtime): Minimal scratch image with pre-built static binaries (~5MB)
#   docker run --rm ghcr.io/supernovae-st/nika:latest --version
#
# Build context for runtime (created by CI):
#   docker-context/
#   ├── amd64/nika    (x86_64-unknown-linux-musl binary)
#   └── arm64/nika    (aarch64-unknown-linux-musl binary)
#
# Usage:
#   docker run --rm -v $(pwd):/workspace ghcr.io/supernovae-st/nika:latest run workflow.nika.yaml
#
# Note: Runtime uses --no-default-features (no OS keychain). Use env vars:
#   -e ANTHROPIC_API_KEY="sk-ant-..."
# =============================================================================

# ─── Stage 1: Builder (for docker-compose test services) ───────────────────
FROM rust:1.86-bookworm AS builder

RUN apt-get update && apt-get install -y \
    pkg-config libssl-dev libdbus-1-dev \
    && rm -rf /var/lib/apt/lists/*

# Install cargo-nextest for parallel test execution
RUN curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C /usr/local/cargo/bin

WORKDIR /app
COPY . .

# Pre-build dependencies (cached layer)
RUN --mount=type=cache,target=/usr/local/cargo/registry \
    --mount=type=cache,target=/usr/local/cargo/git \
    --mount=type=cache,target=/app/target \
    cargo build --no-default-features --lib 2>/dev/null || true

# ─── Stage 2: Runtime (minimal scratch image) ─────────────────────────────
FROM scratch AS runtime

# OCI Labels
LABEL org.opencontainers.image.source="https://github.com/supernovae-st/nika"
LABEL org.opencontainers.image.description="Nika — Semantic YAML Workflow Engine for AI"
LABEL org.opencontainers.image.licenses="AGPL-3.0-or-later"
LABEL org.opencontainers.image.vendor="SuperNovae Studio"
LABEL org.opencontainers.image.title="nika"
LABEL org.opencontainers.image.url="https://supernovae.studio"
LABEL org.opencontainers.image.documentation="https://github.com/supernovae-st/nika#readme"

ARG TARGETARCH
ARG VERSION=0.40.2

LABEL org.opencontainers.image.version="${VERSION}"

# Copy pre-built static binary for target architecture
COPY ${TARGETARCH}/nika /nika

WORKDIR /workspace

ENTRYPOINT ["/nika"]
CMD ["--help"]