メインコンテンツへスキップ
Buttress サーバーは --config で渡された 1 つの TOML ファイルを読み込みます。各セクションは任意で、省略するとデフォルトが使われます。

最小サンプル

[server]
port = 2080

[[generators]]
type = "ggml-llm"
[generators.model]
repo_id = "ggml-org/gpt-oss-20b-GGUF"
quantization = "mxfp4"
n_ctx = 12800

トップレベルセクション

セクション用途
[env]未設定のときのみプロセスに書き出される環境変数
[server]HTTP/WebSocket リスナー(ポート、ログレベル、ボディ上限)
[runtime]すべての generator が共有するデフォルト値
[runtime.session_cache]ggml-llm 用の KV cache 再利用ストア
[autodiscover]LAN UDP / HTTP の検出スイッチ
[openai_compat]OpenAI 互換 HTTP ルートを有効化
[anthropic_messages]Anthropic 互換 HTTP ルートを有効化
[[generators]]generator インスタンスの配列。1 エントリ=1 モデル

[server]

キーデフォルト説明
idstringbuttress-<machineId>バインドと検出に使う安定したサーバー ID
namestringButtress Server (<short id>)BRICKS Controller に表示される表示名
portnumber2080HTTP/WebSocket ポート(--port で上書き)
log_levelstring未設定debuginfowarnerror のいずれか
max_body_sizenumber または string"50MB"最大アップロードサイズ。"100MB""1GB" や生のバイト数も可
session_timeoutnumber または string60000WebSocket のアイドルタイムアウト(ミリ秒)。"1m""30s" も可
temp_file_dirstring$TMPDIR/.buttressSTT 音声アップロードなど一時ファイル用ディレクトリ

[runtime]

すべての generator が共有するデフォルト値。[generators.model] の generator 単位の値が優先され、それ以外はここで定義した値が適用されます。
[runtime]
cache_dir = "~/.buttress/models"
huggingface_token = "hf_..."
n_gpu_layers = "auto"
キー説明
cache_dirstringモデルとメタデータのキャッシュルート(デフォルト ~/.buttress/models
huggingface_tokenstringHugging Face 認証トークン。未設定なら $HUGGINGFACE_TOKEN にフォールバック。変数名にかかわらずすべてのバックエンドに適用されます
http_headerstableHugging Face / HTTP ダウンロードに付加する追加ヘッダー
context_release_delay_msnumbercontext をアンロードするまでのアイドル時間(デフォルト 100000 で即時)
prefer_variantsstring[]バックエンド variant の探索順を上書き(ggml バックエンド)
n_threadsnumberCPU スレッド数
n_ctxnumberコンテキストウィンドウ(per-model 値が優先、訓練時のコンテキストで自動的に上限が掛かります)
n_gpu_layersnumber または "auto"GPU にオフロードするレイヤー数(デフォルト "auto"
n_batchnumberPrompt バッチサイズ。注意: モデル層の n_batch デフォルトは 512 で、[generators.model] で明示的に n_batch を設定しない限り runtime 値を覆い隠します
n_ubatchnumberPrompt マイクロバッチサイズ
n_parallelnumber並列シーケンス数(デフォルト 4
n_cpu_moenumberCPU にオフロードする MoE エキスパート層数
flash_attn_typestring"on""off""auto"。デフォルトは GPU の有無で変わり、GPU バックエンド選択時は "auto"、CPU 時は "off"
cache_type_kcache_type_vstringKV cache の dtype(f16f32q8_0q4_0 など)
kv_unifiedboolean複数シーケンスで KV cache を統一
swa_fullbooleansliding-window レイヤーでもフルアテンションを展開
ctx_shiftbooleanllama.cpp のローリング context shift を許可
use_mmapuse_mlockbooleanメモリマップ / ロック
no_extra_buftsboolean追加の計算 buffer 型を無効化
cpu_maskcpu_strictstring / booleanCPU アフィニティ(上級)
devicesstring[]特定の GGML デバイスに限定
Speculative 関連variousspeculativespec_typespec_draft_n_maxspec_draft_n_minspec_draft_p_minspec_draft_p_split

[runtime.session_cache]

ggml-llm generator では、リクエスト間で KV cache の状態をディスクに保持し、同じ prompt 接頭辞を持つ後続の completion で prompt 処理をスキップできます。
[runtime.session_cache]
enabled = true
max_size_bytes = "10GB"
max_entries = 1000
キーデフォルト説明
enabledtrue永続 KV cache を有効化
max_size_bytes"10GB"ディスク総予算。"500MB""50GB" または数値
max_entries1000キャッシュ最大件数(LRU 削除)
キャッシュファイルは {cache_dir}/.session-state-cache/ に保存されます。 mlx-llm{cache_dir}/mlx-session-cache/ に別の session cache を持ち、generator ごとに個別設定されます。

[[generators]]

[[generators]] ブロックは、サーバーがホストする 1 つのモデルを宣言します。複数モデルを提供する場合はブロックを繰り返します。各ブロックには type、任意の [generators.backend] テーブル、[generators.model] テーブルが含まれます。
[[generators]]
type = "ggml-llm"

[generators.backend]
# バックエンド選択とリソース計画

[generators.model]
repo_id = "..."
# モデル識別と runtime オーバーライド

共通 [generators.model] キー

すべての generator タイプ(ggml-llmggml-sttmlx-llm)で共有:
キー説明
repo_id(必須)stringHugging Face リポジトリ(org/repo
revisionstringデフォルト "main"
downloadbooleanサーバー起動時に事前ダウンロード(デフォルト false
ggml-llmggml-stt のみで尊重されます(mlx-llm は量子化をリポジトリ自体から取得するため、以下のキーは無視されます):
キー説明
filenamestringリポジトリ内の特定ファイルを指定
urlstring直接ダウンロード URL(manifest ルックアップをスキップ)
quantizationstring優先量子化タグ。例: q4_0q8_0mxfp4
preferred_quantizationsstring[]quantization が一致しない場合の順序付きフォールバックリスト(エイリアス: quantizations
allow_local_filebooleanlocal_path または mmproj_local_path を使うには必須
local_pathstringローカルファイルをロードパスとして使用。リポジトリのメタデータは引き続き Hugging Face から解決されるため、repo_id は依然必須
api_basebase_urlstringHugging Face API / blob ホストの上書き(ミラーやプロキシ)

ggml-llm(llama.cpp / GGUF)

[[generators]]
type = "ggml-llm"

[generators.backend]
variant_preference = ["cuda", "vulkan", "default"]
gpu_memory_fraction = 0.95

[generators.model]
repo_id = "ggml-org/gpt-oss-20b-GGUF"
quantization = "mxfp4"
n_ctx = 12800
download = true
[generators.backend] はバックエンド選択とリソース計画のみを制御します。runtime オーバーライド(n_ctxn_gpu_layersflash_attn_type など)は [generators.model] の下に置きます。 [generators.backend]
キーデフォルト説明
variantstringautocudavulkansnapdragondefault を強制
variant_preferencestring[]["cuda", "vulkan", "snapdragon", "default"]variant 未指定時の探索順
gpu_memory_fractionnumber0.85ハードウェア guardrails が計画できる最大 GPU 比率
cpu_memory_fractionnumber0.5CPU 側 buffer が利用できる最大 RAM 比率
[generators.model] — 上記の共通 ggml キーに加え、すべての [runtime] キーを generator 単位で上書き可能: n_ctxn_gpu_layersn_batchn_ubatchn_threadsn_paralleln_cpu_moeflash_attn_typecache_type_kcache_type_vkv_unifiedswa_fullctx_shiftuse_mmapuse_mlockno_extra_buftscpu_maskcpu_strictdevices マルチモーダル(mtmd) — 同じリポジトリから対応する mmproj-*.gguf を自動ダウンロード:
キー説明
enable_mtmdbooleanデフォルト false
mmproj_filenamestring特定の projector ファイルを指定
mmproj_urlstringURL を直接上書き
mmproj_local_pathstringローカルの projector ファイル(allow_local_file = true が必要)
mmproj_use_gpuboolean未指定 = 自動(n_gpu_layers > 0 のとき true)
mmproj_image_min_tokensnumber視覚トークン最小値(動的解像度モデル、-1 は未設定)
mmproj_image_max_tokensnumber視覚トークン最大値(-1 は未設定)
Speculative decoding
キー説明
speculativestringDraft モデル識別子
spec_typestring戦略(バックエンド定義)
spec_draft_n_maxint1 ステップあたりの最大ドラフトトークン数
spec_draft_n_minint最小ドラフトトークン数
spec_draft_p_minnumber最小受理確率
spec_draft_p_splitnumber分割しきい値

ggml-stt(whisper.cpp)

[[generators]]
type = "ggml-stt"

[generators.backend]
variant_preference = ["cuda", "vulkan", "default"]

[generators.model]
repo_id = "BricksDisplay/whisper-ggml"
filename = "ggml-large-v3-turbo-q8_0.bin"
use_gpu = true
use_flash_attn = "on"
download = true
[generators.backend]
キーデフォルト説明
variantstringautocudavulkandefault を強制
variant_preferencestring[]["cuda", "vulkan", "default"]探索順
gpu_memory_fractionnumber0.85
cpu_memory_fractionnumber0.5
[generators.model] — 上記の共通 ggml キーに加え:
キーデフォルト説明
repo_idstring"BricksDisplay/whisper-ggml"デフォルト値あり(ggml-llm とは異なる)
preferred_quantizationsstring[]["q8_0", <no-quant>, "q5_1"]デフォルトフォールバックチェーン
use_gpubooleantruefalse に設定すると、GPU が利用可能でも CPU を強制
use_flash_attnstring または boolean"auto""on""off""auto"true / false も省略形として受け付け。"auto" は GPU 使用時に flash-attn を有効化
Runtime 追加設定ggml-stt のみ、[runtime] の下:
キー説明
max_threadsnumberwhisper.cpp のスレッド数上限

mlx-llm(Apple Silicon)

[[generators]]
type = "mlx-llm"

[generators.model]
repo_id = "mlx-community/Qwen2.5-VL-3B-Instruct-4bit"
vlm = true
download = true
mlx-llm には [generators.backend] セクションはありません。 初回利用時、バックエンドは {cache_dir}/mlx-env に Python virtualenv を作成し、mlx_lm_packagemlx_vlm_package と、一部の VLM プロセッサが必要とする torch および torchvision をインストールします。既存の venv に mlx_vlmtorch がインポート可能な状態であれば、インストールはスキップされます。 [generators.model] — 共通の repo_id / revision / download に加え:
キーデフォルト説明
adapter_pathstringローカル LoRA アダプタディレクトリ
vlm"auto" または boolean"auto"VLM(true)かテキスト専用(false)を強制。"auto" はリポジトリから推測
tokenizer_configtablemlx_lm.load(..., tokenizer_config=...) に転送
model_configtablemlx_lm.load(..., model_config=...) に転送
quantizationfilenamepreferred_quantizations使われません。量子化は MLX リポジトリ自体が決定します。 Runtime 追加設定mlx-llm 用、[runtime] の下:
キーデフォルト説明
mlx_env_dirstring{cache_dir}/mlx-env自動管理される Python venv の場所
mlx_lm_packagestring"mlx-lm==0.31.1"venv プロビジョニング時に使う pip 指定
mlx_vlm_packagestring"mlx-vlm==0.4.0"venv プロビジョニング時に使う pip 指定

[autodiscover]

サーバーは UDP 8089 で自身を通知し、同じ LAN の Foundation デバイスから検出可能にします。自動検出はデフォルトで有効です。
[autodiscover]
[autodiscover.udp]
port = 8089

[autodiscover.udp.announcements]
enabled = true
interval = 5000

[autodiscover.udp.requests]
enabled = true
responseDelay = 100

[autodiscover.http]
enabled = true
path = "/buttress/info"
cors = true
autodiscover = false に設定すると検出が完全に無効になります。プロトコルの詳細は自動検出リファレンスを参照してください。

[env]

起動時に適用する環境変数。ただしシステム環境にまだ設定されていない場合のみ反映されます。システム変数とコマンドラインの export が優先されます。
[env]
HUGGINGFACE_TOKEN = "hf_..."
CUDA_VISIBLE_DEVICES = "0"
ggml バックエンドが読むのは HUGGINGFACE_TOKEN です(HF_TOKEN ではありません)。変数名に依存せず単一の token をすべてのバックエンドに適用したい場合は、代わりに [runtime] huggingface_token を設定してください。

互換エンドポイント

これらのエンドポイントは実験的機能です。スキーマ、エラー形式、CORS デフォルトは変更される可能性があります。
サーバーはネイティブの WebSocket RPC に加えて、OpenAI および Anthropic 互換の HTTP ルートを公開できます。各機能はオプトインです。
[openai_compat]
enabled = true
# cors_allowed_origins = "*"

[anthropic_messages]
enabled = true
# cors_allowed_origins = ["http://localhost:3000"]
エンドポイント設定フラグ
POST /oai-compat/v1/chat/completions[openai_compat] enabled = true
GET /oai-compat/v1/models[openai_compat] enabled = true
POST /anthropic-messages/v1/messages[anthropic_messages] enabled = true
POST /anthropic-messages/v1/messages/count_tokens[anthropic_messages] enabled = true
各エンドポイントは環境変数経由でも有効化できます:ENABLE_OPENAI_COMPAT_ENDPOINT=1 または ENABLE_ANTHROPIC_MESSAGES_ENDPOINT=1

次のステップ

ワークスペースバインディング

サーバーを BRICKS ワークスペースとペアリングして認証を有効化します。

LAN 自動検出

Foundation デバイスが LAN 上でサーバーを見つける仕組み。