Skip to main content
The Buttress server ships as a standalone executable, bricks-buttress, for macOS, Linux, and Windows. No Node.js runtime is required. If you prefer, you can also install it from npm or Bun. For GPU acceleration on Linux, install CUDA or Vulkan drivers before running the installer — it picks the matching build based on what it finds.

Hardware

The server runs without a GPU but the throughput drops sharply, and capability scoring will mark the host as a less-preferred backend.

Install

The script detects your architecture (Apple Silicon or Intel) and installs bricks-buttress to ~/.bricks-cli/bin. Metal acceleration is part of the default build, so there is nothing extra to select.If ~/.bricks-cli/bin is not on your PATH, the script appends it to your shell profile (~/.zshrc, ~/.bash_profile, or ~/.config/fish/config.fish) and tells you to restart your shell.
The standalone installers share their install directory with BRICKS CLI, so a single PATH entry covers both tools. Confirm the install:

Native modules

The standalone binary cannot embed the GGML, ONNX Runtime, sharp, and oxc-transform native addons. The installer downloads them from the npm registry into a node_modules directory next to the executable, pinned to the versions the binary was built against. It also places the status dashboard (public/status.html) there, plus the MLX bridge script on macOS. Each install rebuilds that directory from scratch, so upgrading never leaves a stale native module behind. Set BUTTRESS_NPM_REGISTRY to download the native packages from a mirror instead of https://registry.npmjs.org.

GPU acceleration variants

The GGML backends ship one build per accelerator. The installer probes the host, picks the best supported one, and downloads only that variant alongside the default CPU build. Override the choice when detection guesses wrong — for example on a machine whose drivers are installed after the fact:
Accepted values are auto (the default), default, cuda, vulkan, snapdragon (Linux only), and all. Use all to download every variant — larger, but portable across hosts if you image the install directory.
Running install.sh from an MSYS or Git Bash shell on Windows skips GPU probing, because the results are unreliable there. Pass --ggml-variant explicitly, or use the PowerShell installer.

Installer options

Run the server

Without a config, the server starts on port 2080 with sensible defaults:
With a TOML config:
Pass an inline TOML string instead of a path with the same flag:
See the configuration reference for the full schema.

CLI flags

The port resolves in this order: --port flag → [server] port in TOML → default 2080. bricks-buttress also takes one subcommand, update — see Update below.

Environment variables

System environment variables override values set under [env] in your TOML config.

macOS GPU memory

On Apple Silicon Macs, the GPU is allowed about 70% of system memory by default. To raise the cap before loading large models:

Verify

When the server starts, it prints a LAN-reachable URL like Visit http://<ip>:2080/status to see status via LAN. Open that URL — or http://localhost:2080/status from the same machine — to load the status dashboard. The dashboard shows, per backend (GGML-LLM, GGML-STT, MLX-LLM):
  • The list of loaded generators and which ones currently hold an active model context
  • Parallel slot usage and queued requests for STT
  • Recent model-load history and completion / transcription history (collapsible)
A Refresh button on the page polls the same data on demand. There is no auth on /status — host the server on a trusted LAN. For machine-readable output, query the JSON endpoints directly:
/buttress/info is what Foundation devices read during HTTP fallback discovery — see LAN auto-discovery.

Beta channel

The executable is named bricks-buttress on both channels, so installing the beta replaces an existing stable install. The two channels cannot coexist in the same directory — pass --dir / -InstallDir if you need both.

Update

Run bricks-buttress update to update an existing install in place. It detects how the server was installed — standalone binary, npm global, or Bun global — and runs the matching update:
  • Standalone binary — re-runs the CDN installer, which replaces the executable and rebuilds the native modules directory, picking up any native package version changes in the new release. The existing install directory is reused, so an override passed to --dir is preserved.
  • npm / Bun — reinstalls the global @fugood/buttress-server package.
The release channel is inferred from the running version’s pre-release suffix. Version availability comes from the npm dist-tags for npm and Bun installs, and from the CDN release metadata for binary installs. When a newer version is available, the running server also prints an upgrade notice with this command. If the detected method fails, the command offers the binary installer as a fallback. That path also works when the native modules are missing or broken — update runs before the server’s backends are loaded, so a damaged install can repair itself. On Windows the installer moves a locked native modules directory aside instead of failing, so the server can update itself while running.

Uninstall

The uninstaller removes only Buttress-owned files — the executable, the native modules directory, the status page, and the MLX bridge script. Because the directory is shared with BRICKS CLI, it is never deleted. Pass --dir / -InstallDir if you installed somewhere else.

Next steps

Configuration

Configure generators, caching, and compatibility endpoints.

Workspace binding

Pair the server with a workspace and enable JWT auth.