Shumai:クリエイティブワークのためのオープンソースFrame.io代替
Shumaiは、クリエイティブチーム向けのアセット管理、コラボレーション、AI機能を提供するオープンソースプラットフォームであり、Frame.ioの代替として位置づけられています。S3互換ストレージ、フレーム単位の注釈、セキュアな共有、きめ細かいアクセス制御、Temporalによる分散トランスコーディング、カスタムメタデータ、そしてGeminiを活用したAIエージェント(セマンティック検索と自動メタデータ入力)を備えています。インストール方法はDocker Compose、NPM、またはソースから選択できます。
Shumaiは、クリエイティブチーム向けに設計されたオープンソースのプラットフォームで、Frame.ioのセルフホスト代替として注目を集めています。GitHub上でホストされ、MITライセンスの下で公開されており、現在12以上のリリースバージョンがあります。コードベースは主にTypeScript(99.8%)で構成されています。
このプラットフォームの核心は、クリエイティブアセットのエンドツーエンド管理を中心に展開されています。まず、ShumaiはローカルファイルシステムまたはS3互換のクラウドストレージ(Amazon S3、Cloudflare R2、MinIOなど)をサポートし、アセットの安全な保存と効率的な配信を実現します。コラボレーション機能としては、ビデオや画像アセットに対してフレーム単位の注釈が可能で、描画ツールやタイムスタンプ付きコメントを使って正確なフィードバックを提供できます。また、安全な公開共有リンクを作成したり、キュレーションされたメディアコレクションをクライアントやステークホルダーと共有することができ、チームレベルおよびプロジェクトレベルのロールベースアクセス制御(RBAC)で権限を管理します。ビデオワークフローでは、Temporalを使用してリソース集約型のトランスコーディングをバックグラウンドワーカープールにオフロードし、パフォーマンスを向上させます。さらに、ユーザーは制作パイプラインに合わせて動的なメタデータフィールドを定義し、カスタマイズできます。
Shumaiの大きな特徴は、AIエージェント(Shumai Agent)の統合です。このエージェントはコンテキストを認識した対話が可能で、プロジェクトワークスペース内で直接やり取りできます。カスタムスクリプト、ツール、自動化スキルを登録することでエージェントの機能を拡張でき、実行は隔離されたサンドボックス環境で安全に行われます。また、Google Geminiを利用して新しいアセットに対して自動的にタグ、説明、カスタムメタデータを生成したり、ベクトル埋め込みを用いたセマンティック検索により、視覚的または概念的なクエリでアセットを瞬時に見つけ出すことができます。
Shumaiのインストール方法は複数用意されています。最初のオプションはDocker Composeを使用するもので、最も迅速です。専用のディレクトリを作成し、docker-compose.yamlファイルをダウンロードし、環境変数(リモートデプロイの場合はAWS_ENDPOINT_URL_S3を設定)を構成した後、docker compose up -dを実行するだけです。2番目のオプションはNPMやBunを使ったグローバルインストールです。最初にpgvector拡張機能を備えたPostgreSQLコンテナを起動し、システム依存関係(ffmpeg、bubblewrap、socat、ripgrepなど)をインストールしてから、npm install -g @shumai-one/shumaiでインストールし、作業ディレクトリに.envファイルを作成してshumaiコマンドを実行します。注意点として、Bunでインストールした場合、Bunランタイムで実行するにはbun run --bun shumaiのようにコマンドを前置する必要があります。3番目のオプションは、開発用途に適したソースからの実行です。リポジトリをクローンし、Bunで依存関係をインストールし、データベースを起動してマイグレーションを実行し、開発サーバーを起動します。
Shumaiはさらに、プロジェクト、フォルダ、アセットの管理、ファイルやフォルダのアップロード、新しいバージョンの作成をターミナルから直接行えるコマンドラインインターフェース(CLI)ツールも提供しています。このプロジェクトはshumai.oneチームによってメンテナンスされており、GitHub上でコミュニティの注目を集めています。現時点ではスター数は0ですが、豊富な機能セットとオープンソース性により、クリエイティブ業界向けのセルフホスト型ソリューションとして有望な選択肢となっています。