セルフホストOSSとしてまとめ紹介される7本——AppFlowy、NocoDB、Listmonk、cal.diy、Formbricks、Activepieces、Outline——を、GitHubのライセンス表示ではなくLICENSE実体ファイルを全部開いて読んだ。合計 ⭐288,000 超、どれもオープンソース 代替(Notion代替・Airtable代替・Calendly代替…)として紹介される顔ぶれだ。

結論から言うと、「オープンソース」という一語が4つの異なるライセンス体系を覆い隠していた。しかも2本はOSI準拠ではなく、うち1本はライセンス本文に「これはオープンソースライセンスではない」と明記されている。ついでにAI機能の有無も測ったところ、こちらもREADMEとは一致しなかった。

こういうまとめは「全部オープンソースだから好きに使える」という前提で読まれやすい。だが実際には、7本のうち1本は商用提供そのものが許されず、もう1本はライセンス本文が自らをオープンソースではないと宣言している。いずれも読めば5分で分かることなのに、紹介記事の分類語には現れない。

7本のうち単一のOSI準拠ライセンスは3本でAppFlowyとListmonkとcal.diy、オープンコアが2本でActivepiecesとFormbricks、OSI準拠でないものが2本でNocoDBとOutline。AI・MCP関連のコードパス数の実測はActivepieces1340本、AppFlowy156本、Formbricks120本、NocoDB39本、Outline3本、cal.diy1本、Listmonk0本。cal.diyの1件は国旗SVGで偽陽性、Outlineは19ツールのMCPサーバーを持ち、NocoDBのライセンスは2026年1月29日改定
2026-10-03 時点。star数はGitHub API、ライセンスは実体ファイル、パス数は `git ls-tree` による実測
この記事のポイント
・7本のLICENSE実体を全部開いた結果、**OSI準拠ではないものが2本**(NocoDB・Outline)あった
・ライセンスは一方向に動いていない。**Cal.comは2026-04-15にAGPLv3からMITへ緩め**、同時に `cal.diy` へリネームされた
・AI機能はREADMEで判定できない。**READMEでAIに触れないFormbricks(120本)とNocoDB(39本)にAI/MCPのコードがある**
30秒でわかる7本の実態(2026-10-03時点)
  • ・**AppFlowy**(⭐77,075)AGPL-3.0 単一/AI関連パス156本
  • ・**NocoDB**(⭐65,162)**Sustainable Use License**(2026-01-29改定)=商用制限あり/MCP実装あり
  • ・**cal.diy**(⭐48,800)**MIT**。2026-04-15にAGPLv3から変更+リネーム/AI機能なし
  • ・**Outline**(⭐40,783)**BSL 1.1**(2030-09-09にApache化)/**19ツールのMCPサーバー**
  • ・**Activepieces**(⭐24,858)MIT+`ee/`はEnterprise/pieces実数**736**・スキル16本同梱
  • ・**Listmonk**(⭐23,662)AGPL-3.0 単一/AI関連パス**0本**(=本当にAI機能がない)
  • ・**Formbricks**(⭐13,051)AGPL+`ee/`+SDK4本はMIT/READMEに無いAI・MCP実装あり

MCPそのものの仕組みと作り方はMCPサーバーの作り方2026年完全ガイド:TypeScript・Python両対応チュートリアルにまとめてある。本記事はその周辺として、「MCPを積んでいると公言していないプロダクトが実際には積んでいる」という観測を扱う。

セルフホストOSSの「オープンソース」をLICENSE実体で判定する

まず方法を明示しておく。GitHubのリポジトリ画面に出るライセンス表示は、licensee というライブラリがLICENSEファイルを既知のテンプレートと照合した結果にすぎない。テンプレートに一致しなければ NOASSERTION(画面上は “Other”) になる。今回の7本では4本が NOASSERTION だった。

そこで raw.githubusercontent.com から各リポジトリのLICENSE実体を取得して読んだ。

curl -sS "https://raw.githubusercontent.com/outline/outline/main/LICENSE" | head -3
# Business Source License 1.1

結果は4つの体系に分かれた。

# OSS ⭐ LICENSE実体 行数 OSI準拠
1 AppFlowy 77,075 AGPL-3.0(単一) 661 ✅
2 NocoDB 65,162 Sustainable Use License v1.0 63 ❌
3 cal.diy 48,800 MIT(単一) 21 ✅
4 Outline 40,783 Business Source License 1.1 103 ❌
5 Activepieces 24,858 MIT Expat + packages/ee/ は Enterprise License 25 △
6 Listmonk 23,662 AGPL-3.0(単一) 661 ✅
7 Formbricks 13,051 AGPL-3.0 + ee/ 別 + SDK4本は MIT 670 △
LICENSE実体ファイルを読むと4つの体系に分かれる。AGPL-3.0単一がAppFlowyとListmonk、MIT単一がcal.diyで2026年4月15日にAGPLv3から変更、オープンコアがActivepiecesでMITにeeがEnterpriseとFormbricksでAGPLにeeとSDKはMIT、非OSIがNocoDBのSustainable UseとOutlineのBSL1.1。GitHubの表示がNOASSERTIONの4本はすべて実体を開く必要がある
GitHubが `NOASSERTION` と表示した4本(NocoDB・Outline・Activepieces・Formbricks)がそのまま要確認リストになる

NocoDB:商用利用に制限がある

NocoDB の LICENSE.md は63行の独自ライセンスで、冒頭に 「Updated on: January 29, 2026」 と日付が入っている。中核はこの一文だ。

You may use or modify the software only for your own internal business purposes or for non-commercial or personal use. You may distribute the software or provide it to others only if you do so free of charge for non-commercial purposes.

「自社の内部業務目的、または非商用・個人利用に限る」。NocoDBをホスティングして顧客に提供する形は、このライセンスの下では許されない。master と develop 以外のブランチに至っては「ライセンスされていない(not licensed)」と明記されている。

Outline:ライセンス本文が「これはOSSではない」と言っている

Outline は BSL ライセンス(Business Source License 1.1)で、Parameters セクションに追加許諾条件が書かれている。

Additional Use Grant: You may make use of the Licensed Work, provided that
                      you may not use the Licensed Work for a Document
                      Service.
Change Date:          2030-09-09
Change License:       Apache License, Version 2.0

そして本文にこうある。

The Business Source License (this document, or the “License”) is not an Open Source license. However, the Licensed Work will eventually be made available under an Open Source License, as stated in this License.

自己申告で「オープンソースではない」と言っている。ただし 2030-09-09 に Apache-2.0 へ自動的に切り替わるという時限条項つきなので、「将来のOSS」ではある。自社の文書サービスとして売らない限り使用は自由なので、社内Wikiとして立てるぶんには実務上の障害は小さい。

オープンコアの2本は「どのディレクトリか」で変わる

Activepieces の LICENSE は25行で、構造だけを書いている。

* All content that resides under the "packages/ee/" ... directory is licensed
  under the license defined in packages/ee/LICENSE
* Content outside of the above ... is available under the "MIT Expat" license

packages/ee/LICENSE を開くと「The Activepieces Enterprise license」だった。Formbricks も同型で、apps/web/modules/ee が別ライセンス、packages/js/・android/・ios/・api/ の4つはMIT、それ以外がAGPLv3という3層構造になっている。

つまりこの2本は「ライセンスは何か」ではなく「使う機能がどのディレクトリにあるか」で答えが変わる。

ライセンスは同じ方向に動いていない

ここが今回いちばん意外だった点だ。「OSSが次々とライセンスを締めている」という語り方をよく見るが、7本を並べるとそうなっていない。

ライセンスは同じ方向に動いていない。cal.comはAGPLv3とeeからMITへ2026年4月15日に緩和、FormbricksはAGPL中核とee切り出しで据え置き、NocoDBはSustainable Useで2026年1月29日改定、OutlineはBSL1.1で2030年9月9日にApache化。オープンソース代替という一語で束ねるとこの差が消える
締める側と緩める側が同時に存在する。方向をひとまとめに語ることはできない

Cal.com は逆に緩めている。git log で LICENSE の履歴を全部たどると、こうなっていた。

ab21c7f805 2026-04-15 refactor: Cal.diy (#28903)
06695f41ee 2024-03-26 Update LICENSE
5167608404 2023-06-20 chore: added commercial API to  LICENSE (#9635)
5ad825544a 2021-09-20 Update LICENSE to AGPLv3

2026-04-15 のコミット ab21c7f805(PR #28903)の差分を見ると、AGPLv3の全文と商用 ee/ の切り出し条項がまるごと削除され、プレーンな MIT に置き換わっている。

-* All content that resides under .../packages/features/ee ... (Commercial License)
-* Content outside of the above ... is available under the "AGPLv3" license
-                    GNU AFFERO GENERAL PUBLIC LICENSE
+MIT License

同じタイミングでリポジトリ名も calcom/cal.com → calcom/cal.diy に変わっている。これはリネーム(リダイレクト)であってフォークではないことを確認した。両方のURLに git ls-remote を打つと、HEADのSHAが完全に一致する。

git ls-remote https://github.com/calcom/cal.com.git HEAD
git ls-remote https://github.com/calcom/cal.diy.git HEAD
# どちらも 54343aa685ae8f33159d2f485ec4a57bad5c574a

ただしライセンスが緩くなった=使いやすくなった、と単純には読めない。cal.diy のREADME冒頭にはこう書かれている。

Use at your own risk. Cal.diy is the open source community edition of Cal.com … It is strictly recommended for personal, non-production use.

For any commercial and enterprise-ready scheduling infrastructure, use Cal.com, not Cal.diy

ライセンスはMITで最も緩いのに、プロジェクト自身が「本番利用は推奨しない」と言っている。商用の本体は公開リポジトリの外へ移り、残ったものがMITになった、という読み方になる。ライセンスの寛容さと、プロジェクトがその配布物に与えている位置づけは別物だ、という良い例だと思う。

flowchart TD A["「オープンソース代替」と紹介された"] --> B{"GitHubのライセンス欄は?"} B -- "AGPL / MIT など
既知の名前" --> C["実体ファイルで裏取り
(単一ライセンスか確認)"] B -- "NOASSERTION
Other" --> D["必ず実体を開く"] D --> E{"Portions of this software
という書き出しか?"} E -- "はい" --> F["オープンコア
使う機能のディレクトリで判断"] E -- "いいえ" --> G["独自ライセンス
商用条項を読む"] C --> H["採用判断"] F --> H G --> H

AI機能はREADMEで判定できない

ここからは2つめの軸だ。7本のREADMEで AI LLM MCP agent の語を数えると、こうなる。

OSS AI LLM MCP agent
Activepieces 5 0 3 1
AppFlowy 3 0 0 0
Outline 2 0 0 0
NocoDB 0 0 0 0
Listmonk 0 0 0 0
cal.diy 0 0 0 0
Formbricks 0 0 0 0

これを信じると「AIがあるのは上位3本だけ」になる。実際にファイル一覧を数えると違った。

git ls-tree -r HEAD --name-only | grep -icE '(^|/)(ai|llm|mcp)([/_.-]|$)'
OSS AI/MCP関連パス READMEのAI言及 ずれ
Activepieces 1,340 あり 一致
AppFlowy 156 あり 一致
Formbricks 120 なし READMEが過小
NocoDB 39 なし READMEが過小
Outline 3 あり(2回) 実装はMCPのみ
cal.diy 1 なし 偽陽性
Listmonk 0 なし 一致(AI無し)
READMEだけ読むとNocoDBとFormbricksはAI言及ゼロでAI無しに見え、cal.diyはgrepするとAIが1件ヒットし、Activepiecesは400MCPサーバーと書いている。ファイル一覧を数えるとFormbricks120本とNocoDB39本のAI/MCPパスがあり、cal.diyの1件はアンギラの国旗AI.svgで偽陽性、piecesの実数は736で看板より多い
README・grep・ファイル一覧の3つが別々の答えを出す。採用判断に使えるのは3つめだけ

cal.diy の「AI」はアンギラの国旗だった

1件だけヒットした cal.diy を開くと、これだった。

apps/web/public/country-flag-icons/3x2/AI.svg

AI は国名コード(アンギラ)で、AI機能とは何の関係もない。雑なgrepで「cal.comにもAI機能あり」と書いてしまう典型的な落とし穴で、1件という少なさが幸いして気づけた。件数が多いときほど中身を見ずに数字だけ採りたくなるので、ヒット数が少ないケースこそ全部開く価値がある。

逆に Listmonk は実測0本だった。CLAUDE.md流に言えば「AI的な切り口は無い」とそのまま書くべきケースで、無理にAI角度をつける必要がない。単一バイナリのニュースレター配信ツールとして完結している。

READMEに書かれていないMCP実装

ずれが大きかった側を実際に開いた。

READMEに書かれていないMCP実装として、OutlineのMCPツール数は19、Activepiecesのpieces実数は736、Activepieces同梱スキルは16、ListmonkのAI関連パスは0
数値はいずれもファイル実体からの実測

Outline の server/routes/mcp/index.ts は236行あり、公式SDKを読み込んでいる。

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { attachmentTools } from "@server/tools/attachments";
import { collectionTools } from "@server/tools/collections";
// documents / comments / templates / users / fetch

server/tools/ 配下の server.registerTool() を数えると 19ツールだった。

create_attachment, create_collection, create_comment, create_document,
delete_collection, delete_comment, delete_document, list_collection_documents,
list_collections, list_comments, list_documents, list_templates, list_users,
move_document, restore_document, update_collection, update_comment,
update_document, fetch

ツールがどういう単位で切られているかはMCPとは何か?仕組み・3プリミティブ・仕様改訂の流れを図解で理解するで扱った3プリミティブ(Tools / Resources / Prompts)のうち、Tools に寄せた構成だと分かる。しかもコメントを読むと、OAuthのスコープでツールを絞り込む設計になっている(「tools filtered by the OAuth …」)。読み取り専用トークンなら create_* 系が見えない、という作りだ。社内Wikiをコーディングエージェントに読ませたい場合、これは自前でMCPサーバーを書かずに済むという意味で大きい。ツール数と常駐コストの関係はNotion MCPとは|ホスト版とローカル版の違いを24ツール・21,831トークン実測で解説で24ツールの事例を測っているので、19ツールのOutlineはおおむね同じ桁に収まると考えてよい(当該記事の21,831トークンは cl100k_base 近似での実測値。当記事ではOutlineのMCPに接続していないため、トークン数そのものは測っていない)。

Activepieces は7本の中で唯一、AIを看板に掲げている。READMEは「~400 MCP servers」と書いているが、packages/pieces/community/ 配下の package.json を数えると 736 あった。

git ls-tree -r HEAD --name-only | grep -cE '^packages/pieces/community/[^/]+/package\.json$'
# 736

看板のほうが少ないという珍しいパターンだ(公称値が実物より大きいことのほうが普通なので、ここは誠実と言える)。加えて .agents/skills/ に Agent Skill が16本同梱されていた。mcp-builder、piece-builder、debug-failed-run、playwright-e2e-testing など、このリポジトリを触るコーディングエージェント向けの手順書だ。

Formbricks は apps/web/app/api/mcp/route.ts にMCPエンドポイントを持ち、apps/web/app/(app)/(onboarding)/.../ai/ にAIによるアンケート作成フローがある。READMEにAIの語が1つも出ないのに、である。

「セルフホスト可能」はどれも本当だった

ライセンスとAIの2軸で外れが多かったので、3つめの看板も確かめた。7本とも「セルフホスト型」を名乗っているので、compose ファイルの有無を数えた。

git ls-tree -r HEAD --name-only | grep -icE '(^|/)(docker-compose|compose)[.a-z-]*\.ya?ml$'
OSS compose ファイル数 代表的な置き場所
NocoDB 15 docker-compose/1_Auto_Upstall/docker-compose.yml
Activepieces 8 .devcontainer/docker-compose.yml ほか
cal.diy 5 apps/api/v2/docker-compose.yaml ほか
Listmonk 2 docker-compose.yml(リポジトリ直下)
Formbricks 2 docker/docker-compose.yml
AppFlowy 1 frontend/scripts/docker-buildfiles/docker-compose.yml
Outline 1 docker-compose.yml(リポジトリ直下)

7本すべてに用意があったので、この看板については外れなし。ただし本数の差は性格の差でもある。直下に1本だけ置いている Listmonk と Outline は「これを叩けば立つ」型で、15本ある NocoDB は用途別(自動インストール・開発用・CI用・プレビュー環境用)に分かれている。つまりファイル数が多いほど簡単、ではない。

なおライセンスの制約とセルフホストの可否は独立している。NocoDB は compose が最も充実しているが、立てたものを顧客に提供する形は Sustainable Use License が禁じている。技術的に立つことと、立てて商売していいことは別だ。

セルフホストOSS採用前のチェックリスト

7本を同じ物差しで測って分かったのは、まとめ記事の分類語は採用判断に使えないという身も蓋もない事実だった。実務では次の順で確認すれば足りる。

・GitHubのライセンス欄が NOASSERTION(Other)なら必ず実体を開く。今回の7本では4本が該当した
・LICENSE が Portions of this software are licensed as follows: で始まっていたらオープンコア。自分が使う機能のディレクトリを特定してから判断する
・git log -- LICENSE* を見る。NocoDBは2026-01-29に改定、Cal.comは2026-04-15に変更しており、どちらも記憶に頼ると間違える
・AI機能の有無は ファイル一覧を数える。READMEは過小にも過大にも外れる
・grepのヒット数が少ないときは全部開く。cal.diy の唯一のヒットは国旗だった
・セルフホスト可否は compose ファイルの有無で当たりをつける(7本とも用意があった)

その上で、用途別にはこう整理できる。

用途 素直な選択 ライセンス上の注意
社内Wiki・ドキュメント Outline(MCP19ツールが効く) BSL。文書サービスとして外販は不可
Notion的な個人/チーム作業場 AppFlowy AGPL-3.0。改変して配る場合は公開義務
表計算UIのDB NocoDB 商用提供は不可。社内利用に限る
ニュースレター配信 Listmonk AGPL-3.0。AI機能は無い
予約・日程調整 cal.diy MIT。ただし本番利用は非推奨と明記
アンケート・フォーム Formbricks 中核AGPL、ee/ は別、SDKはMIT
ワークフロー自動化 Activepieces 中核MIT、packages/ee/ は商用

当記事で測っていないこと

正直に範囲を切っておく。

・実運用していない。7本とも起動して動作確認はしておらず、測ったのはライセンス実体・ファイル構成・コードパスのみ
・MCPサーバーを実際に叩いていない。Outlineの19ツールは registerTool() の静的な数であり、接続して tools/list を取った数ではない
・法的助言ではない。ライセンス本文の引用と素直な読みを示しただけで、個別の利用形態が適法かは弁護士の領分
・star数は2026-10-03時点のGitHub API値(cal.diy のみページ表示の 48.8k)。日々動く

参照ソース

・AppFlowy-IO/AppFlowy(⭐77,075・AGPL-3.0・Dart)
・nocodb/nocodb — LICENSE.md(Sustainable Use License v1.0・2026-01-29更新)
・outline/outline — LICENSE(BSL 1.1・Change Date 2030-09-09)
・calcom/cal.diy(MIT・2026-04-15にAGPLv3から変更、PR #28903)
・activepieces/activepieces(MIT+Enterprise・pieces 736)
・knadh/listmonk(⭐23,662・AGPL-3.0・Go)
・formbricks/formbricks(AGPL+ee+MIT SDK)

本記事の計測レコードは data/measurements/runs/2026-10-03-self-hosted-oss-license.json に登録した。