Convexは、Web/LLMアプリ開発者向けのオープンソースなリアクティブデータベースです。Rust製のバックエンド(crates以下)とTypeScript製のサーバー関数・クライアントライブラリ(npm-packages以下)を組み合わせ、クエリ・ミューテーション・アクションを純粋なTypeScriptで書けるようにしています。Dockerまたはプリビルドバイナリでセルフホストでき、ダッシュボードやCLIも含めてクラウド版に近い機能を自前運用できます。
crates/local_backendがRuntimeの上に載る実行エッジとなり、HTTPやWebSocket経由のリクエストを受け取ります。crates/application/src/api.rsのApplicationApiトレイトがexecute_public_query・execute_public_mutationなどを定義し、authenticationクレートでの認証を経てdatabaseクレートでの読み書きへつなげる構造です。ユーザー定義関数はnpm-packages/udf-runtimeが用意するJS環境で、.cargo/config.tomlに記載されたパッチ入りのカスタムV8上で実行されます。common/src/bootstrap_model以下にはインデックスやスキーマ、テーブルなどの永続モデルが定義され、snapshot_importやexportsといったワーカー群がインポート・エクスポート・クーロンジョブなどの背景処理を担当します。全体はCargoワークスペースとしてクレートごとに責務分割されており、self-hosted/README.mdにあるDockerイメージまたはバイナリでまとめてデプロイされる構成です。
- STEP 01
self-hosted/README.mdの手順に沿ってDocker Composeでバックエンドとダッシュボードを起動すると、コンテナのログにインスタンスシークレットとadmin keyのデフォルト値が表示されます。
- STEP 02
READMEの注意書きの通り、ソースからビルドする場合はデフォルトのインスタンスシークレットとadmin keyを変更しないと、本番相当の権限でアクセスできてしまう状態になります。
- STEP 03
起動後はCLIからconvex devやconvex deployでTypeScript製のクエリ・ミューテーションをデプロイでき、ダッシュボードでテーブルやログを確認できます。
- STEP 04
バックエンドのログには、ビーコン機能によりデプロイメントのランダムID・マイグレーションバージョン・Git rev・稼働時間が定期的に出力されるのが見えます。
- STEP 05
--disable-beaconフラグを付けずに起動すると、この匿名テレメトリ送信は動き続けます。
- STEP 06
BUILD.mdに従いソースからRustクレート群をビルドする場合は、カスタムV8バイナリのダウンロードやmise経由でのprotocインストールなど、ネイティブ依存の準備に時間がかかると想定されます。
自前のインフラ上に、TypeScriptで書いたクエリ・ミューテーション・アクションを実行できるリアクティブデータベースバックエンドと、それを操作するCLI・ダッシュボードが手に入ります。Neon・Fly.io・Vercelなど好みのインフラと組み合わせて動かせる、自己完結型のConvexデプロイメントが構築できます。
READMEに明記されている通り、ランダム化テストなど社内で使われている高度なテストフレームワークはオープンソース版には含まれておらず、信頼性の一部は非公開テストに依存しています。
Windows環境での動作実績はLinuxMacほど蓄積されていないとREADMEに明記されており、自己責任での検証が必要です。
セルフホスト版バイナリには匿名ビーコンが標準で組み込まれており、無効化するには明示的に--disable-beaconを指定する必要があります。
ソースからビルドする場合、デフォルトのインスタンスシークレットとadmin keyのままだとセキュリティ上のリスクになります。
自前サーバーでConvexを動かしたいチーム、特にNeonやFly.io、Vercelなど好みのインフラと組み合わせたい開発者に向いています。Rustのクレート構成がapplication・common・database・authenticationなど責務ごとに整理されており、ApplicationApiトレイトを見るだけでクエリ・ミューテーション・アクションの実行経路を追えるため、コードを読むだけでも動作の骨格は把握できます。ただし内部の高度なテスト群は非公開なので、本番投入前には自分の環境でセルフホストガイドに沿った検証を行うことをおすすめします。