前提条件
toolchain はpnpm + Bun のモノレポで、browserflow binary が入口です。実行するには動作する Node/Bun toolchain が必要で、browser tools を作成または実行する場合はローカルの Chromium も必要です。
| 必要なもの | 必要な理由 |
|---|---|
| Node / Bun toolchain | browserflow binary と TypeScript SDK を実行します。toolchain は mise で固定されています。 |
| Local Chromium | browser capability を支えます。browser tool を record し、runtime で決定論的にリプレイするために必要です。 |
| Local filesystem + SQLite | インフラゼロのデフォルトです。実行状態には SQLite、artifacts とシークレットには filesystem を使います。外部サービスは不要です。 |
browserflow は local-first, cloud-optional(tenet T6)です。すべてがインフラゼロで動きます。状態には SQLite、artifacts には filesystem、シークレットにはファイルを使います。後でスケールアウトしても、入れ替わるのは実装であって概念ではありません。
インストールと scaffold
日常的な inner loop は、1秒未満で、かつ決して破壊的でないように設計されています。まずモノレポをクローンし、scaffold step を実行します。クローンしてインストールする
repository をクローンし、
pnpm で workspace をインストールします。これにより packages/cli の browserflow binary がリンクされます。個別の publish step は不要です。プロジェクトを scaffold する
init を一度実行して、プロジェクトの骨組みを作成します。| パス | 含まれるもの |
|---|---|
flows/ | TypeScript(SDK)または YAML で作成する Flow 定義。 |
tools/ | browserflow record で作成する browser Recordings を含む、ローカル tool sources。 |
browserflow.lock | tool と pack のバージョンを固定する lockfile。これにより、どこで install してもバイト単位で同一の tools が取得されます。 |
インストールを検証する
starter Flow に対して compile check を実行し、toolchain が動作していることを確認します。
--check は pure operation です。Flow を type-check し、browserflow.lock に照らして tools を resolve し、FlowSpec digest を出力します。network calls も side effects もありません。digest が出力されれば、toolchain の準備は完了です。最初の browser tool を作成する(任意)
browser capability を使うには、準備済みの ops file から browser tool を作成します。この Recording は、Flow に組み込む決定論的な tool になります。Live interactive Playwright capture は計画中です。現在の実装は file から ops を読み込みます。
--ops flag は、record する操作を列挙した JSON file を受け取ります。daily-price-watch Flow は、browser tool search-price@1.2.0 を実行し、transform を適用し、条件付きでシークレット webhook に http.post を発火します。1つの文から、決定論的で、inspect 可能で、再デプロイ可能な workflow へ。実行時の loop に AI は入りません。
プロジェクトの構造
browserflow は、1つのモノレポ内で独立してバージョン管理される packages の集合として提供されます。多くの場合、それらの大半を直接触ることはありません。browserflow CLI が残り全体の composition root です。それでも layout を知っておくと、システムを理解しやすくなります。
| パッケージ | 役割 |
|---|---|
core | エンジンです。FlowSpec、Tool contract、compiler、Rider、Journal を含みます。自身の interfaces 以外には依存しません。 |
sdk | FlowSpec に lower する、fluent で type-safe な TypeScript builder です。 |
yaml | YAML parser と canonical emitter です。round-trip surface でもあります。 |
std | Standard tool packs です。http、transform、shell、fs、control、model を含みます。 |
browser | browser tool です。author-time の record と、決定論的な runtime replay を提供します。 |
cli | 上記すべてを合成した browserflow binary です。 |
registry | Pack format、publish/resolve、replication、そして browserflow.lock lockfile を扱います。 |
web-api | 任意で使える control-plane HTTP API です(Hono on Bun、SQLite-backed)。 |
依存の矢印は常に内側の
core を向きます。 core は自身の interfaces 以外に依存しません。sdk と yaml は core に依存し、それ以外のすべては内向きに依存します。矢印が core から外へ向くことはありません。エンジンは cloud SDK、transport、model を import しません(tenets T4 と T5)。これにより、Flow はどこでもポータブルで再現可能に保たれます。次のステップ
クイックスタート
最初の5分で、
init から実行中かつ inspect 可能な Flow まで進みます。最初の Flow を作成する
daily-price-watch Flow を end to end で構築します。browser tool、transform、conditional webhook を含みます。