Releases: geisten/geistlib
Releases · geisten/geistlib
Release list
geist v0.5.0
What's Changed
- dynamic-tools-v1: additive streaming — conversation.delta + features capability by @geisten in #122
- fix(dynamic-tools): land the streaming review fixes missed by #122's stale-head merge by @geisten in #123
- refactor: repo-wide dead-code and duplication sweep (−1051 lines) by @geisten in #124
- chore: remove Home-Assistant leftovers (blog posts + demo gif) by @geisten in #125
- release: v0.5.0 — version bump + CHANGELOG cut by @geisten in #126
Full Changelog: v0.4.0...v0.5.0
geist v0.4.0
What's Changed
- ci(release): harden embedded curl vs HF 429; badge → v0.3.3 by @geisten in #52
- docs: overhaul README + refresh benchmark chart by @geisten in #53
- docs: accuracy pass — de-stale x86, fix misleading claims, cut internal scratch by @geisten in #54
- docs: normalize repo slug geistlib → geisten/geisten by @geisten in #55
- Metal backend on main's contract: 60% faster decode, MMLU parity with llama.cpp by @geisten in #58
- fix(engine): honor session max_seq_len; stop decode no-op past ctx 4096 by @geisten in #59
- cli: auto-size context window to the prompt (long-context usable end-to-end) by @geisten in #60
- docs(bench): drop redundant GEIST_WEIGHT_MMAP=1; fix stale spec-head default by @geisten in #62
- chore(backends): remove 9 dead perf flags by @geisten in #63
- feat(kv): activation rotation + packed 4-bit KV cache (#61) by @geisten in #65
- chore(cpu_neon): remove 3 orphaned prefill kernels left by flag removal by @geisten in #64
- docs: warm up the README and lead the docs with the agenda by @geisten in #67
- feat(kv): default the Hadamard rotation on for packed INT4 (#61) by @geisten in #74
- test(kv): speculative decode equivalence under packed INT4 (#68) by @geisten in #73
- harden(kv): warn on silent rotation disable + document cache-shift constraint (#70, #71) by @geisten in #75
- test(kv): measure KL by context depth; INT4 depth-stable, KIVI degrades (#69) by @geisten in #76
- docs(metal): re-confirm cool numbers on current main (no regression) by @geisten in #72
- chore(metal): remove dead decode-replay recording scaffolding by @geisten in #66
- Agent-layer reliability eval + two routing tie-breakers by @geisten in #77
- ci(release): auto-update Homebrew tap on version tags by @geisten in #78
- feat: local Home Assistant edge appliance by @geisten in #79
- feat: add host-neutral dynamic-tools-v1 runtime by @geisten in #88
- fix(agent): correctness + security hardening (+ arch-registry collapse, ternary-paper comparison) by @geisten in #89
- ci: cover the shipped x86_64 path (AVX-512 + scalar + musl) — #93 by @geisten in #95
- fix(cpu_x86): SIGILL auf x86-64-v3-CPUs ohne AVX-512 — alle AVX-512-Kernel laufzeit-gaten (#96) by @geisten in #99
- docs(dynamic-tools-v1): compatibility contract + reserved streaming extension — #92 by @geisten in #97
- install.sh: x86_64 support + SHA-256 verification — #90 by @geisten in #98
- release: v0.4.0 — dynamic-tools-v1 runtime artifact + health-handshake smoke (#87) by @geisten in #100
- perf(bitnet/cpu_x86): #102 Phasen 0–4 — Decode 91.7→94.9, Prefill 1037→1093, Bit-Exaktheits-Fixes, 3 vermessene Dead-Ends by @geisten in #103
- release: ship libgeist SDK artifact (lib + headers) per platform — #91 by @geisten in #101
- perf(bitnet/cpu_x86): t5 Base-3-Decode-Packing 1.6 bpw — Decode +10.5 % (#104) by @geisten in #106
- docs(readme): BitNet-9950X-Scoreboard aktualisieren — 1098 pp / 103.1 tg nach #102+#104 by @geisten in #107
- build(x86): Default-BACKENDS auf "cpu_x86 cpu_scalar" — Opt-in-Phase beendet (#108) by @geisten in #109
- release(sdk): ship the tool-use interface headers in libgeist — geist#110 (task 1) by @geisten in #111
- refactor(core): slim geisten to inference + --serve; move tools to geistwissen — geist#110 (tasks 2-3) by @geisten in #113
- feat(vulkan): Vulkan-Compute-Backend — erster Nicht-Apple-GPU-Pfad (RTX 2080 Ti: tg128 132.6, 86 % von llama.cpp Vulkan) by @geisten in #112
- chore: rename GitHub repo references geisten/geisten → geisten/geistlib by @geisten in #114
- fix(release): embedded builds target tools/$(EMBED_NAME), not tools/geist by @geisten in #119
- geistlib rename: README reframe as inference engine, tools cleanup, metal split, architecture docs by @geisten in #118
- fix(release): health-smoke timeout 30s → 300s for scalar-fallback runners by @geisten in #120
Full Changelog: v0.3.3...v0.4.0
geist v0.3.3
What's Changed
- docs: sync README with the BitNet x86 win + x86 prebuilt by @geisten in https://github.com/geisten/geisten/pull/50
- ci(release): ship embedded geist-bitnet-linux-x86_64 single-file by @geisten in https://github.com/geisten/geisten/pull/51
Full Changelog: geisten/geisten@v0.3.2...v0.3.3
geist v0.3.2
What's Changed
- Feat/cpu x86 by @geisten in https://github.com/geisten/geisten/pull/47
- cli: soft token default + decode HTML entities; docs: combined geist-bitnet demo gif by @geisten in https://github.com/geisten/geisten/pull/46
- docs: x86-64 (AVX-512) has landed — correct the 'waits on AVX' notes by @geisten in https://github.com/geisten/geisten/pull/48
- ci(release): add prebuilt linux-x86_64 binary (AVX-512) by @geisten in https://github.com/geisten/geisten/pull/49
Full Changelog: geisten/geisten@v0.3.1...v0.3.2
geist v0.3.1
What's Changed
- ci: coarse Q4_K perf-regression gate by @geisten in https://github.com/geisten/geisten/pull/8
- ci: tool-calling quality gate (tracked quality) by @geisten in https://github.com/geisten/geisten/pull/9
- docs(contributing): reflect the enforced CI gates by @geisten in https://github.com/geisten/geisten/pull/10
- feat(agent): grammar-constrained tool-name selection (item 3, first slice) by @geisten in https://github.com/geisten/geisten/pull/11
- feat(agent): enforce tool args_schema by re-keying (item 3, second slice) by @geisten in https://github.com/geisten/geisten/pull/12
- feat(tokenizer): GGUF-embedded SentencePiece unigram (Llama/BitNet) by @geisten in https://github.com/geisten/geisten/pull/13
- ci(release): optionally bake a model into a single-binary release artifact by @geisten in https://github.com/geisten/geisten/pull/14
- fix(bitnet): default BitNet b1.58 2B-4T FFN to gated squared-ReLU, not SwiGLU by @geisten in https://github.com/geisten/geisten/pull/15
- build(embed): auto-rebuild geist.o when EMBED_MODEL is toggled by @geisten in https://github.com/geisten/geisten/pull/16
- test(bitnet): guard the FFN-activation default + a forward-sanity canary by @geisten in https://github.com/geisten/geisten/pull/17
- feat(agent): model-specific chat template (split out of the Gemma hardcode) by @geisten in https://github.com/geisten/geisten/pull/18
- feat(agent): real geist_model_arch + BitNet b1.58 native chat template by @geisten in https://github.com/geisten/geisten/pull/19
- feat(agent): generic anti-degeneration cap on a decoded turn by @geisten in https://github.com/geisten/geisten/pull/20
- feat(tools): list_dir example tool + Llama-3 chat template for the 2B-4T by @geisten in https://github.com/geisten/geisten/pull/21
- feat(agent): forced tool call — grammar-force a valid call on any model by @geisten in https://github.com/geisten/geisten/pull/22
- docs(agent): explain why Gemma uses the generic template (not its own) by @geisten in https://github.com/geisten/geisten/pull/23
- test(agent): end-to-end list_dir integration test by @geisten in https://github.com/geisten/geisten/pull/24
- feat(tools): summarize_file — read a text file and summarize it (refine/rolling) by @geisten in https://github.com/geisten/geisten/pull/25
- feat(agent): surface the tool observation when the final answer degenerates by @geisten in https://github.com/geisten/geisten/pull/26
- feat(agent): route the forced tool by scoring; make force_call single-shot by @geisten in https://github.com/geisten/geisten/pull/27
- fix(agent): lift path/url args from the request instead of free-decoding by @geisten in https://github.com/geisten/geisten/pull/28
- feat(agent): route by name-scoring with PMI calibration by @geisten in https://github.com/geisten/geisten/pull/29
- feat(agent): German tool descriptions for the router by @geisten in https://github.com/geisten/geisten/pull/30
- feat(agent): file-name tie-breaker for the German separable verb by @geisten in https://github.com/geisten/geisten/pull/31
- test(agent): end-to-end routing test over a real-document fixture by @geisten in https://github.com/geisten/geisten/pull/32
- fix(agent): a degenerate refine step must not poison the running summary by @geisten in https://github.com/geisten/geisten/pull/33
- fix(agent): strip a leading refine-scaffold header from the summary by @geisten in https://github.com/geisten/geisten/pull/34
- feat(agent): add a web_search tool; wire web search+fetch into geist_shell by @geisten in https://github.com/geisten/geisten/pull/35
- fix(agent): forced free-text args lift the whole request; clearer web_search block by @geisten in https://github.com/geisten/geisten/pull/36
- feat(agent): SearXNG JSON web_search; docs + README cover the agent by @geisten in https://github.com/geisten/geisten/pull/37
- docs(readme): agent capability overview + measured per-task latency by @geisten in https://github.com/geisten/geisten/pull/38
- perf(agent): cache the router's PMI baseline (one prefill per route, not two) by @geisten in https://github.com/geisten/geisten/pull/39
- feat(agent): progress-event output type for the current agent step by @geisten in https://github.com/geisten/geisten/pull/40
- docs(readme): overhaul + live agent trace and per-task latency by @geisten in https://github.com/geisten/geisten/pull/41
- refactor(agent): unify the agent CLIs into one
geistbinary (+ chat & memory palace) by @geisten in https://github.com/geisten/geisten/pull/43 - refactor(agent): simplify hot paths + bound chat context (follow-up to #43) by @geisten in https://github.com/geisten/geisten/pull/44
- fix(chat): agent_compact OOB + docs: front-load CLI, real-time Pi5 BitNet gif by @geisten in https://github.com/geisten/geisten/pull/45
Full Changelog: geisten/geisten@v0.3.0...v0.3.1
geist v0.3.0
First release with the agent/CLI layer on top of the inference core. Everything since v0.2.1 is additive — no change to the STABLE include/geist.h ABI.
Highlights
Agent & CLI layer (header-only under tools/, links libgeist.a)
agent.h— a bounded, whitelist-gated tool-use loop over a resident session. The host, not the model, decides what runs: a request can only act through a fixed tool whitelist, capped bymax_steps.agent_main.h+geist_agent— a reusable CLI engine; a downstream app is ~15 lines (define tools + a system prompt, forward argv). One-shot or REPL.geist_chat— interactive multi-turn chat + a markdown "memory palace" (mind.h): notes as files + an in-contextINDEX.md, no DB/embeddings.- Tools:
doc_search(paragraph-granular, overlap-scored local RAG over a folder) andweb_fetch(curl, no-shell fork+execvp, scheme gate + host allowlist + --proto redirect lock).
Quality benchmark
- Cross-engine MMLU vs llama.cpp on identical weights: geist 52.8% vs 54.0% (Gemma 4 E2B Q4_K, 5-shot) — iso-quality. matplotlib reporting from result JSON.
CI hardening
- Integration + e2e tests now run against the real model (cached) — the product path is gated, not just unit tests.
- ASan + UBSan job; ccache across build jobs.
Binaries
Attached by CI: a fully static, dependency-free geist-linux-arm64 (musl) and geist-macos-arm64. See docs/agent.md and docs/DEPLOY.md.
geist v0.2.1
Full Changelog: v0.2.0...v0.2.1
geist v0.2.0
Full Changelog: v0.1.3...v0.2.0
geist v0.1.3
Full Changelog: v0.1.2...v0.1.3
geist v0.1.2
Full Changelog: v0.1.1...v0.1.2