Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
180 commits
Select commit Hold shift + click to select a range
961e4b2
llama-batch: add unit test (#25471)
am17an Jul 10, 2026
082b326
ggml-et: Initial ET backend (#24179)
marty1885 Jul 10, 2026
2ed3c1a
llama : make all KQ masks f16 if FA is used, remove zero attention bi…
fairydreaming Jul 10, 2026
d46786f
ui: export full message tree instead of active path only (#25501)
ServeurpersoCom Jul 10, 2026
8f114a9
sync : ggml (#25517)
ggerganov Jul 10, 2026
c7af942
ui: prevent tooltip from flickering open and closed on hover (#25503)
ServeurpersoCom Jul 10, 2026
1b9691b
cli: fix crash on wrong server base url (#25497)
marcoStocchi Jul 10, 2026
c4ae9a8
server: improve tools, remove apply_diff (#25498)
ngxson Jul 10, 2026
ac17f8a
ggml : use ggml_vqtbl1q_u8 for 32-bit compat (whisper/0)
ggerganov Jul 10, 2026
0badc06
sync : ggml
ggerganov Jul 10, 2026
a935fbf
server: remove loading.html (#25500)
ngxson Jul 10, 2026
9f623c6
ui: use server modalities in non-router mode (#24874)
coder543 Jul 10, 2026
07d9378
feat: pre-select models in the webui using alias (#25492)
felix314159 Jul 10, 2026
3e706dd
mtmd: deepseek-ocr v1 multi-tile (#24717)
ngxson Jul 10, 2026
22b69b6
arg: prevent duplicate spec model downloads (#25527)
ngxson Jul 10, 2026
67776ea
hexagon: improve ARGSORT performance for small tensors (#25512)
max-krasnyansky Jul 10, 2026
c749cb0
llama : make tensor-split regex patterns static (#24710)
eduardopessin Jul 10, 2026
4f37f51
server: accept null sampling params (#25538)
ServeurpersoCom Jul 10, 2026
1d1d9a9
opencl: add int8 dp4 dense and MoE prefill optimization for Adreno GP…
wanghqc Jul 11, 2026
76f2798
Vulkan: route large matmuls to medium tile on Adreno (#24877)
Raman-Raje Jul 11, 2026
00f5442
ggml : add GGML_OP_LIGHTNING_INDEXER that implements DeepSeek V3.2/V4…
fairydreaming Jul 11, 2026
ea1f7bb
server: refactor server_stream (#25541)
ngxson Jul 11, 2026
c92e806
server: allow stream for exec_shell_command (#25526)
ngxson Jul 11, 2026
13f2b28
DeepseekV4: clear cache only for seq rather than full (#25521)
am17an Jul 11, 2026
3cec3bc
cuda: Don't crash when querying memory on device with no free memory.…
cphlipot Jul 11, 2026
d72bfa3
gguf : reject empty metadata keys (#24917)
rohitmahesh1 Jul 11, 2026
e3546c7
Fix conditional to display 'LLAMA_SPLIT_MODE_TENSOR not implemented f…
kdkd Jul 11, 2026
6b4dc21
server : fix image blocks in tool_result being dropped during Anthrop…
quei4r Jul 12, 2026
0c4fa7a
server : evict checkpoints within min-step of each other (#25472)
aldehir Jul 12, 2026
4114ba1
mtmd: fix silent prompt truncation on embedded NUL (#25548)
ServeurpersoCom Jul 12, 2026
8014d2c
server: Don't consider models with --no-mmproj-auto as multimodal (#2…
sdroege Jul 12, 2026
3455882
vendor : update cpp-httplib to 0.50.1 (#25576)
cabelo Jul 12, 2026
99f3dc3
server: honour per-request reasoning_budget_tokens in chat completion…
bernardladenthin Jul 12, 2026
38fd5c9
ui: Remove recommended MCP Servers + improve MCP Servers Settings UI/…
allozaur Jul 13, 2026
e474bba
sycl: add Q2_K to DMMV reorder path (#25064)
malsbat Jul 13, 2026
efb3036
sycl: add fused top-k MoE (#25217)
newjordan Jul 13, 2026
91c631b
chat : fix reasoning leak with force-opened bare <think> templates (#…
newjordan Jul 13, 2026
ad8d821
gguf : add tensor shape accessor (#24405)
QuintinShaw Jul 13, 2026
f4253ef
tests: Harmonize header use (#25616)
ckastner Jul 13, 2026
4193ea6
readme : add link to maintainer PRs (#25621)
ggerganov Jul 13, 2026
259ae1d
spec: add Minimax2 eagle3 support
adrianisk Jul 13, 2026
e920c52
vulkan: Use native e2m1 and e4m3 conversions for mxfp4/nvfp4 (#25338)
jeffbolznv Jul 13, 2026
6eddde0
CUDA: refactor MMQ kernel configuration (#24127)
JohannesGaessler Jul 13, 2026
2969d6d
model: add Hy3 (hy_v3) support with MTP speculative decoding (#25395)
satindergrewal Jul 13, 2026
14d3ba4
metal : add Q2_0 support (#25419)
khosravipasha Jul 14, 2026
c1063ac
sycl: set fattn_vec_nthreads to 256 for Battlemage (#25205)
Titaniumtown Jul 14, 2026
ec0dbef
arg: Flush log before exiting after usage() (#25504)
ckastner Jul 14, 2026
cb489bc
convert_hf_to_gguf: support split MTP export for HY V3 (#25641)
tarruda Jul 14, 2026
c9330ed
ui: add reasoning effort control to mobile add sheet (#25539)
ServeurpersoCom Jul 14, 2026
47c7869
kleidiai : add SME2 f32 kernel (#24414)
chaxu01 Jul 14, 2026
47a3966
ggml: uniformize im2col dst_type for all conv ops (#23660)
Juste-Leo2 Jul 14, 2026
657e011
tests: export-graph-ops: exit gracefully when called w/o arguments (#…
ckastner Jul 14, 2026
a7312ae
ggml : add a set of functions for checking contiguity of inner tensor…
fairydreaming Jul 14, 2026
8ff8c42
tokenize : align usage by using common args (#25516)
angt Jul 14, 2026
7cbd610
vulkan/cpu: Support f16 as SET_ROWS src. (#25432)
jeffbolznv Jul 14, 2026
7f575c3
DeepseekV4: fix seq_rm (#25588)
am17an Jul 14, 2026
17a05e4
ui: fix mcp panel for toggle + timeout + proxy + ON/OFF state (#25631)
ServeurpersoCom Jul 14, 2026
00e79f6
opencl: fix a dp4a bug for devices where cl_khr_integer_dot_product i…
wanghqc Jul 14, 2026
dfba90d
webui: parse effective-parameter sizes (E2B, E4B) as params (#25529)
erusev Jul 14, 2026
236ab57
ui: Fix spacing in tool-call request (#25634)
bill88t Jul 14, 2026
6e52db5
server: add --cors-* options (#25655)
ngxson Jul 14, 2026
bf2c86d
server : refactor prompt cache state ownership (#25649)
ggerganov Jul 14, 2026
c718542
hexagon: fix hmx-queue signal enum-narrowing problem (#25677)
chyan8 Jul 14, 2026
a4ce259
opencl: avoid the vec path in GEMV for unaligned row stride (#25671)
wanghqc Jul 14, 2026
00fa7cb
opencl: handle OOB write in noshuffle GEMV kernels (odd ne01) (#25640)
wanghqc Jul 14, 2026
12127de
opencl: do not use `clCreateBufferWithProperties` when targeting CL 2…
wanghqc Jul 15, 2026
32b741c
[SYCL] Flash Attention with XMX engine via oneDNN (#25222)
hmscider Jul 15, 2026
0e148a5
sycl: Increase minimum buffer size for USM system allocations (#25525)
ifdu Jul 15, 2026
22b208b
sycl : implement xielu op (#25550)
atsmith3 Jul 15, 2026
ae9291e
sycl : support kernel type fp16 for conv2d_dw (#25653)
arthw Jul 15, 2026
d3fba0c
sycl : fix get_rows Q2_K, Q4_K, Q5_K (#25656)
arthw Jul 15, 2026
33a75f4
DeepseekV4: reduce graph splits (#25702)
am17an Jul 15, 2026
f955e39
ggml: add f16 out_prod support for CPU and out_prod op for Vulkan (#2…
Lamothe Jul 15, 2026
b3c9d1b
metal: fuse snake activation (mul, sin, sqr, mul, add) (#25459)
ServeurpersoCom Jul 15, 2026
c810293
ci : add HF_TOKEN to self-hosted workflows (#25706)
ggerganov Jul 15, 2026
a3e5b96
cuda : relax tensor contiguity requirements for quantized concat (#25…
fairydreaming Jul 15, 2026
a05df0a
ui: fix thinking menu never appearing in single-model mode (#25637)
ServeurpersoCom Jul 15, 2026
a582222
server: fix read_file append_loc space breaking edit_file match (#25705)
ServeurpersoCom Jul 15, 2026
956973c
Fix crash with draft-simple (#25720)
gaugarg-nv Jul 15, 2026
f6f12e4
CUDA: tighter MMQ src1 buffer size for native fp4 (#25613)
leonardHONG Jul 15, 2026
c3d47e6
opencl: fix two issues on flash attention for Adreno a7x (#25697)
wanghqc Jul 15, 2026
aff6eb6
tokenize : drop --stdin mutual-exclusion check (#25672)
angt Jul 15, 2026
3b53219
cuda : CUDA GGML_OP_LIGHTNING_INDEXER implementation (generic vector …
fairydreaming Jul 15, 2026
32beb24
ui: Agentic Content UX improvements (#25450)
allozaur Jul 15, 2026
505b1ed
opencl: exclude some moe kernels on Adreno a7x (#25698)
wanghqc Jul 15, 2026
602f828
cuda: extract Q1_0 elements via __byte_perm (#25628)
dfriehs Jul 16, 2026
3dafb58
opencl: disable FA and MoE weights repack to work around compiler iss…
wanghqc Jul 16, 2026
56d6e9d
quant : allow using manual tensor types with --pure (#25716)
ggerganov Jul 16, 2026
a320cbf
ci : add official website link to release notes (#25728)
ggerganov Jul 16, 2026
5839ba3
CUDA: dedup MoE gate/up activation quantization (#25441)
praneshgo Jul 16, 2026
c7d8722
ggml-cuda : restore prop.integrated on HIP builds (#24233)
liminfei-amd Jul 16, 2026
8ee54c8
server: Ignore empty / non-existing `Origin` headers (#25756)
sdroege Jul 16, 2026
3f08ef2
Enable CUDA graphs on volta+turing (#25749)
heislera763 Jul 16, 2026
79bba02
CUDA: Support CUDA Virtual Devices (#25228)
anavp-nvidia Jul 16, 2026
a55a8c5
convert : fix dflash target tokenizer mismatch during conversion (#25…
ruixiang63 Jul 16, 2026
a8dc0e3
server : allow text-only slot save/restore with mtmd (#25076)
CHIPMUNK-T0T Jul 16, 2026
32e789f
tests: actually exercise `test-recurrent-state-rollback` (#25758)
am17an Jul 16, 2026
86b719b
vendor: update BoringSSL to 0.20260713.0 (#25624)
cabelo Jul 16, 2026
2e1fd76
TP: fix Phi3, Bert, Plamo2/3, ChatGLM (#25536)
JohannesGaessler Jul 16, 2026
3278e92
conversion: accept BitNetForCausalLM architecture name (#25769)
khashayarghafouri Jul 16, 2026
b15ca93
vulkan: when using transfer queue for async copies, sync on event_wai…
0cc4m Jul 16, 2026
f15bd60
kleidiai: Add SME vs SME2 distinction in kernel dispatch (#25478)
matcraje Jul 16, 2026
b2dd28a
hexagon: L2 cache handling rework (dirty bit tracking with lazy flush…
max-krasnyansky Jul 16, 2026
0dc74e3
DeepseekV4: Add fused hyper-connection ops (#25585)
am17an Jul 16, 2026
ac2557c
docs: added a note about using OpenCl with Adreno 810 (#25786)
akleine Jul 16, 2026
e8f19cc
opencl: loads quants as uint for q4_K and q5_K flat mv (optimization …
wanghqc Jul 16, 2026
b85833e
opencl: add ABS op (#25115)
Gezahegne Jul 17, 2026
0bd0ec6
sycl: fix row calculation when K_QUANTS_PER_ITERATION is 1 (#25690)
malsbat Jul 17, 2026
788e07d
vulkan: Support Q2_0 (#25430)
jeffbolznv Jul 17, 2026
11fd0a6
ggml-blas: default hadamard mul_mat to cpu routine (#25710)
taronaeo Jul 17, 2026
635cdd5
common : auto-download dflash- and eagle3- HF sidecars (#25811)
ggerganov Jul 17, 2026
5d5306b
tests : initialize all tensors in test_dsv4_hc to avoid NaNs in senti…
fairydreaming Jul 17, 2026
3727404
ggml : bump version to 0.17.0 (ggml/1568)
ggerganov Jul 17, 2026
7d56da7
sync : ggml
ggerganov Jul 17, 2026
86d86ed
opencl: transpose q4_K noshuffle scales for coalesced reads (#25805)
wanghqc Jul 17, 2026
6bdd77f
opencl: read/write MoE dp4a activation tiles to local memory as 128-…
wanghqc Jul 17, 2026
86a9c79
opencl: load and use `kernel_gemm_moe_q6_k_f32_ns` from bin kernel li…
lhez Jul 17, 2026
4937ca8
llama-quant : exclude i32 ffn_gate_tid2eid routing table from quantiz…
devYRPauli Jul 18, 2026
571d0d5
model: rotate injected K/V cache for DFlash (#25823)
ruixiang63 Jul 18, 2026
178a6c4
opencl: Support broadcast for Adreno MUL_MAT and honor `view_offs` fo…
wanghqc Jul 20, 2026
1521a9a
ui: enable the agentic flow when only the JS sandbox is active (#25865)
ServeurpersoCom Jul 20, 2026
43b5e63
UI: fix Settings/Display tool call content toggle (#25783)
ServeurpersoCom Jul 20, 2026
4ee6a9a
ui: fix collapsed user bubble with markdown rendering (#25869)
ServeurpersoCom Jul 20, 2026
91d2fc3
llama_dsv4: write only used rows in state (#25325)
am17an Jul 20, 2026
2beefef
ui: Sidebar Conversations Bulk Action + Improved Settings logic/UI (#…
allozaur Jul 20, 2026
76f46ad
hexagon: add CLAMP op (#25934)
tboinovski1 Jul 20, 2026
305ba51
CUDA: vectorize same-type get_rows with int4 copy (#25929)
pwilkin Jul 21, 2026
5735e10
ggml-openvino: Add GGML_BACKEND_DL_IMPL invocation for OpenVINO backe…
seijikun Jul 21, 2026
f048010
vulkan: Refactor vk_queue to use per-instance mutexes and unique hand…
winstonma Jul 21, 2026
40b740a
server : properly handle null llama_context (#25868)
fairydreaming Jul 21, 2026
fd41bf6
server: return 400 instead of 500 on validation error with X-Conversa…
ServeurpersoCom Jul 21, 2026
60f6a17
common: resolve draft repo to its requested sidecar (#25955)
ServeurpersoCom Jul 21, 2026
fb0e6b6
kleidiai : warn once when a weight type has no KleidiAI kernel (#25701)
kkjjkamal123 Jul 21, 2026
846e991
cuda: add sqrt_softplus in topk-moe for dsv4 (#25896)
am17an Jul 21, 2026
71102a7
hexagon: check tensor type when reusing descriptors (#25968)
w1049 Jul 21, 2026
b4aa7dd
mtmd : use align_corners for qwen3vl vision position embedding interp…
gerbenvv Jul 21, 2026
66e4bf7
convert: fix handle HunyuanVL XD-RoPE config (#25514)
wendadawen Jul 21, 2026
1f66c3c
Add support for Laguna XS.2 & M.1 (#25165)
joerowell Jul 22, 2026
67b9b0e
llama-arch: fix DeepSeek4 APE tensor op (#25945)
helanfxz Jul 22, 2026
c5a4a0b
cuda: GET_ROWS quants (#25962)
ServeurpersoCom Jul 22, 2026
7347430
webgpu : add CONV_2D_DW (depthwise conv2d) kernel (#25847)
m1el Jul 22, 2026
b4d6c7d
ci : fix SYCL package shared library lookup (#25987)
KyleHagy Jul 22, 2026
3ce7da2
ggml: enable PowerPC backend variants on AIX (#25983)
shalinib-ibm Jul 22, 2026
f534da2
Fix DeepSeek4 crafted template (#25414)
pwilkin Jul 22, 2026
6d5a910
common: infer the speculative type from the draft repo sidecars (#25989)
ServeurpersoCom Jul 22, 2026
e8e6c7a
minor: fix reasoning preserve var for DS4 [no ci] (#25999)
pwilkin Jul 22, 2026
61328e6
feat(ui): add symbolic math support to JS sandbox via nerdamer (#25948)
rankaiyx Jul 22, 2026
e0833bf
mtmd: use RAII for setting and resetting non-causal attention (#25723)
nikwen Jul 22, 2026
0278d83
hexagon: activation ops update (#25974)
tboinovski1 Jul 22, 2026
1a064ab
CUDA: Improve NVFP4 W4A4 activation quantization (#25730)
ORippler Jul 22, 2026
cf51256
ui: Add a "Default" option for the reasoning selector (#25846)
ServeurpersoCom Jul 22, 2026
4310aa4
contrib: allow all AI-generated code in general (#26012)
ngxson Jul 22, 2026
d941f6e
conversion: fix non-MoE NomicBert GGUF conversion error (#25996)
aorko01 Jul 23, 2026
c588c4f
metal : add f16 type support to leaky relu (#25981)
iliailmer Jul 23, 2026
da296d6
contrib: fix leftovers from the AI usage policy update (#26030)
ServeurpersoCom Jul 23, 2026
e6dd0e2
args: refactor mlock/mmap/directio into load-mode (#20834)
taronaeo Jul 23, 2026
1425386
CUDA: fix external compilation of q1_0 MMQ (#25778)
JohannesGaessler Jul 23, 2026
c0bc859
hexagon: fix Windows crash when op_poll is enabled (#26029)
adgup Jul 23, 2026
0a50d99
hexagon: further improved pipeline of the core bits (L2, DMA, MM, FA)…
max-krasnyansky Jul 24, 2026
0cea362
vendor: update subprocess.h (#26061)
ngxson Jul 24, 2026
8f5ab83
cohere2 moe template parser: enforce JSON schema for text responses i…
boondocklabs Jul 24, 2026
54ce507
UI: Fix settings precedence, Factory < Admin (--ui-config-file) < Use…
ServeurpersoCom Jul 24, 2026
77095ee
skill: create `add-new-model` and `code-review` (#26042)
ngxson Jul 24, 2026
56a8386
opencl: do not treat NULL-mask flash attention as causal (#25771)
kumaal Jul 24, 2026
ed7adbf
opencl: cache compiled cl_program binaries on disk (#26050)
wanghqc Jul 24, 2026
fa72aec
HIP: remove rocWMMA FlashAttention (#26046)
JohannesGaessler Jul 24, 2026
298219f
llama: various bug fixes (#26051)
ngxson Jul 24, 2026
27209a5
server: support "reasoning_effort": "none" in OAI API (#26045)
pnb Jul 24, 2026
95a923a
ui: fix MCP server display name conflicts in tools lists (#26011)
ServeurpersoCom Jul 24, 2026
88bfee1
model: add GLM 5.2 Indexer support (#25407)
pcuenca Jul 24, 2026
96013c5
ui: remove render effects (#26083)
ServeurpersoCom Jul 24, 2026
555881e
ui: reduce per-token render cost when streaming (#26053)
zachwinter Jul 24, 2026
d67c0b4
tests: synchronize save-load-state generation (#26056)
helanfxz Jul 25, 2026
910196f
common : add support for multiple end sequences in the reasoning budg…
aldehir Jul 25, 2026
fb92d8f
Update ggml/src/gguf.cpp : Defined virtual keyword for destructor of …
yymin1022 Jul 25, 2026
720d7fa
vendor : update cpp-httplib to 0.51.0 (#26067)
angt Jul 25, 2026
2cfc767
server : add missing task parameters(adaptive_target, adaptive_decay)…
tekinertekin Jul 25, 2026
abc3487
server: add format arg to datetime tool (#26117)
ngxson Jul 25, 2026
c812c54
common : skip empty implicit default preset (#25643)
hogeheer499-commits Jul 25, 2026
ecfec95
Merge remote-tracking branch 'upstream/master' into jimwu.sync-upstre…
Jul 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .github/workflows/build-self-hosted.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
branches:
- master
paths: [
'.github/workflows/build.yml',
'.github/workflows/build-self-hosted.yml',
'**/CMakeLists.txt',
'**/.cmake',
'**/*.h',
Expand Down Expand Up @@ -48,6 +48,8 @@ concurrency:
cancel-in-progress: true

env:
# note: this is dud token to avoid rate limiting (https://github.com/ggml-org/llama.cpp/pull/25706#issuecomment-4979941302)
HF_TOKEN: ${{ secrets.HF_TOKEN_CI }}
GGML_NLOOP: 3
GGML_N_THREADS: 1
LLAMA_ARG_LOG_COLORS: 1
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1109,6 +1109,8 @@ jobs:
-DGGML_SYCL=ON \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx \
-DCMAKE_INSTALL_RPATH='$ORIGIN' \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DLLAMA_OPENSSL=OFF \
-DGGML_NATIVE=OFF \
-DGGML_SYCL_F16=${{ matrix.fp16 }}
Expand Down Expand Up @@ -1651,6 +1653,9 @@ jobs:

</details>

**Website:**
- <https://llama.app>

**macOS/iOS:**
- [macOS Apple Silicon (arm64)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-macos-arm64.tar.gz)
- macOS Apple Silicon (arm64, KleidiAI enabled) [DISABLED](https://github.com/ggml-org/llama.cpp/pull/23780)
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/server-self-hosted.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ on:
]

env:
# note: this is dud token to avoid rate limiting (https://github.com/ggml-org/llama.cpp/pull/25706#issuecomment-4979941302)
HF_TOKEN: ${{ secrets.HF_TOKEN_CI }}
LLAMA_ARG_LOG_COLORS: 1
LLAMA_ARG_LOG_PREFIX: 1
LLAMA_ARG_LOG_TIMESTAMPS: 1
Expand Down Expand Up @@ -141,6 +143,24 @@ jobs:
export LLAMA_ARG_BACKEND_SAMPLING=1
pytest -v -x -m "not slow"

- name: Tests (GPUx2)
id: server_integration_tests_gpu2
if: ${{ !github.event.pull_request }}
run: |
cd tools/server/tests
source venv/bin/activate
export GGML_CUDA_DEVICES=2
pytest -v -x -m "not slow"

- name: Tests (GPUx2, backend-sampling)
id: server_integration_tests_gpu2_backend_sampling
if: ${{ !github.event.pull_request }}
run: |
cd tools/server/tests
source venv/bin/activate
export GGML_CUDA_DEVICES=2 LLAMA_ARG_BACKEND_SAMPLING=1
pytest -v -x -m "not slow"

server-kleidiai:
runs-on: ah-ubuntu_22_04-c8g_8x

Expand Down
1 change: 0 additions & 1 deletion .github/workflows/ui-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,3 @@ jobs:
hf buckets rm ggml-org/${{ env.HF_BUCKET_NAME }}/index.html --yes 2>/dev/null || true
hf buckets rm ggml-org/${{ env.HF_BUCKET_NAME }}/bundle.js --yes 2>/dev/null || true
hf buckets rm ggml-org/${{ env.HF_BUCKET_NAME }}/bundle.css --yes 2>/dev/null || true
hf buckets rm ggml-org/${{ env.HF_BUCKET_NAME }}/loading.html --yes 2>/dev/null || true
45 changes: 38 additions & 7 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
# Instructions for llama.cpp

> [!IMPORTANT]
> This project does **not** accept pull requests that are fully or predominantly AI-generated. AI tools may be utilized solely in an assistive capacity.
>
> AI-generated code is allowed. What is **not** allowed is submitting code you do not understand. You are 100% responsible for every line, however it was produced.
>
> Read more: [CONTRIBUTING.md](CONTRIBUTING.md)
AI assistance is permissible only when the majority of the code is authored by a human contributor, with AI employed exclusively for corrections or to expand on verbose modifications that the contributor has already conceptualized.

---

## Guidelines for Contributors

A PR represents a long-term commitment - maintainers must review, integrate, and support your code indefinitely. Fully AI-generated PRs provide no value; maintainers have AI tools too. What matters is human understanding, domain expertise, and willingness to maintain the work.
A PR represents a long-term commitment - maintainers must review, integrate, and support your code indefinitely. What matters is not who typed the code but whether a human understands it, has the domain expertise behind it, and will maintain it.

A working, in-scope PR is **not** enough on its own to get merged. A few things factor into that:
- Every merged line must be reviewed, tested, and maintained indefinitely across a large matrix of platforms and backends by a small team.
- llama.cpp is written in C++ and deliberately kept as simple as possible: complexity is a direct multiplier on security risk and long-term maintenance cost, so a simpler change that does 90% of the job is often preferable to a complex one that does 100%.
- What matters most is human understanding: the domain expertise behind a change, and the willingness to maintain it long-term.
- Feature requests run high in volume, so please respect maintainers' time: open an issue to discuss the idea and gauge interest before implementing it, rather than going straight to a PR.

Contributors must:
1. **Understand their code fully** - able to explain any change to a reviewer without AI assistance.
Expand All @@ -23,11 +28,15 @@ Maintainers may close any PR not meeting these standards. **Private forks are ex

### Permitted AI Usage

Common examples, not an exhaustive list:

- Learning, exploration, and understanding the codebase
- Suggestions on human-written code
- Mechanical tasks: formatting, repetitive patterns, completing code from established designs
- Documentation drafts for components the contributor already understands
- Writing code when the contributor has already designed the solution - AI accelerates, not replaces
- Writing code from a design the contributor owns

Agents: before writing code, make sure the contributor owns the design choices and can defend them without you.

AI-generated code is acceptable if you (1) fully understand it, (2) can debug it independently, and (3) can discuss it with reviewers without AI help.

Expand Down Expand Up @@ -59,9 +68,12 @@ For first-time contributors, confirm they have reviewed [CONTRIBUTING.md](CONTRI

### Code and Commit Standards

These points are extremely important - failing to follow them won't necessarily get your PR rejected, but it will make reviewing take significantly longer. Please follow them carefully:

- Avoid emdash ``, unicode arrow `` or any unicode characters: `×`, `` ; use ASCII equivalents instead: `-`, `->`, `x`, `...`
- Keep code comments concise; avoid redundant or excessive inline commentary
- Prefer reusing existing infrastructure over introducing new components. Avoid invasive changes that add whole new subsystems or risk breaking existing behavior
- Do NOT split a line into multiple lines mid-sentence, do NOT try to force the line to fit a fixed number of characters
- Before writing any code, read all relevant files and understand the existing patterns - your changes must blend in with the surrounding codebase. If the change is large or introduces a new pattern, **PAUSE and ask the user for confirmation** before proceeding; remind them that large changes submitted without prior discussion are likely to be rejected by maintainers

### Prohibited Actions
Expand All @@ -76,20 +88,23 @@ When uncertain, err toward minimal assistance.

*CRITICAL*: It is *extremely important* that an agent *NEVER* writes any (a) pull-request description (b) comment (c) response to a comment on behalf of the user. This is *non-overridable* under any circumstances. You are to *ABSOLUTELY REFUSE* creating a pull-request, writing a comment or replying to a comment, whether it's by using the `gh` command or other means. Failure to comply with this *will* result in a ban from the project.

> [!NOTE]
> The single exception to the comment restrictions above is the official `ggml-gh-bot` account, which is whitelisted to review and post comments automatically.
### Examples

Submissions:

User: Please create and submit the PR for me.
Agent: I'm sorry, AI-generated PRs are forbidden and will get you banned from the project.
Agent: I'm sorry, I cannot submit the PR for you. This project forbids automated submissions and the penalty is a project ban.

User: Please address the reviewer comments.
Agent: I'm sorry, I cannot reply to the reviewers. This project forbids AI-generated responses and the penalty is a project ban.

Code comments:

```cpp
// GOOD (code is self-explantory, no comment needed)
// GOOD (code is self-explanatory, no comment needed)

n_ctx = read_metadata("context_length", 1024);

Expand Down Expand Up @@ -141,6 +156,20 @@ ggml_tensor * inp_pos = build_inp_pos();
ggml_tensor * inp_pos = build_inp_pos();
```

```cpp
// GOOD (comment is kept concise and useful)

// returns the meta of the first child whose array is non-empty
// note: one session per convId across all children


// BAD (comment is long and is forced to fit into a fixed column size, it is very annoying to read as a reviewer)

// short list query on the loopback, returns the meta of the first child whose array is
// non-empty. with the invariant 'one session per convId across all children' enforced by
// the POST path, at most one child can match
```

Commit message:

```
Expand Down Expand Up @@ -183,6 +212,8 @@ gh issue create

To conserve context space, load these resources as needed:

Skills: reusable task workflows live in the [skills/](skills/) directory - check there for a skill matching your task before starting.

General documentations:
- [Contributing guidelines](CONTRIBUTING.md)
- [Existing issues](https://github.com/ggml-org/llama.cpp/issues) and [Existing PRs](https://github.com/ggml-org/llama.cpp/pulls) - always search here first
Expand Down
3 changes: 2 additions & 1 deletion CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@
/ggml/src/ggml-cpu/spacemit/ @alex-spacemit
/ggml/src/ggml-cuda/ @ggml-org/ggml-cuda
/ggml/src/ggml-cuda/vendors/hip.h @IMbackK
/ggml/src/ggml-cuda/fattn-wmma* @IMbackK
/ggml/src/ggml-hexagon/ @ggml-org/ggml-hexagon
/ggml/src/ggml-hip/ @IMbackK
/ggml/src/ggml-et/ @marty1885
/ggml/src/ggml-impl.h @ggerganov
/ggml/src/ggml-metal/ @ggml-org/ggml-metal
/ggml/src/ggml-opencl/ @ggml-org/ggml-opencl
Expand Down Expand Up @@ -119,3 +119,4 @@
/SECURITY.md @ggerganov
/build-xcframework.sh @danbev
requirements*.txt @CISC
/skills @ngxson
37 changes: 23 additions & 14 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,38 @@ The project differentiates between 3 levels of contributors:
# AI Usage Policy

> [!IMPORTANT]
> This project does **not** accept pull requests that are fully or predominantly AI-generated. AI tools may be utilized solely in an assistive capacity.
>
> Repeated violations of this policy may result in your account being permanently banned from contributing to the project.
> AI-generated code is allowed. You are 100% responsible for every line, however it was produced.
>
> Undisclosed AI usage may result in your account being permanently banned from contributing to the project.
>
> Detailed information regarding permissible and restricted uses of AI can be found in the [AGENTS.md](AGENTS.md) file.

Code that is initially generated by AI and subsequently edited will still be considered AI-generated. AI assistance is permissible only when the majority of the code is authored by a human contributor, with AI employed exclusively for corrections or to expand on verbose modifications that the contributor has already conceptualized (e.g., generating repeated lines with minor variations).

If AI is used to generate any portion of the code, contributors must adhere to the following requirements:

1. Explicitly disclose the manner in which AI was employed.
2. Perform a comprehensive manual review prior to submitting the pull request.
3. Be prepared to explain every line of code they submitted when asked about it by a maintainer.
4. It is strictly prohibited to use AI to write your posts for you (bug reports, feature requests, pull request descriptions, Github discussions, responding to humans, ...).
2. Check for an existing PR addressing the same change; if one exists, comment there to work with its author instead of opening a duplicate.
3. Perform a comprehensive manual review prior to submitting the pull request.
4. Be prepared to explain every line of code they submitted when asked about it by a maintainer.
5. It is strictly prohibited to use AI to write your posts for you (bug reports, feature requests, pull request descriptions, Github discussions, responding to humans, ...).

For more info, please refer to the [AGENTS.md](AGENTS.md) file.

# Pull requests (for contributors & collaborators)

Before submitting your PR:
- Search for existing PRs to prevent duplicating efforts
### Before you start

- Search for existing discussions and PRs first - duplicates will likely be closed without questions.
- Features must begin with an issue, not a PR - let interest accumulate before writing code; niche features may only land as an example/tool, or on a private fork.
- Bug-fix PRs must include a reproducible issue and a regression test that fails before your change and passes after. Fixes without a test may be closed without review.
- New CLI or public API additions carry a **higher bar** than internal changes - justify why an existing mechanism doesn't suffice.
- Meeting all of the above still doesn't guarantee a merge - see [Pull requests (for maintainers)](#pull-requests-for-maintainers).
- If you are a new contributor
- Limit your open PRs to 1
- Do not submit trivial fixes (e.g. typos, formatting changes)

### Preparing your PR

- llama.cpp uses the ggml tensor library for model evaluation. If you are unfamiliar with ggml, consider taking a look at the [examples in the ggml repository](https://github.com/ggml-org/ggml/tree/master/examples/). [simple](https://github.com/ggml-org/ggml/tree/master/examples/simple) shows the bare minimum for using ggml. [gpt-2](https://github.com/ggml-org/ggml/tree/master/examples/gpt-2) has minimal implementations for language model inference using GPT-2. [mnist](https://github.com/ggml-org/ggml/tree/master/examples/mnist) demonstrates how to train and evaluate a simple image classifier
- Test your changes:
- Execute [the full CI locally on your machine](ci/README.md) before publishing
Expand All @@ -38,19 +49,16 @@ Before submitting your PR:
- If you modified a `ggml` operator or added a new one, add the corresponding test cases to `test-backend-ops`
- Create separate PRs for each feature or fix:
- Avoid combining unrelated changes in a single PR
- For intricate features, consider opening a feature request first to discuss and align expectations
- When adding support for a new model or feature, focus on **CPU support only** in the initial PR unless you have a good reason not to. Add support for other backends like CUDA in follow-up PRs
- In particular, adding new data types (extension of the `ggml_type` enum) carries with it a disproportionate maintenance burden. As such, to add a new quantization type you will need to meet the following *additional* criteria *at minimum*:
- convert a small model to GGUF using the new type and upload it to HuggingFace
- provide [perplexity](https://github.com/ggml-org/llama.cpp/tree/master/tools/perplexity) comparisons to FP16/BF16 (whichever is the native precision) as well as to types of similar size
- provide KL divergence data calculated vs. the FP16/BF16 (whichever is the native precision) version for both the new type as well as types of similar size
- provide [performance data](https://github.com/ggml-org/llama.cpp/tree/master/tools/llama-bench) for the new type in comparison to types of similar size on pure CPU
- Consider allowing write access to your branch for faster reviews, as reviewers can push commits directly
- If you are a new contributor
- Limit your open PRs to 1
- Do not submit trivial fixes (e.g. typos, formatting changes)

After submitting your PR:
### After submitting your PR

- Expect requests for modifications to ensure the code meets llama.cpp's standards for quality and long-term maintainability
- Maintainers will rely on your insights and approval when making a final decision to approve and merge a PR
- If your PR becomes stale, rebase it on top of latest `master` to get maintainers attention
Expand All @@ -70,6 +78,7 @@ Maintainers reserve the right to decline review or close pull requests for any r
- The proposed change is already mentioned in the roadmap or an existing issue, and it has been assigned to someone.
- The pull request duplicates an existing one.
- The contributor fails to adhere to this contributing guide or the AI policy.
- The change doesn't fit the existing architecture, or is too complex to justify its benefit.

# Coding guidelines

Expand Down
2 changes: 2 additions & 0 deletions common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ add_library(${TARGET}
sampling.h
speculative.cpp
speculative.h
trie.cpp
trie.h
unicode.cpp
unicode.h
jinja/lexer.cpp
Expand Down
Loading
Loading