> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bricks.tools/llms.txt
> Use this file to discover all available pages before exploring further.

# BRICKS Buttress

> 將 LLM 與語音辨識推論從 BRICKS Foundation 裝置卸載至區域網路上的伺服器

export const FeatureCard = ({ icon, title, description, href }) => {
  const Tag = href ? 'a' : 'div';
  return (
    <Tag href={href} className={`block rounded-2xl border border-gray-200 dark:border-white/10 bg-white dark:bg-white/5 p-6 no-underline ${href ? 'group hover:border-[#e2924b]/40 hover:shadow-lg hover:shadow-[#e2924b]/5 transition-all duration-200' : ''}`}>
      <div className="flex items-center gap-3 mb-3">
        <span className="text-2xl">{icon}</span>
        <h3 className="text-base font-semibold text-gray-900 dark:text-white m-0">{title}</h3>
      </div>
      <p className="text-sm text-gray-500 dark:text-gray-400 m-0 leading-relaxed">{description}</p>
    </Tag>
  );
};

export const StepItem = ({ number, title, description, href, linkText }) => (
  <div className="flex gap-4">
    <div className="flex-shrink-0 w-8 h-8 rounded-full bg-[#e2924b] flex items-center justify-center">
      <span className="text-sm font-bold text-white">{number}</span>
    </div>
    <div className="pb-8">
      <h4 className="text-sm font-semibold text-gray-900 dark:text-white m-0">{title}</h4>
      <p className="text-sm text-gray-500 dark:text-gray-400 mt-1 mb-1">{description}</p>
      {href && <a href={href} className="text-sm font-medium text-[#e2924b] hover:text-[#d4863f] no-underline">{linkText} →</a>}
    </div>
  </div>
);

<div className="max-w-5xl mx-auto px-6 py-16">
  <div className="mb-16">
    <div className="flex items-center gap-4 mb-6">
      <div>
        <h1 className="text-4xl sm:text-5xl font-bold text-gray-900 dark:text-white tracking-tight m-0">
          BRICKS Buttress
        </h1>

        <span className="inline-flex items-center mt-3 px-2.5 py-1 rounded-md bg-[#e2924b]/10 text-[#e2924b] text-xs font-semibold">預覽</span>
      </div>
    </div>

    <p className="text-xl text-gray-600 dark:text-gray-300 font-medium mb-2">
      在合適的硬體上<span className="text-[#e2924b]">執行重量級模型。</span>
    </p>

    <p className="text-lg text-gray-500 dark:text-gray-400 max-w-2xl mb-8 leading-relaxed">
      BRICKS Buttress 是一項後端服務，將 LLM 推論、語音辨識等高運算量的 generator 工作從 <a href="/zh-Hant/foundation" className="text-[#e2924b] hover:text-[#d4863f] no-underline font-medium">BRICKS Foundation</a> 裝置卸載至同一區域網路上更強大的機器。當平板或自助機台無法本機執行大型模型時，可透明地委派給 Buttress 伺服器處理，generator API 維持不變。
    </p>

    <div className="flex flex-wrap gap-3">
      <a href="/zh-Hant/buttress/installation" className="inline-flex items-center px-5 py-2.5 rounded-lg bg-[#e2924b] hover:bg-[#d4863f] text-white text-sm font-medium no-underline transition-colors">
        安裝伺服器
      </a>

      <a href="/zh-Hant/buttress/workspace-binding" className="inline-flex items-center px-5 py-2.5 rounded-lg border border-gray-300 dark:border-white/15 text-gray-700 dark:text-gray-300 text-sm font-medium no-underline hover:bg-gray-50 dark:hover:bg-white/5 transition-colors">
        與工作區配對
      </a>
    </div>
  </div>

  <div className="mb-16">
    <h2 className="text-xs font-semibold uppercase tracking-widest text-gray-400 dark:text-gray-500 mb-6">功能</h2>

    <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
      <FeatureCard icon="🧠" title="LLM 卸載" description="於擁有充足 GPU 與記憶體的伺服器上執行 llama.cpp（GGML）與 MLX 模型，補足行動裝置的不足。" href="/zh-Hant/buttress/configuration" />

      <FeatureCard icon="🎙️" title="語音辨識卸載" description="於伺服器以 Whisper 進行轉錄。裝置透過 HTTP 上傳音訊並串流接收結果。" href="/zh-Hant/buttress/configuration" />

      <FeatureCard icon="📡" title="區域網路自動探索" description="已繫結的 launcher 透過 UDP 自動找到工作區的伺服器，無須手動輸入網址。" href="/zh-Hant/buttress/autodiscovery" />

      <FeatureCard icon="🔐" title="工作區範圍認證" description="將伺服器與單一 BRICKS 工作區配對，僅持有工作區 JWT 的客戶端可連線。" href="/zh-Hant/buttress/workspace-binding" />

      <FeatureCard icon="⚖️" title="硬體能力比較" description="伺服器會比較客戶端與自身硬體並建議要在哪一側執行請求。" />

      <FeatureCard icon="♻️" title="共享模型 context" description="參考計數的 generator 讓多個客戶端共用同一個已載入模型，並於不需要時自動釋放。" />
    </div>
  </div>

  <div className="mb-16">
    <h2 className="text-xs font-semibold uppercase tracking-widest text-gray-400 dark:text-gray-500 mb-6">快速開始</h2>

    <div className="rounded-2xl border border-gray-200 dark:border-white/10 bg-white dark:bg-white/5 p-8">
      <StepItem number="1" title="安裝伺服器" description="於具備強力 GPU 或充足記憶體的機器安裝 bricks-buttress。" href="/zh-Hant/buttress/installation" linkText="安裝指南" />

      <StepItem number="2" title="設定 generator" description="撰寫 TOML 設定檔，列出您要提供服務的 LLM 與 STT 模型。" href="/zh-Hant/buttress/configuration" linkText="設定參考" />

      <StepItem number="3" title="與工作區配對" description="使用 BRICKS CLI 執行 bricks buttress bind，將伺服器繫結至 BRICKS 工作區並啟用 JWT 認證。" href="/zh-Hant/buttress/workspace-binding" linkText="工作區繫結" />

      <StepItem number="4" title="於 brick 上啟用" description="於 BRICKS Controller 的 Config Editor 中為每個 LLM/STT brick 開啟 Buttress，Foundation 裝置會自動探索伺服器。" href="/zh-Hant/foundation/buttress" linkText="從 Foundation 使用" />
    </div>
  </div>

  <div className="mb-16">
    <h2 className="text-xs font-semibold uppercase tracking-widest text-gray-400 dark:text-gray-500 mb-6">何時使用 Buttress</h2>

    <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
      <div className="rounded-2xl border border-gray-200 dark:border-white/10 bg-white dark:bg-white/5 p-6">
        <h3 className="text-sm font-semibold text-gray-900 dark:text-white mb-3">適合使用</h3>

        <ul className="text-sm text-gray-500 dark:text-gray-400 space-y-2 m-0 p-0 list-none">
          <li className="flex items-start gap-2"><span className="text-[#e2924b] mt-0.5">•</span> 模型過大，無法塞入裝置</li>
          <li className="flex items-start gap-2"><span className="text-[#e2924b] mt-0.5">•</span> 區域網路上的多台裝置共用同一模型</li>
          <li className="flex items-start gap-2"><span className="text-[#e2924b] mt-0.5">•</span> 需要快速首字延遲的裝置</li>
          <li className="flex items-start gap-2"><span className="text-[#e2924b] mt-0.5">•</span> 對電池敏感的行動裝置部署</li>
        </ul>
      </div>

      <div className="rounded-2xl border border-gray-200 dark:border-white/10 bg-white dark:bg-white/5 p-6">
        <h3 className="text-sm font-semibold text-gray-900 dark:text-white mb-3">不需要使用</h3>

        <ul className="text-sm text-gray-500 dark:text-gray-400 space-y-2 m-0 p-0 list-none">
          <li className="flex items-start gap-2"><span className="text-[#e2924b] mt-0.5">•</span> 已可在裝置上順暢執行的小型模型</li>
          <li className="flex items-start gap-2"><span className="text-[#e2924b] mt-0.5">•</span> 無區域網路的離線裝置</li>
          <li className="flex items-start gap-2"><span className="text-[#e2924b] mt-0.5">•</span> 單機原型或展示</li>
        </ul>
      </div>
    </div>
  </div>
</div>
