Supabaseのスキーマやポリシーを調べるたびに、ダッシュボードを行き来していませんか。
2026年5月10日、Dave Morin氏がGo製CLIツール「supacrawl v0.1.0」を公開しました。Supabase/PostgresのメタデータをローカルのSQLiteファイルに同期し、全文検索やオフラインでのSQL実行を可能にします。
この記事でわかること:
- supacrawlが解決する課題と基本的な仕組み
- メタデータ同期・全文検索・行コピーの使い方
- AIエージェントとの連携方法
- インストール手順
- 現時点での制限事項
SupabaseダッシュボードなしでDBを検索できる
supacrawlは、Supabase/PostgresのプロジェクトメタデータをローカルのSQLiteアーカイブにミラーするCLIツールです。スキーマ構造・RLSポリシー・インデックス・トリガー・Storageのオブジェクト数まで、sync コマンド1回でまとめてローカルに落とせます。以降はダッシュボードにアクセスせず、全文検索(FTS5)やSQLでローカルアーカイブを直接照会できます。
同ファミリーには discrawl(Discord)や slacrawl(Slack)もあり、各サービスのデータをローカルファイルに保持するという設計思想を共有しています。supacrawlはその Supabase版にあたります。
取得できるメタデータの範囲
sync コマンドが収集する情報は次のとおりです。
- スキーマ・テーブル・カラム・インデックス・制約
- RLSポリシー・関数・トリガー・拡張機能
- Supabase Storageのバケット数とオブジェクト数
テーブルの実データを含めたい場合は sync --full を使います。行データはJSON形式で table_rows テーブルに格納されるため、スキーマをまたいだ横断検索が可能です。全文検索インデックスが不要な場面では --no-row-fts を付けてアーカイブサイズを抑えられます。
supacrawl sync --full
supacrawl sql "select schema_name, name, rls_enabled from tables order by schema_name, name limit 20"
supacrawl search "auth policies"
インストールと初期設定
Go 1.26以上が必要です。Homebrew tapは今後の対応予定で、現時点ではソースからビルドします。
git clone https://github.com/davemorin/supacrawl.git
cd supacrawl
go build -o bin/supacrawl ./cmd/supacrawl
./bin/supacrawl version
接続文字列を環境変数に設定してから初期化します。--database-url オプションも使えますが、接続文字列が設定ファイルに残らない環境変数経由が安全です。
export SUPABASE_DB_URL="postgres://postgres.<ref>:<password>@aws-0-us-west-1.pooler.supabase.com:6543/postgres?sslmode=require"
supacrawl init --project-id <ref>
supacrawl sync
doctor コマンドでローカルアーカイブとDB接続の両方を一括診断できます。
supacrawl doctor
AIエージェントが直接DBを読める設計
supacrawlはOpenClawのクローラーファミリーとして設計されており、エージェントが呼び出しやすいインターフェースを持ちます。metadata --json・status --json・doctor --json はエージェントやCIから安定して呼び出せる固定JSONエンドポイントとして機能します。
読み込みコマンドはデフォルトで15分の鮮度ウィンドウを持ち、古くなったアーカイブを自動更新します。DB接続が利用できない場合はローカルキャッシュで継続するため、オフライン環境でもエージェントが止まりません。
supacrawl metadata --json
supacrawl status --sync never
Dave Morin氏はリリース時に「自分のフクロウ(AIエージェント)がデータを読むためにパスワードを要求してきた。これで不要になる」と述べており、エージェントへのローカルDB公開を主目的のひとつとして挙げています。
エクスポートと暗号化バックアップ
テーブルデータをJSONLまたはCSVで書き出せます。Storageのバケットをフルシンクした後は、blobをローカルディレクトリへ一括ダウンロードすることも可能です。
supacrawl export --type jsonl --out companies.jsonl public.companies
supacrawl storage pull --dir ./supabase-storage
バックアップはage(現代的な暗号化ツール)で暗号化されたシャードとしてローカルに保存されます。秘密鍵はファイルまたは環境変数から読み込まれ、アーカイブ本体には書き込まれない設計です。
supacrawl backup keygen --out ~/.supacrawl/age.key
supacrawl backup init --recipient age1...
supacrawl backup push
また diff コマンドで2つのアーカイブを比較し、テーブル・ポリシー・Storageバケットの変化点を確認できます。スキーマ変更のレビューやCI組み込みに使えます。
v0.1.0時点での制限事項
v0.1.0はメタデータとオプションの行コピーに集中しており、以下はまだ対応していません。
- Edge Functionソースコードの取得
- Supabase Management APIを経由した認証設定・ブランチ・シークレットの取得
- ターミナルUI(
crawlkit連携は今後予定) - gitバック型のスナップショット共有
- Homebrew/リリースパッケージの配布
ロードマップはREADMEの「Not Yet Included」セクションで公開されています。
Supabaseの運用情報を手元に持ち込む
supacrawlはSupabaseダッシュボードへの依存を減らし、スキーマ調査・ポリシー確認・AIエージェントへのDB公開をローカルのSQLiteで完結させるツールです。初回リリースとして機能を絞った構成ですが、OpenClawクローラーファミリーの一員としてエージェントとの連携を最初から考慮した設計になっています。Supabaseを使っているチームやAIエージェントとDB情報を組み合わせたい開発者にとって、試す価値がある選択肢です。