Commit 2c97d66
feat(bodhiapp): BodhiApp changes for llama.cpp
[14-Apr] -DLLAMA_OPENSSL=OFF as we do not use ssl, and creates runtime dependency
[pre-Apr-14-2026] add GPU-accelerated base images infrastructure and release automation
Introduce complete Docker base image system supporting 7 GPU/NPU architectures with
automated build workflows and upstream synchronization tools.
Added production-ready Docker base images in .devops/base-images/:
- CPU (x86_64, arm64) - Portable builds with all CPU optimizations
- CUDA - NVIDIA GPU (CUDA 12.4.0, compute 7.0+)
- ROCm - AMD GPU (ROCm 7.0, gfx803-gfx1201)
- Vulkan - Cross-vendor GPU (SDK 1.4.321.1)
- MUSA - Moore Threads GPU (rc4.3.0)
- Intel - Intel GPU/SYCL (OneAPI 2025.2.2)
- CANN - Huawei Ascend NPU (8.1.rc1, x86_64+arm64)
Key features:
- Platform-triple folder structure: /app/bin/<platform>/<variant>/llama-server
- Embedded version metadata (BUILD_VERSION, BUILD_COMMIT, BUILD_TIMESTAMP, BUILD_BRANCH)
- Non-root user (llama:llama), health checks, comprehensive labels
- rpath configuration for reliable library loading
- No ENTRYPOINT (BodhiApp defines its own)
Automated GitHub Actions workflow (.github/workflows/base-images.yml):
- Parallel builds for all 7 variants
- Multi-platform support (linux/amd64, linux/arm64 where applicable)
- Publishes to ghcr.io/bodhisearch/llama.cpp
- Generates detailed release artifacts (build-info JSONs, release.json)
- Tag format: base-images/vYYYYMMDDHHMM-hash
Consolidated release logic in Makefile.bodhiapp (~80 lines reduced):
- Changed timestamp format: YYMMDDHHMM → YYYYMMDDHHMM (eliminated platform-specific date parsing)
- Unified release functions (llama-server and base-images share same logic)
- Added reusable helper functions for dockerfile checking and validation
- Streamlined version extraction in GitHub workflows
Added tools for syncing with upstream llama.cpp:
- `make sync-upstream-check` - Dry-run analysis showing commits and critical file changes
- `make sync-upstream` - Automated rebase preserving [Amir] commits
- Dockerfile change detection for .devops/*.Dockerfile files
- Claude Code agent (.claude/agents/upstream-sync-reviewer.md) for AI-assisted integration
- Comprehensive documentation in README-bodhiapp.md (719 lines)
The agent automates:
- Parsing sync output and identifying Dockerfile changes
- Mapping upstream .devops/*.Dockerfile → .devops/base-images/*.Dockerfile
- Preserving BodhiApp patterns (metadata, folder structure, labels, health checks)
- Applying upstream improvements (versions, CMake flags, dependencies)
Synced with upstream changes for container versions and build improvements:
**Container version updates:**
- ROCm: 6.0.2 → 6.1.2 (llama-server.yml)
- MUSA: rc3.1.0 → rc4.3.0-amd64 (llama-server.yml)
- CANN: 8.1.rc1-910b-openeuler22.03-py3.10 → 8.3.rc2-910b-openeuler24.03-py3.11
**Shared library handling:**
- All GPU Dockerfiles: Changed `*.so` → `*.so*` with `-P` flag to properly copy symlinks
**Vulkan simplification:**
- Removed manual Vulkan SDK installation
- Now using Ubuntu 26.04 apt packages (libvulkan-dev, glslc)
- Simplified runtime deps: libvulkan1 + mesa-vulkan-drivers
- Removed VULKAN_SDK environment variables and version tracking
**CANN improvements:**
- Renamed ASCEND_SOC_TYPE → CHIP_TYPE for consistency
- Changed SOC_TYPE format to ascend${CHIP_TYPE}
- Removed redundant -DLLAMA_BUILD_TESTS=OFF flag
New files (15):
- 7 Dockerfiles (.devops/base-images/*.Dockerfile) - Total 843 lines
- 2 workflows (.github/workflows/base-images.yml, llama-server.yml) - 1,468 lines
- 1 reusable action (.github/actions/create-build-info/) - 101 lines
- Documentation (README-bodhiapp.md, ai-docs/*.md) - 1,277 lines
- Automation (.claude/agents/upstream-sync-reviewer.md) - 224 lines
- Build system (.devops/base-images/Makefile) - 136 lines
Modified files (4):
- Makefile - Include BodhiApp targets
- Makefile.bodhiapp - Added 331 lines (release functions, sync targets, helpers)
- .gitignore - Ignore build/ and bin/local/
Total: 4,792 insertions, 7 deletions across 19 files
For existing BodhiApp deployments:
1. Update Dockerfile FROM: ghcr.io/bodhisearch/llama.cpp:latest-<variant>
2. Update BODHI_LLAMA_SERVER_PATH to: /app/bin/<platform-triple>/<variant>/llama-server
3. For upstream sync: Add 'gg' remote → github.com/ggml-org/llama.cpp
Co-Authored-By: Claude Code <noreply@anthropic.com>
chore(base-images): syncing on Mar 13, 2026
Upstream sync from 60f17f5 (rpc: fix segfault on invalid endpoint format (ggml-org#18387))
to 8f974d2 (mtmd: rename mtmd_get_audio_bitrate to mtmd_get_audio_sample_rate (ggml-org#20105))
766 upstream commits merged. Base-image Dockerfile updates include:
- libcurl4-openssl-dev -> libssl-dev (upstream now uses OpenSSL directly)
- ROCm 7.0 -> 7.2 with updated GPU architecture list
- Vulkan: added libglvnd runtime libraries
- CANN: added -DUSE_ACL_GRAPH=ON
- Simplified CMake linker flags across all variants
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
[Amir][Apr-14-2026] sync with upstream 8f974d2..e21cdc1
also disabling -DLLAMA_OPENSSL=OFF -DLLAMA_CURL=OFF in base-images
[Amir][Apr-14-2026] updated the github actions throwing warnings
[Amir][Apr-14-2026] base-images: tolerate GHA cache flakes; CANN amd64-only
- cache-to: add ignore-error=true to all 7 variants so transient GHA cache 502s no longer fail the build
- build-cann: drop linux/arm64 (QEMU assembler rejects compound -march flags); update release body + summary accordingly
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[Amir][Apr-14-2026] workflows: bump actions to latest Node 24 versions
- upload-artifact v5→v7, download-artifact v5→v8 (v5 was still Node 20)
- checkout v5→v6, github-script v8→v9 (latest majors, Node 24)
- Applied across llama-server.yml, base-images.yml, and create-build-info composite
[Amir][May-14-2026] moved the commands file
[Amir][May-14-2026] chore(base-images): sync intel and vulkan base-images with upstream
- vulkan: add spirv-headers to build-stage dependencies
- intel: bump ONEAPI_VERSION 2025.3.2 -> 2025.3.3
- intel: install level-zero 1.28.2 + level-zero-devel in build stage
- intel: revert IGC/compute-runtime/IGDGMM to stable versions
(IGC v2.30.1 -> v2.20.5, compute-runtime 26.09 -> 25.40, IGDGMM 22.9.0 -> 22.8.2)
[Amir][22-May-2026] chore(base-images): disable embedded webui after upstream sync
Upstream now defaults LLAMA_BUILD_UI=ON, which makes every server build
provision llama.cpp's embedded webui (npm build or HF-bucket fetch at
build time). BodhiApp ships its own React frontend and does not use the
llama.cpp webui, so disable it to keep builds hermetic and lean.
- base-images: add -DLLAMA_BUILD_UI=OFF to all 7 variant cmake configs
(cpu, cuda, rocm, vulkan, cann, musa, intel)
- llama-server.yml: add -DLLAMA_BUILD_UI=OFF to all 13 build matrix
blocks (Linux/macOS, Windows batch, PowerShell)
llama-server still builds: llama-ui becomes a stub lib with
LLAMA_UI_DEFAULT_ENABLED=0. No Node.js dependency introduced.
---
[2026-06-29] chore(bodhiapp): update base-images with upstream docker.io registry prefix
Sync base-images with upstream .devops/ Dockerfile improvements from 546
upstream commits. Upstream switched all image references to use explicit
docker.io/ registry prefix and added ARG GCC_VERSION=14 to the CUDA build.
- cpu: docker.io/ubuntu prefix on build and base stages
- cuda: docker.io/nvidia prefix + ARG GCC_VERSION=14
- rocm: docker.io/rocm prefix
- vulkan: docker.io/ubuntu prefix on build and base stages
- musa: docker.io/mthreads prefix on dev and run containers
- intel, cann: already aligned, no changes needed
All BodhiApp adaptations preserved: version metadata, platform-triple
folder structure, non-root user, health checks, labels, no ENTRYPOINT.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 66e4bf7 commit 2c97d66
19 files changed
Lines changed: 4832 additions & 7 deletions
File tree
- .claude/commands
- .devops/base-images
- .github
- actions/create-build-info
- workflows
- ai-docs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
0 commit comments