APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

新卒エンジニアへ贈る — Raspberry Pi 5で4MBのAIエージェントを常時運用する話

こんにちは。ACS事業部の越川です。

4月1日、新卒の皆さんの配属日ですね。エンジニアとしてのキャリアをこれから積み上げていく方々に、一つおすすめしたいデバイスがあります。Raspberry Piです。

Raspberry Piは、ソフトウェア・ハードウェア・インフラの全てを一台で同時に扱えるデバイスです。Linux、ネットワーク、Docker、GPIO、センサー連携 — エンジニアに必要な基礎を手を動かしながら学べます。そして今はそこにAIエージェントを載せて常時運用する時代になりました。

この記事では、370MBのAIエージェントフレームワークを4MBに置き換えて、Raspberry Pi 5で常時運用している話を紹介します。しかもVision(画像解析)対応のパッチを自前で当てて。

NullClawとは

NullClawは、AIエージェントフレームワークOpenClawの軽量版です。Zig言語で書かれており、公称スペックは以下の通りです。

項目 OpenClaw NullClaw(公称)
言語 Node.js Zig
バイナリサイズ 約370MB 678KB
必要メモリ 数百MB 1MB
起動時間 数秒 2ms

エッジデバイス上でAIエージェントを動かすことを目的としており、Raspberry Pi公式のサポートもOpenClawのドキュメントに記載されています。

ただし、NullClawにはOpenClawにある一部機能が無効化されています。その一つがVision(画像解析)機能でした。

今回のVision対応パッチを適用したフォークは以下で公開しています。

github.com

なぜ移行したか

もともとOpenClaw(Node.js版)をRaspberry Pi 5のDocker上で動かしていました。しかし、以下の問題がありました。

  • 発熱: Node.jsのランタイムが常にリソースを消費し、ファン付きヒートシンクでも温度が気になった
  • メモリ消費: 370MBのフレームワーク+Node.jsランタイムで、8GBのRaspberry Pi 5でも余裕が少なかった
  • 起動の遅さ: コンテナの再起動に数秒かかる

NullClawに移行することで、これらの問題を根本的に解決できると考えました。

検証環境

項目 スペック
デバイス Raspberry Pi 5
メモリ 8GB
OS Debian 13 (trixie) / aarch64
カーネル 6.12.47+rpt-rpi-2712
ストレージ 128GB microSD
冷却 パッシブヒートシンクのみ
NullClawバージョン 2026.3.8
LLMモデル OpenAI Codex / GPT-5.4

Vision対応パッチの実装

NullClawのソースコードをフォークし、3つのパッチを適用しました。

パッチ1: Vision機能の有効化

NullClawでは supportsVisionImpl が無効化されていました。これを true に変更し、画像入力を受け付けるようにしました。

パッチ2: content_parts シリアライズの修正

OpenAI Responses APIのフォーマット(input_text / input_image)に合わせてシリアライズ処理を修正しました。NullClaw標準のシリアライズではテキストのみを前提としており、画像データを正しくAPIに渡せなかったためです。

パッチ3: curl関連の修正

  • -L フラグを追加し、HTTPリダイレクトに対応
  • GETバッファを20MBに拡大(画像データのダウンロードに対応)

クロスコンパイル

パッチ適用後、手元のPCでZigのクロスコンパイルを行い、aarch64-linux向けのバイナリを生成しました。

# Mac上でクロスコンパイル
zig build -Dtarget=aarch64-linux

# ビルド成果物をPi5へ転送
scp zig-out/bin/nullclaw pi5:~/docker/nullclaw/nullclaw-patched

Docker化と常時運用

Docker Compose構成

services:
  nullclaw-gateway:
    build:
      context: .
      dockerfile: Dockerfile.patched
    container_name: nullclaw-gateway
    restart: always
    ports:
      - "18789:18789"
    environment:
      - OPENCLAW_GATEWAY_PORT=18789
      - OPENCLAW_SERVICE_MARKER=openclaw
      - OPENCLAW_SERVICE_KIND=gateway
    command: ["nullclaw", "gateway", "--port", "18789", "--bind", "lan"]

Dockerfile

FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/*

COPY nullclaw-patched /usr/local/bin/nullclaw
RUN chmod +x /usr/local/bin/nullclaw

EXPOSE 18789

CMD ["nullclaw", "gateway", "--port", "18789", "--bind", "lan"]

OAuthトークンの自動リフレッシュ

NullClawはOpenAI CodexのOAuth認証を使用しています。トークンの有効期限は約10日間(864,000秒)ですが、安全のためcronで8時間ごとに自動リフレッシュしています。

# crontab
0 */8 * * * /home/pi/docker/nullclaw/refresh-token.sh

リフレッシュスクリプトは以下を行います。

  1. 現在のrefresh_tokenでOpenAI認証エンドポイントに新しいトークンを要求
  2. 3つの認証ファイル(auth.json、エージェント用auth.jsonauth-profiles.json)を同時に更新
  3. NullClawコンテナを再起動して新しいトークンを反映
  4. 結果をログに記録
2026-04-01 04:00:01 OK: token refreshed, expires_in=863999s
2026-04-01 04:00:12 OK: nullclaw restarted

実測値

Raspberry Pi 5上で実稼働中のコンテナから取得した実測値です。

項目 OpenClaw(移行前) NullClaw(パッチ適用後)
バイナリサイズ 約370MB 2.8MB
実メモリ使用量(VmRSS) 数百MB 4.3MB
CPU使用率(アイドル時) 数% 0.01%
スレッド数 多数 8
CPU温度 ファン必要 34.0℃(パッシブヒートシンクのみ)
ロードアベレージ 0.04, 0.02, 0.00

バイナリサイズが公称678KBに対して2.8MBなのは、Visionパッチとcurlバッファ拡張の影響です。それでもOpenClawの370MBと比べれば約1/130です。

特筆すべきはCPU温度の34.0℃です。パッシブヒートシンクのみでこの温度は、Node.js時代では考えられませんでした。

用途

現在、以下の2つの用途で常時運用しています。

  1. Discord Bot: 自分用のDiscordサーバーに接続し、チャットでGPT-5.4と対話できる
  2. LAN向けAPIゲートウェイ: ポート18789でLAN内の他デバイスからAIエージェントのAPIを呼び出せる

まとめ

大量のリソースを前提にするのではなく、最小限のリソースで最大限の価値を引き出す。これはエンジニアとしての矜持です。

NullClawは公称スペック通り、エッジデバイスでAIエージェントを動かすのに十分な性能を持っています。Visionが無効化されている制約はありましたが、ソースコードにパッチを当てることで解決できました。

Raspberry Pi 5 + NullClaw + Dockerの組み合わせは、クラウドに依存しすぎない「エンジニアの箱庭」として、日常のAI活用に十分実用的です。

ACS 事業部のご紹介

私の所属する ACS 事業部では、開発者ポータル Backstage、Azure AI Service などを活用し、Platform Engineering + AI の推進・内製化を支援しています。

www.ap-com.co.jp www.ap-com.co.jp www.ap-com.co.jp

また、GitHub パートナーとしてお客様に GitHub ソリューションの導入支援を行っています。 GitHub Copilot などのトレーニングなども行っておりますので、ご興味を持っていただけましたらぜひお声がけいただけますと幸いです。

一緒に働いていただける仲間も募集中です! ご興味持っていただけましたらぜひお声がけください。

※求人名の冒頭に【ACSD】と入っている求人が当事業部の求人です

www.ap-com.co.jp www.ap-com.co.jp

本記事の投稿者: 越川将人