ruvector/examples/ruvLLM/esp32-flash/Dockerfile
rUv 57e6667fcd feat(ruvLLM): Add cross-platform ESP32 flash project
Complete flashable implementation with:
- INT8 quantized transformer (~20KB RAM)
- HNSW vector index for RAG
- UART command interface (gen/add/ask/stats)
- Cross-platform installers (Linux, macOS, Windows)
- Multi-chip cluster configuration (pipeline parallelism)
- Docker build environment
- Comprehensive documentation

Installation options:
- One-line: ./install.sh && ./install.sh flash
- Makefile: make install && make flash PORT=/dev/ttyUSB0
- Docker: docker run -v $(pwd):/app ruvllm-esp32 build

Cluster support:
- cluster.example.toml: 5-chip pipeline config
- cluster-flash.sh/ps1: Flash all chips with roles
- cluster-monitor.sh: tmux multi-pane monitoring

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 04:07:44 +00:00

77 lines
1.8 KiB
Docker

# RuvLLM ESP32 - Docker Build Environment
# Provides complete ESP32 toolchain without local installation
#
# Usage:
# docker build -t ruvllm-esp32-builder .
# docker run -v $(pwd):/app -v /dev:/dev --privileged ruvllm-esp32-builder build
# docker run -v $(pwd):/app -v /dev:/dev --privileged ruvllm-esp32-builder flash /dev/ttyUSB0
FROM rust:1.75-bookworm
# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
wget \
flex \
bison \
gperf \
python3 \
python3-pip \
python3-venv \
cmake \
ninja-build \
ccache \
libffi-dev \
libssl-dev \
dfu-util \
libusb-1.0-0 \
libudev-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Install ESP-IDF prerequisites
RUN pip3 install --break-system-packages pyserial
# Install Rust ESP32 toolchain
RUN cargo install espup && \
espup install && \
cargo install espflash ldproxy
# Set up environment
ENV PATH="/root/.cargo/bin:${PATH}"
RUN echo 'source /root/export-esp.sh 2>/dev/null || true' >> /root/.bashrc
WORKDIR /app
# Entry point script
COPY <<'EOF' /entrypoint.sh
#!/bin/bash
source /root/export-esp.sh 2>/dev/null || true
case "$1" in
build)
echo "Building RuvLLM ESP32..."
cargo build --release
;;
flash)
PORT="${2:-/dev/ttyUSB0}"
echo "Flashing to $PORT..."
cargo build --release
espflash flash --port "$PORT" target/xtensa-esp32-espidf/release/ruvllm-esp32-flash
;;
monitor)
PORT="${2:-/dev/ttyUSB0}"
espflash monitor --port "$PORT"
;;
shell)
exec /bin/bash
;;
*)
echo "Usage: docker run ... [build|flash|monitor|shell] [port]"
;;
esac
EOF
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["build"]