Spaceはアプリで、リポジトリでもある
Gradio、Streamlit、React、Vue、Next.js、FastAPI、Node serverは多くの点で異なります。ただし、container内のportでWebアプリを待ち受けられる点は共通です。
OpenFaceには、それで十分です。
共通契約を小さく保つ
SpaceはDockerfileを持つForgejo repositoryです。Containerは所定の内部portでWebアプリを公開し、path-awareなreverse proxyの背後で動作します。Source、assets、dependency、documentation、historyはframeworkに自然な構成のまま保持できます。
Next.jsをGradio設定へ変換したり、Vue appを静的metadataへ平坦化したりしません。Dockerfileが実行可能な説明として残ります。
Card、repository、appは別の問いに答える
Catalog cardは「何をするか、誰が所有するか、実行中か、どのtagか、何人が見たか」に答えます。Repositoryは「どのcommitか、何をinstallするか、どうreviewするか、別環境で再構築できるか」に答えます。埋め込まれたappは「本当に動くか」に答えます。
3つを一つのSpaceとして扱うことで、見栄えのよいcatalogが古いgeneric demoへ飛ぶ問題を防ぎます。
CPU-firstという有益な制約
Sample catalogはZeroGPUや必須GPU runtimeを避けます。通常のDocker hostで再現でき、start、resource limit、failure messageを理解しやすくするためです。GPU supportは意図して追加できますが、baselineには紛れ込みません。
Docker契約はSpacesガイド、lifecycleとroutingはRuntime nodeで確認できます。
