zeptoclaw 0.8.2

Ultra-lightweight personal AI assistant
Documentation
# ZeptoClaw Development Dockerfile
# Uses BuildKit cache mounts for fast incremental builds.
#
# Docker:  DOCKER_BUILDKIT=1 docker build -f Dockerfile.dev -t zeptoclaw:dev .
# Podman:  podman build -f Dockerfile.dev -t zeptoclaw:dev .
#
# Or use the helper script:
#   ./scripts/lint-container.sh
#   ./scripts/lint-container.sh --no-cache

# syntax=docker/dockerfile:1

FROM rust:1.93-slim-trixie AS builder

RUN apt-get update && apt-get install -y \
    pkg-config \
    libssl-dev \
    && rm -rf /var/lib/apt/lists/* \
    && rustup component add clippy rustfmt

WORKDIR /app

COPY Cargo.toml Cargo.lock* ./

# Dummy source for dependency-only build (cached layer)
RUN mkdir -p src/bin benches && \
    echo "fn main() {}" > src/main.rs && \
    echo "fn main() {}" > src/bin/benchmark.rs && \
    echo "pub fn lib() {}" > src/lib.rs && \
    echo "fn main() {}" > benches/message_bus.rs

# Build dependencies with cargo registry + target caches
# mount flags: stripped automatically by lint-container.sh --fallback for old Podman
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 --release && rm -rf src benches

COPY src ./src
COPY benches ./benches
RUN touch src/main.rs src/lib.rs

# Build, clippy, fmt check — all in one layer sharing the cache
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 --release --bin zeptoclaw && cargo clippy -- -D warnings && cargo fmt -- --check && cp /app/target/release/zeptoclaw /usr/local/bin/zeptoclaw

# Runtime stage (same as production Dockerfile)
FROM debian:trixie-slim AS runtime

RUN apt-get update && apt-get install -y \
    ca-certificates \
    git \
    gosu \
    wget \
    && rm -rf /var/lib/apt/lists/* \
    && useradd -r -s /bin/false -d /data zeptoclaw

COPY --from=builder /usr/local/bin/zeptoclaw /usr/local/bin/
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

ENV RUST_LOG=zeptoclaw=info
EXPOSE 8080 9090
VOLUME /data

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["zeptoclaw", "--help"]