Antfly version v0.2.0
Documentation (2026-08-11)
The documentation is available here:
What's Changed
- fix: reject writes outside byte range during split transition by @ajroetker in #35
- Add serverless operator, proxy, and TLA+ trace validation by @ajroetker in #36
- Fix large linear merge request handling by @ajroetker in #39
- Fix divide-by-zero panic in Pebble FileCache during shutdown by @ajroetker in #40
- Fix TLA trace bridge and CI validation by @dovinmu in #41
- Add AFB portable backup format for cross-backend backup/restore by @ajroetker in #42
- fix antflycluster phase calculation by @timkaye11 in #49
- operator: add single-node swarm mode support by @timkaye11 in #50
- Consolidate proxy and operator modules into the monorepo by @ajroetker in #51
- Consolidate pkg/termite into monorepo and move API to /ml/v1/* by @ajroetker in #52
- Propagate AntflyCluster labels to pods by @ajroetker in #54
- Propagate termite pool labels to pods by @ajroetker in #55
- Add index query latency metrics by @ajroetker in #56
- Consolidate Antfly and Termite operators by @ajroetker in #57
- Add operator runtime recovery diagnostics by @ajroetker in #58
- Add Antfly TypeScript design system workspace by @ajroetker in #60
- Add operator autoscaling and storage scale-down safety by @ajroetker in #59
- Apply TypeScript private deps patch by @ajroetker in #61
- Add canonical design system exports by @ajroetker in #62
- Fix operator PVC ownership for non-root Antfly runtime by @ajroetker in #63
- Adopt shared design system in Antfarm by @ajroetker in #64
- Add structured record mapping utilities by @ajroetker in #65
- Fix Termite embedded health routes by @ajroetker in #68
- Use Cloud Build for container publishing by @ajroetker in #67
- Consolidate Termite backend CI by @ajroetker in #70
- Add external Termite pool discovery by @ajroetker in #69
- CI arc revamp by @dovinmu in #53
- ci: run omni on Ubuntu 24 ARC runner by @ajroetker in #71
- Migrate Zig runtime into monorepo by @ajroetker in #72
- Add GLiNER2 relation extraction direct quant support by @timkaye11 in #74
- zig: rotate remaining secret consumers live by @ajroetker in #73
- Document and guard join-aware auth by @ajroetker in #76
- Remove Codecov from Python CI by @ajroetker in #78
- lora policy alignment across finetuning recipe layer by @timkaye11 in #75
- Fix SearchAF Zig runtime failures by @ajroetker in #83
- zig: add secrets reload status coverage by @ajroetker in #77
- Harden A2A and internal retrieval routes with admin-only requirement by @dovinmu in #82
- Require authentication for MCP public endpoint by @dovinmu in #79
- Fix metadata admin bootstrap ordering by @ajroetker in #84
- Fix remote content credential resolution for non-S3 URLs by @ajroetker in #86
- Fix SearchAF swarm query and health binding by @ajroetker in #93
- Bump vulnerable TypeScript dependencies by @dovinmu in #92
- Restrict Termite Electron file serving by @dovinmu in #89
- Use Zig runtime contract in operators by @ajroetker in #87
- Fix SearchAF Zig runtime response contracts by @ajroetker in #96
- Fix Zig OOM retirement lifecycle cleanup by @dovinmu in #80
- Fix Zig partial config defaults by @ajroetker in #94
- Fallback algebraic bucket aggregations by @ajroetker in #98
- Reduce operator RBAC permissions by @dovinmu in #90
- Repair stale swarm StatefulSet rollouts by @ajroetker in #99
- Harden store backup path handling by @dovinmu in #88
- Bump vulnerable Go dependencies by @dovinmu in #91
- Jina v5 direct metal embeddings by @timkaye11 in #95
- Antfarm Zig Updates by @timkaye11 in #85
- Make Zig runtime the default release by @ajroetker in #81
- Add native Gemini multimodal embeddings by @ajroetker in #102
- Make Antfarm runtime configurable for hosted deployments by @ajroetker in #103
- Build Antfarm dashboard assets by @ajroetker in #105
- Hide local Antfarm admin routes in hosted mode by @ajroetker in #106
- Add Bedrock multimodal embedding support by @ajroetker in #104
- Bedrock Titan Multi-modal Support by @excenter in #107
- Fix Zig container root-context build by @ajroetker in #108
- Avoid creating legacy storage dirs for Zig swarm by @ajroetker in #110
- Rebuild Antfarm assets without conflict markers by @ajroetker in #111
- Fix composed vector query correctness and speed hybrid filtering by @ajroetker in #100
- Consolidate SDK contracts and Go layout by @ajroetker in #112
- Support CloudAF data-plane client URLs by @ajroetker in #109
- Fix CI failures from split lifecycle and SDK/runtime drift by @ajroetker in #114
- fix(sdk): bundle openapi-fetch to fix CJS interop crash by @markhayden in #45
- fix(termite-sdk): bundle openapi-fetch to fix CJS interop crash by @markhayden in #46
- Unify managed antfly and termite embedders by @ajroetker in #116
- Fix remote content security config handling by @ajroetker in #115
- Update Epstein example for Zig Termite runtime by @ajroetker in #113
- Fix dependency-free ONNX model loading by @ajroetker in #118
- Fix TTL metadata for local document writes by @ajroetker in #121
- Fix quantized GGUF embedding lookup shapes by @timkaye11 in #122
- Productionize GLiNER2 resident fine-tuning on Metal and MLX by @timkaye11 in #123
- Fix query aggregation response label lifetime by @ajroetker in #125
- Speed up Zig Termite models listing by @ajroetker in #124
- Implement DOCID document identity and query APIs by @ajroetker in #97
- Make Termite readyz independent of model inventory by @ajroetker in #127
- Add cluster topology status endpoint by @ajroetker in #128
- Move container publishing to us-central1 GAR by @ajroetker in #126
- Consolidate Go unit and omni CI by @ajroetker in #132
- Support shared Termite API keys by @ajroetker in #130
- Fix bool must+filter clause handling in structured filter parser by @dovinmu in #131
- Run Playwright CI on ARC with local browser installs by @ajroetker in #133
- @antfly/design-system visual language rebuild by @stinkbugaf in #135
- antfarm: visual sweep to design-system 0.1.0 (square, flat, amber, mono) by @stinkbugaf in #136
- Design asset artifacts API by @ajroetker in #117
- Consolidate inference CLI under antfly by @ajroetker in #129
- Accelerate GLiNER2 with Zig Metal, CPU, and ONNX Runtime support by @timkaye11 in #137
- Fix macOS Zig native Metal builds without MPSGraph by @timkaye11 in #134
- Add Antfly Cloud CLI shim by @dovinmu in #139
- Add extraction inference helpers by @ajroetker in #147
- Bound SDK batch request and response bodies by @ajroetker in #146
- Harden autoscaling split e2e wait by @ajroetker in #149
- Add TypeScript SDK runtime guardrails by @timkaye11 in #148
- design-system v0.1.1: Heading/Text/Link primitives + highlight fix by @stinkbugaf in #150
- Reduce load memory pressure by @ajroetker in #138
- Add trusted-principal MCP auth by @ajroetker in #151
- Fix CLIP image preprocessing contract by @ajroetker in #152
- Add Antfarm Graph Index Explorer by @timkaye11 in #154
- Add pip and npm CLI packaging by @ajroetker in #156
- Fix CLI package bin path by @ajroetker in #157
- Namespace Python SDK release tags by @ajroetker in #158
- Wire release container publishing to Zig runtime by @ajroetker in #159
- Fix TypeScript CI runner temp env by @ajroetker in #160
- Run Python SDK generation check on canonical Python by @ajroetker in #161
- Drop Python 3.9 support for Python packages by @ajroetker in #162
- Fix Antfly release Zig setup by @ajroetker in #163
- Add entity-resolution design and comparison-levels scorer by @ajroetker in #142
- Stop building Go fallback artifacts during release by @ajroetker in #167
- Harden CLI NDJSON loading by @ajroetker in #165
- include Antfly Inference unit tests in ci pipeline by @timkaye11 in #166
- Block graph replay on missing resolver contracts by @ajroetker in #169
- Harden metadata runtime readiness by @ajroetker in #168
- Split full-default Zig CI phases by @ajroetker in #170
- Set up Go for GoReleaser metadata by @ajroetker in #171
- Stabilize scheduled Zig CI followups by @ajroetker in #172
- Replace GoReleaser release publishing by @ajroetker in #173
- Fan out container release publishing by @ajroetker in #174
- Add recall harness CI progress output by @ajroetker in #175
- Add Gemma4 12B unified image/audio inference support by @timkaye11 in #176
- Add resolution graph flake diagnostics by @ajroetker in #178
- Tune bulk ingest and inference smoke flows by @ajroetker in #177
- Support GLiNER2 split GGUF bundles by @ajroetker in #185
- Add Epstein graph visualization by @ajroetker in #186
- Fix public index and inference pull regressions by @ajroetker in #184
- Improve recall harness failure diagnostics by @ajroetker in #187
- Make recall harness heartbeat optional by @ajroetker in #188
- ci: trigger Colony docs builds by @ajroetker in #189
- Fix rc2 query and inference regressions by @ajroetker in #198
- Segment transaction TLA traces for CI by @ajroetker in #199
- Fix inference and enrichment issue regressions by @ajroetker in #209
- Store LSM bloom filters only in SSTables by @ajroetker in #211
- Support GLiNER2 ONNX Exports and Symbolic Metal Fallbacks by @timkaye11 in #212
- Add native Traditional ML predictors with CLI model pull and /ml/v1/predict API by @timkaye11 in #155
- Tune LSM online write and bulk ingest behavior by @ajroetker in #200
- Make Gemma4 Metal tool calling production-ready by @timkaye11 in #218
- Add resolver replay diagnostics to index status by @ajroetker in #213
- Zig query perf: live-doc visibility, search effort policy, stale payload repair by @dovinmu in #217
- Restore Go portable AFB backups in Zig by @dovinmu in #215
- Fix e2e flakes: LSM reclaim read race and startup catch-up livelock by @ajroetker in #221
- Read-path scalability, quarantine self-heal, and HBC link repair by @ajroetker in #220
- Design system 0.2: quiet chrome, restraint, and the ink primary by @stinkbugaf in #222
- Add derived document hierarchy support by @ajroetker in #216
- Fix raft apply deadlock behind nightly e2e hangs; harden CI diagnostics by @ajroetker in #224
- Implement docsaf derived document hierarchy by @ajroetker in #225
- Fix swarm MCP route registration by @ajroetker in #227
- Bound metadata raft memory retention by @ajroetker in #226
- Fix linalg futex wait syscall by @ajroetker in #229
- Add GET /connections: list connected providers, models, and stores by @ajroetker in #228
- Clean up Antfarm connections rendering by @ajroetker in #231
- Simplify Antfarm navigation by @ajroetker in #230
- Implement Antfarm experience follow-ups by @ajroetker in #232
- Recover malformed PDF content parsing by @ajroetker in #234
- Fix document extraction failure recovery by @ajroetker in #235
- Align dense stress test with stable vector ids by @dovinmu in #219
- Fix runtime shapes for symbolic inference ops by @ajroetker in #236
- Fix ONNX symbolic projection embeddings by @ajroetker in #237
- Extension system v1 by @ajroetker in #233
- Remove MLX backend support by @ajroetker in #119
- Update TypeScript workspace dependencies by @ajroetker in #239
- Add data-plane auth CLI commands by @ajroetker in #238
- Bound document extraction memory by @ajroetker in #240
- Drop corrupt indexes without blocking shard startup by @ajroetker in #241
- Add Google Drive auth to docsaf CLI by @ajroetker in #242
- Fix Antfarm table detail crash on sparse schemas by @timkaye11 in #245
- CUDA 13.2 production readiness for ClipClap, GLiNER2, and mxbai-rerank by @timkaye11 in #244
- Filter extension MCP tools by permissions by @ajroetker in #246
- Enable Tensor Core CUDA dispatch for mxbai reranker, CLIP/CLAP, and GLiNER2 by @timkaye11 in #249
- Stabilize scaling drain e2e seed writes by @ajroetker in #251
- Fix backup job URL configuration by @ajroetker in #247
- support fielded MCP full text search by @ajroetker in #254
- Speed up Gemma4 E2B on Metal by @timkaye11 in #252
- add SDK model pull helpers by @ajroetker in #248
- Fix full text enrichment index provisioning by @ajroetker in #250
- Add tenant-scoped ARD discovery surfaces by @ajroetker in #253
- support raw MCP query requests by @ajroetker in #256
- Add hot-standby HA design and runtime surface by @ajroetker in #255
- configure retrieval agent tools by request step by @ajroetker in #259
- Speed up Gemma4 CUDA inference by @timkaye11 in #258
- Mount public API on metadata server by @ajroetker in #262
- Florence2 and the Machine: Metal Version by @timkaye11 in #263
- Stabilize TTL full-text search test by @ajroetker in #264
- implement AntflyLite by @ajroetker in #261
- CUDA support for Florence-2 GGUF by @timkaye11 in #265
- Fix lite index benchmark reporting by @ajroetker in #268
- Fix startup catch-up busy retry loop by @ajroetker in #267
- Gemma4 CUDA production readiness: E4B Q4_K, MTP, and 12B encoder-free multimodal by @timkaye11 in #266
- Improve Gemma 4 E2B Metal inference reuse and fix unbounded RAG generation by @timkaye11 in #260
- Fix operator container build with local module replaces by @ajroetker in #269
- Flatten extension package source layout by @ajroetker in #270
- Shrink generated operator CRDs by @ajroetker in #271
- Use read-index barrier for metadata backups by @ajroetker in #273
- Support Antfly inference defaults by @ajroetker in #275
- Add artifact CLI and artifact enrichment listing by @ajroetker in #274
- Fix HTTP raft snapshot catch-up by @ajroetker in #276
- Fix clipclap ONNX embedding correctness by @ajroetker in #280
- Fix backup forwarding and runRound phase logs by @ajroetker in #282
- Fail loud on remote media render failures by @ajroetker in #283
- Use doc_type for docsAF rows and harden readiness tests by @ajroetker in #285
- Fix dense replay catch-up convergence by @ajroetker in #290
- Harden LSM root and WAL locking by @ajroetker in #284
- Fix dense replay progress and alias-safe startup drains by @ajroetker in #292
- Diagnose backup raft stalls and reconcile backup jobs by @ajroetker in #294
- Fix data raft leader readiness publication by @ajroetker in #295
- Fix Metal SDPA seq-major layout by @ajroetker in #297
- Clean recovered LSM table temps and detail raft persist latency by @ajroetker in #296
- Fix backup restore writer conflict by @ajroetker in #298
- Clean recovered LSM temp files before WAL replay by @ajroetker in #299
- Harden recovery and backup operations by @ajroetker in #300
- Route enrichment assets into full text by @ajroetker in #301
- Fix metadata bootstrap churn and raft no-op persistence by @ajroetker in #311
- Default imported ONNX graphs without enabling ORT by default by @timkaye11 in #315
- Gemma4 E4B QAT CUDA by @timkaye11 in #320
- Fix artifact-backed chunk embeddings by @ajroetker in #318
- Fix CLIP image preprocessing and Metal parity by @timkaye11 in #323
- Handle unsupported OCR backend paths by @stinkbugaf in #324
- Productionize Gemma4 E4B QAT Q4_0 on Metal: kernels, frame safety, sampling, speculative groundwork by @timkaye11 in #321
- Repair corrupt embedding artifact replay by @ajroetker in #316
- Fix thin replay delete hints for managed indexes by @stinkbugaf in #327
- Fix document extraction state recovery by @stinkbugaf in #329
- Harden index repair followups by @ajroetker in #326
- Antfly Lite: cache native pages, chain links, and docstore snapshots by @dovinmu in #330
- Include OpenAPI specs in Docker build context by @bpopadiuk in #333
- Skip latest aliases for v0.1 releases by @ajroetker in #332
- Wire repair regression tests into focused bucket by @ajroetker in #331
- Harden std HTTP listener threading by @ajroetker in #312
- Fix HA admin token handling by @bpopadiuk in #336
- Add per-item embedding error policy by @ajroetker in #338
- Pin release publishing to npm 11 by @ajroetker in #341
- Batch native Florence reader inference by @ajroetker in #340
- Fix provisioned write coalescer losing later writes to deleted keys by @dovinmu in #314
- Fix HA failover recovery from live Kind validation by @bpopadiuk in #339
- Exclude-set live-doc filtering and cached WAL retention snapshots by @dovinmu in #342
- Fix HA promotion and replication state races by @bpopadiuk in #343
- Cache query embeddings with bounded singleflight by @ajroetker in #348
- Add prompt-prefix KV caching for native, Metal, and CUDA inference by @timkaye11 in #337
- [pdfs] Preserve remote PDF MIME across large downloads by @bpopadiuk in #357
- [bug] Fix HTTP listener timeout starvation by @bpopadiuk in #358
- Productionize Florence-2 Metal KV-cache decoding by @timkaye11 in #349
- Fix MCP index list structured content by @jmcdermott45 in #361
- Harden derived coverage, restore generations, and full CI gates by @ajroetker in #335
- Add standalone Lite storage and harden Zig storage lifecycle by @ajroetker in #344
- Bound zig-base unit test concurrency by @ajroetker in #362
- Harden dense index publication and restart recovery by @ajroetker in #363
- Productionize bounded multi-model inference by @timkaye11 in #359
- Add multi-source artifact indexes across API and SDKs by @ajroetker in #367
- Optimize full-text index performance by @ajroetker in #365
- Harden storage generations, Raft snapshots, and split publication by @ajroetker in #364
- gate hot-standby HA pending paired release by @bpopadiuk in #373
- Make Antfarm inference connection-first by @timkaye11 in #369
- Add PDF OCR fallback to document extraction by @dovinmu in #374
- Fix Linux musl statvfs builds by @bpopadiuk in #375
- Fix S3 document fetch hangs by @dovinmu in #379
- Route selective dynamic filters through exact vector search by @dovinmu in #380
- Implement secret and remote-content reload lifecycle by @ajroetker in #387
- Use opaque secret publication acknowledgements by @ajroetker in #389
- Report layered secret acknowledgement capability truthfully by @ajroetker in #390
- Optimize Metal SDPA with bounded-barrier dispatch by @ajroetker in #391
- Fix Metal SDPA drop-under-load regression by @bpopadiuk in #388
- [Codex] July 24 release hardening: integrate #371 and triage smokeout blockers by @dovinmu in #393
- Back off recoverable derived-index retries by @bpopadiuk in #401
- Optimize Zig tokenizer toward Gigatoken throughput by @ajroetker in #402
- Optimize large-corpus Zig tokenization by @ajroetker in #403
- fix(zig): harden 0.2.0 release blockers by @dovinmu in #409
- inference: make the 0.2.0 model support surface true by @dovinmu in #404
- Fix MCP bridge leaks and gate A2A as experimental by @dovinmu in #413
- Fix restore, split, and HA lifecycle races by @ajroetker in #371
- Harden StreamVByte decoding and add native ARM64 gate by @bpopadiuk in #411
- Fix Zig full and inference CI regressions by @ajroetker in #415
- Protect rebuild cursors against silent corruption by @ajroetker in #414
- Strip Zig production release artifacts by @ajroetker in #417
- Use ReleaseFast for ARM64 release archives by @ajroetker in #421
- Fix scheduled full Zig and inference CI failures by @ajroetker in #419
- Harden autosplit median-key route fallback by @ajroetker in #425
- storage: bound LSM WAL retention and run files by @ajroetker in #418
- Fix full-text prefix and deletion query cliffs by @ajroetker in #420
- Harden Zig overload recovery and keyword recall by @bpopadiuk in #424
- Restore release-safe ARM64 archive settings by @ajroetker in #428
- Harden full-text index provenance and analyzer publication by @ajroetker in #429
- Fix projected graph pushes and index deletion races by @ajroetker in #430
- fix(inference): serialize GPU embedding execution by @ajroetker in #436
- Fence dense catalog lookup before fast-path preflight by @ajroetker in #432
- Fix full inference E2E model contention by @ajroetker in #427
- fix: automate schema generations and macOS inference admission by @ajroetker in #438
- Bound native FDs and prevent text merge livelock by @ajroetker in #433
- Fix full E2E promotion and inference flakes by @ajroetker in #439
- Harden storage recovery and index readiness by @ajroetker in #445
- Canonicalize extraction and harden inference E2Es by @ajroetker in #446
- GLiNER2 fine-tuning: Zig-native LoRA training at result parity with upstream by @timkaye11 in #377
- Retry transient Zig ARM64 release allocation failures by @ajroetker in #452
- Fix strict multimodal admission and retained HTTP workers by @ajroetker in #449
- Harden inference E2E admission and organize GLiNER2 fixtures by @timkaye11 in #447
- Fix rc.26 filtered ANN and inference quality gaps by @ajroetker in #456
- Harden Raft write routing during leader transitions by @ajroetker in #461
- Fix dynamic sparse ONNX batches and trim padded sequences by @timkaye11 in #457
- Fix enrichment retry lifecycle and repair UX by @ajroetker in #462
- Fix fused aggregations on truncated result pages by @ajroetker in #464
- fix(zig): make batch writes atomic across shards by @ajroetker in #458
- Fix Raft timeout diagnostics from wedging writes by @ajroetker in #465
- Fix metadata simulation transaction wire outcomes by @ajroetker in #466
- Fix inference run help starting the server by @dovinmu in #459
- Enforce read permission for document scans by @dovinmu in #467
- Batch and harden GLiNER2 and reranker inference by @timkaye11 in #470
- fix(api): handle missing tables in HTTPX reads by @ajroetker in #471
New Contributors
- @timkaye11 made their first contribution in #49
- @markhayden made their first contribution in #45
- @stinkbugaf made their first contribution in #135
- @bpopadiuk made their first contribution in #333
- @jmcdermott45 made their first contribution in #361
Full Changelog: v0.1.1...v0.2.0
Released by Antfly release scripts.