Generators
- The
onnx-ttsbackend serves the Chatterbox voice models, including Chatterbox Multilingual, so a Generator TTS (ONNX) can offload synthesis without downloading the model. See configuration.
Generators
- New
ggml-ttsbackend — a Generator TTS (GGML) can offload synthesis to a Buttress server. The device streams the audio back without downloading the backbone or codec GGUF, with capability detection and memory guardrails, and the status page reports the new backend. See configuration.
Models
- A generator pinned to an exact model id resolves to it even when a looser sibling entry also matches.
Local functions
- File downloads work from the packaged distribution again —
/functions/files/*and/buttress/downloadanswered HTTP 200 with[object Object]in v2.25.1. See local functions. - A raw-prompt completion returns its generated text instead of an empty string.
Models
GET /v1/modelslists the canonical model id for a generator pinned to a specific file, so two generators sharing a repository are distinguishable and the id echoed back by a completion is one the listing actually shows. The compatibility endpoints accept only configured models. See configuration.
Fixes
- Download credentials are kept out of logs and error output.
- A failed install rollback keeps its backups instead of deleting them. See installation.
Local functions
- Local functions (experimental) —
.ts/.jsfiles you drop in a configured directory become both MCP tools and HTTP endpoints, so an agent can run server-side work — ffmpeg, or the server’s own LLM / STT / TTS generators — without standing up a separate service. One file is one function, with a JSON Schema declaration MCP receives verbatim, SSE progress streaming, a per-call scratch directory with file upload and download, optional custom authentication, optional hot reload, ready-to-copy samples, and a local functions activity card on the status page. - A function can also be called with
GET /functions/<name>using the query string as input, so a browser, anEventSource, a webhook, or plain curl can invoke one. - A new
simple-ragfunction sample ships with the vector search support it needs bundled into the distribution. bricks buttress mcp-configwrites the.mcp.jsonentry an agent needs. See BRICKS CLI.
Installation
- Standalone distribution —
bricks-buttressnow ships as a self-contained executable. The installer detects the host’s ggml accelerator (CUDA, Vulkan, Snapdragon, or default) and downloads only the native packages that build needs, installs into the same~/.bricks-cli/binthe BRICKS CLI uses, andbricks-buttress updateupdates in place. See installation.
Generators
- Generator Vector Store — the GGML embedding model and tokenizer can now be offloaded to BRICKS Buttress, so a device can index and search documents without downloading either GGUF. See BRICKS Foundation.
Fixes
- Session uploads get a unique stored filename, so two files uploaded in the same session cannot overwrite each other.
- Model downloads for the LLM, STT, and ONNX backends stay inside the server’s cache directory.
- Generator finalization is authorized per session and correctly refcounted, so a session that starts the same model twice releases both.
Backends
- ONNX backends — Generator STT and TTS workloads can offload to BRICKS Buttress through transformers.js and ONNX Runtime, with automatic hardware detection across CUDA, CoreML, DirectML, and CPU, and memory-aware model selection. See configuration.
- Parakeet engine — the GGML STT backend now runs both Whisper and NVIDIA Parakeet, and advertises the engines it supports so older clients fall back safely.
Autodiscovery
- Web LAN auto-discovery — web and virtual devices can find a BRICKS Buttress on the local network through a signed HTTP probe and offload inference to it, controlled by the new per-device Local Network Access setting. See autodiscovery.
Generators
- Generator STT (GGML) — Buttress applies GPU / flash-attention / thread settings correctly at load time.
- Generator LLM (MLX) — Buttress forwards tokenizer and model config overrides when provided.
WebSocket RPC
- Binary payload serialization —
ArrayBufferpayloads (e.g. from RealtimeTranscriber) and binary auth tokens are now serialized and deserialized as properUint8Array/Buffervalues, fixing previousInvalid paramserrors ontranscribeDataand other binary-payload calls. - Proper error instances — JSON-RPC error responses arrive at callers as
Errorinstances with the server’scode/message, fixing previousTranscription error: [object Object]notifications.
CLI
buttress-server --versionreports the packaged version of the standalone CLI.
Generators
- Generator LLM (GGML) — bumped
llama.cppruntime to b9254 and exposed MTP (multi-token prediction) speculative decoding parameters.
Sessions
- WebSocket session resume — sessions survive reconnects through proxies / tunnels. A server-issued session id is exchanged on the WS handshake and restored on subsequent connects, replacing the previous IP-based scheme.
File uploads
- Per-session scope — uploads and downloads are now scoped to the active session id (
X-Buttress-Sess-Idheader required). Uploaded files land under a per-session subdirectory and are wiped when the session times out.
Authentication
- Workspace-scoped JWT auth — each Buttress server is bound to a workspace via
bricks buttress bindand verifies issued tokens with EdDSA./buttress/rpc,/oai-compat,/anthropic-messages, and upload / download endpoints now require authentication. See workspace binding.
Discovery
- LAN auto-discovery — Launcher selects from a multi-server pool (90s TTL, ranked by hardware caps) and only trusts servers in the workspace’s bound list. See autodiscovery.
- Signed UDP ANNOUNCE — per-server Ed25519 signatures protect LAN discovery from spoofing.
PROTOCOL_VERSIONbumps to 2.0 — re-runbricks buttress bindand restart the server after upgrading.
Compat endpoints
- New TOML config flags
[openai_compat] enabledand[anthropic_messages] enabledto enable the experimental compat endpoints. See configuration.