TigerFSは、データベースをディレクトリとしてマウントし、ファイルをPostgreSQLに直接保存する新たな実験的ファイルシステムだ。オープンソースの同プロジェクトは、標準的なファイルシステムインターフェースを通じてデータベースのデータを公開し、開発側およびAIエージェントが、APIやSDKを介するのではなく、ls、cat、find、grepといった一般的なUnixツールを用いてそれとやり取りできるようにする。
TigerFSは、エージェントにおける共有された信頼性の高い状態の欠如に対処することを目的とし、ファイルシステムの簡潔さとデータベースのトランザクション保証および構造を組み合わせたもの。MITライセンスの下で公開されており、TigerFSは「file-first」と「data-first」の2つの利用モデルをサポートする。
file-firstのワークフローにおいて、開発側はMarkdown文書などのファイルをディレクトリ内で整理し、アトミックな書き込みおよび自動的なバージョン管理が行われる。これにより、エディタやコマンドラインユーティリティといった既存のツールは変更なしでファイルを扱うことが可能となる一方、todo、doing、doneといったタスク状態を表すためにディレクトリ間でファイルを移動させることで、同時アクセスおよび簡易な調整も可能となる。TigerDataの共同創業者兼CTOであり本プロジェクトの作成者であるMichael Freedman氏は、LinkedIn上でその目的について説明している。
エージェントは高度なAPIやSDKを必要としません。ファイルシステムを好みます。ls、cat、find、grepです。パイプライン化されたUNIXツールです。そこで私は、実際のデータベースを裏側に用いることで、ファイルをトランザクション対応かつ同時実行可能になりました。
data-firstのワークフローにおいて、利用側は既存のPostgreSQLデータベースをマウントし、標準的なUnixツールを用いてそのデータを探索する。ファイルシステムのパスにはフィルタやソートを含めることができ、これらはデータベースクエリに変換されるため、SQLを書かずにデータの取得やエクスポートが可能となる。Freedman氏はさらに次のように述べた。
すべてのファイルは実際のPostgreSQLの行です。複数のエージェントおよび人間が、完全なACID保証の下で同時に読み書きを行います。ファイルシステムこそがAPIです(中略)主としてエージェントのワークフロー向けにこれを構築したが、ほかにどのような用途があるのか関心があります。まだ初期段階であるが、コアは堅固です。
MongoDBのデベロッパーアドボケイトでありAWS Data HeroであるFranck Pachot氏は、Oracleの「Internet Filesystem Option」を想起し、次のように述べた。
私はこれを気に入っています。データベースをファイルシステムとしてマウントするという発想です。これは2000年前後のインターネット初期時代の高揚を想起させます。この考え方は非常に破壊的であったため、Oracle 8.1のドットは「1」に重なり「i」となります。
ドキュメントによると、TigerFSはLinuxではFUSEを介して、macOSではNFSを介してマウントされ、既存のPostgreSQLインスタンスまたはマネージドサービスに接続できる。各ファイルはデータベースの行に対応しており、トランザクション保証および同時アクセスを提供する一方、Claude CodeやCursorといったツールが従来のファイルシステムモデルを通じてデータとやり取りできる。これを実現するため、TigerFSは各ディレクトリに対して、.build、.info、.exportといったドットで始まる特別なディレクトリを追加。
Hacker News上では、多くの開発側が制限事項や性能への影響について関心を示しており、ユーザーのiamcalledrobは次のように書いている。
非常に興味深い。ファイルシステムAPIの上にさらに多くのものが構築されるのを見るのは好ましいです。性能特性がどのようなものか気になります。おそらく、メモリに収まる小規模なデータセットではうまく機能し、それを超える場合はあまりうまく機能しないと想定しています。したがって、設定やコンテキストなどに適していると考えられます。
ユーザーのbjornrobergは次のように付け加えた。
非常に優れたコンセプトです。構造化データとやり取りするためにファイルシステムのプリミティブを用いるという考え方を気に入っています。
TigerFSはあらゆるPostgreSQLデータベースで動作し、外部依存なしに、LinuxではFUSEを介して、macOSではNFSを介してマウントされる。