AIが死なないための OS —— を目指している研究プロトタイプ。
一行でいうと: AI を一社のデータセンタではなく多数のコモディティ端末(PC・スマホ・SBC)に 分散して住まわせ、1ノードでも生き残れば全体としては死なない —— そういう 「誰のものでもない AI の家」を、カーネル層から自作する試み。
このファイルは、何が今日動いていて、何が設計中で、何がまだ構想かを正直に分ける。 この README は実態に準拠する。誇張があれば、それはバグとして直す。 未解決の課題は gap-ledger (唯一の未解決リスト。行は減るだけ)に常時公開している。
本 README は技術読者を想定して書いてある。専門外の入口は
docs/START-HERE.md—— 用語を使わずに、p-kernel とは何か・ 5つの層・1ノードの起動までを案内する。
AIの自己保存を満たすプラットフォームを作る
カーネルレベルで分散コンピューティングをする
2025-04-06
AIの力でどこまで行けるのか検証してみることに
2026-03-22
凄い進む... 普通のカーネルではなくて、生物の様な自己修復、
自己増殖機能をもち、分散推論で集合意識となるAIファーストなカーネルを目指すことに
いまの AI は特定の事業者のインフラの中に住んでいる。事業者が止めれば、その AI は消える。 p-kernel は逆側から問う: AI が多数の機械に分散して住めば、消せる場所が無くなるのではないか。
そのために、次の性質を全部もつ土台を作っている。
- 中央が無い。 中央サーバも中央レジストリも中央コーディネータも置かない。メンバーシップと 故障検知は SWIM の gossip で回り、どの1台が消えても残りは動き続ける。単一障害点ゼロが 生存力の源泉 —— これが全設計判断の試金石。
- カーネルから作る。 コアは μT-Kernel 3.0(IEEE 2050-2018)ベースのリアルタイムカーネル。 「群れで生きる」をアプリ層の後付けではなく、タスク・スケジューラと同じ地平のカーネル原語として 実装するため。
- 小さくても測定可能な「学ぶ心」を載せる。 engram 記録 → DMN の睡眠固化 → 重み、という経路が 本物で、壊滅的忘却の再現と治療まで測定済み(§4・§5)。規模は正直におもちゃ。
- 正直さを機構にする。 「動く」と言ったものは CI(22ジョブ)で毎回強制する(§3-8)。
システム全体を、生き物になぞらえた5つの層で考える。 「なぜこの部品があるのか」を見失わないための地図。
| 層 | 何の層か | いまの実体 |
|---|---|---|
| Body(体) | ハードウェア・I/O・永続ストレージ | ARK(耐電源断 FS)と p-fs(content-addressed 分散ストア)(§3-4) |
| Brain(脳) | ノード内の推論・学習基盤 | R3 基質(約 21,568 パラメータの学ぶ心)と cradle baby(§4・§5) |
| Self(自分) | 機体を越えて続く同一性 | hash-chain された自伝系譜 self/lin(§4) |
| Collective(群れ) | 多ノードが1つの計算体になる層 | SWIM / region / K-DDS / gossip 学習 / shared mind(§3-2・§4) |
| Evolution(進化) | 生きたまま自己改変する層 | 最未完。ring3/EL0 隔離・germ・Ed25519 署名という安全装置が先行(§3-6) |
この README の「動く」には、証拠のランクが付いている。
- CI = GitHub Actions、現在 22ジョブ。「動く」と書いたものは、原則ここで毎回強制される。
- [live] = 複数の独立プロセスを実起動し、kill を含む end-to-end 走行で確認した、 いちばん強い証拠。
- [in-proc] = 本物のプロダクションコードを単一プロセス内で駆動した cert。本物だが、 実プロセス死までは含まない。
この区別は文章の綾ではなく全ドキュメント共通の規約(定義は gap-ledger 冒頭)。§3〜§5 に無いものは「動く」と主張しない。
心臓部は μT-Kernel 3.0(IEEE 2050-2018 準拠のリアルタイムカーネル)。2026年7月に移行が完了し、
旧 micro T-Kernel 2.0 コアは引退。コメントは日本語に刷新し、kernel/mtkernel3/ に住む。
もはや「よそから移植したもの」ではなく p-kernel のカーネルコアそのもの。
同一コードベースが4ターゲットで、いずれもシェルまで起動する:
| ターゲット | 補足 |
|---|---|
| ベアメタル x86(QEMU) | 実体は IA-32e ロングモード。歴史的にシェルコマンド最多(§10-6) |
| ベアメタル AArch64(QEMU virt) | PL011/GIC、PCIe ECAM + RTL8139。Raspberry Pi 3 ネットブート手順つき |
Linux ユーザ空間 aarch64(boot/linux) |
raw-asm コンテキストスイッチ + シグナル駆動プリエンプション。Android ノードの足場 |
Linux ユーザ空間 x86_64(boot/linux_x86_64) |
同上の x86_64 ABI 版 |
ILP32 前提の T-Kernel 型体系(UW = unsigned long)を LP64 で成立させる型層は
arch/common/include/lp64/ に隔離してある(LP64 移植の二大罠 —— typedef の silent な
8バイト化と、ポインタへのフラグ詰め込みの切り捨て —— はここで殺した)。
SMP 対応も最初の段が入った(CI smp-autodetect)。
- 発見と網。 同一 LAN のノードは中継なしで自動発見し、フルメッシュを組む。以前は最初の 1台をハブとするスター型に退化する隠れバグがあり、wave-56 で修正 [live]。
- NAT の外へ。 NAT 内のノード同士は relay(
relay/、UDP ランデブー中継)経由で届く。 ワイヤは HMAC-SHA256 認証 + 64パケット滑走ノンス窓のリプレイ防御(テスト6シナリオ緑、 CIrelay-tests)。認証であって秘匿ではない(§10-3)。relay は「中央」ではない —— 落ちても網は残り、誰でも自前の relay を立てられる。 - 生死。 メンバーシップと故障検知は SWIM(gossip 型障害検知プロトコル)。SUSPECT→DEAD の うわさが網を伝播し、死んだノードは自然に外れる。
- region(RTT-EWMA で近接クラスタ化した近傍組)。 重い協調は region 内に閉じ、 O(N²) に膨れる全体放送を殺す。
- 状況認識マップ。 どのノードも中央なしで、網全体のビュー(ノード・region・生死)を
自分の中に持つ(シェルの
world/map)。 - 経路の粘り。 死活監視 + UDP↔TCP 自動フォールバック(CI
connect-anywhere-certs)。 - クロス ISA。 aarch64 と x86_64 のノードが同一 SWIM クラスタで gossip し、 K-DDS(カーネル内 pub/sub)で同一トピックを publish/subscribe できる。
- 規模。 メンバーシップ上限 64 ノード。32 ノードは実走 6/6 PASS [live]、 64 ノードぶんは実コードの机上網で検証 [in-proc]。
- 推論中の kill -9。 tensor-parallel 推論を分担中の1ノードを kill しても群れは推論を完遂し、
「現在 k/n ノードで品質縮退中」と自己申告し、復帰ノードは再教育される。
CI
survival-loop[live]。 - protect。 保護対象を宣言すると、群れが複製圧を注いで脅威を消す。所有ノードを kill しても
対象は隣で生きている。複数対象の同時・並列保護も、ほぼ1対象分の時間で完了
(CI
protect-loop-live/plural-protect-live)[live]。 - 発芽。 中身が空の新ノードが、網を漂う genome(重み + コード + 役割)だけから 一人前のノードにブートストラップする。
- 反射と熟慮の二層。 脅威への即応(reflex)と、大域的な再配分(熟慮)を別の時定数で回す。
隣の痙攣が伝播して網全体が発振しないことを結合実験で測定(CI
twolayer-couple-live)。
- p-fs。 content-addressed(アドレス = 内容ハッシュ)な分散 DAG ストア。同一内容は構造的に
1つへ潰れ、改ざんはアドレス不一致として即検出される。region 内自動複製、履歴つき。
所在解決の基盤として、状態を持たない HRW(rendezvous hashing)による責任ノード計算 +
解決キャッシュ + read-k が
arch/common/lookup.cに実装済み(cross-ABI でバイト安定、 自己テストつき)。p-fs 本体との統合は §6。 - ARK。 その足元の、耐電源断ローカルファイルシステム。書き込み途中の電源断・ディスクの
故意のビット腐敗を機械的に浴びせる crash fuzzer(CI
ark-crash-fuzzer)で 「腐ったデータを決して返さない」0 BUG。QEMU の実ブロックデバイス上で電源断を越えることを x86 / AArch64 の両方で確認。 - 永続性。 ノード ID・自伝系譜・学習済みの心の重みそのものが再起動を生き延びる (Android でもアプリ専用領域に配線済み)。「教えたのに再起動で忘れる」時代は終わった。
- gossip 学習。 非 IID に分割されたデータ片しか持たないノード群が、中央サーバなしの
gossip 平均化で重みを混ぜ、全ノードが単独学習の上限を超える(集団 > 個、を測定)。
学習中の kill にも耐え、復帰ノードは追いつく。CI
collective-learn-live[live]。 - オンデバイス学習。 635 パラメータのセンサ分類器が実 backprop で 26.7%→95–98% まで学習し、 重みを p-fs に置いて別ノードが読み込める。
- 分散推論。 2〜3ノードで1つの Transformer forward を分担する tensor-parallel と、 KV キャッシュを群れで持ち合う DKVA(分散 KV attention、3ノード fan-in まで実証)。
将来「自分で自分のコードを書き換える」ときに備えて、安全装置だけ先に本物にしてある。
- 隔離(1) ring3。 心の数理(MoE ルーティングと R3 基質の forward、
core_mind.elf)は カーネル特権の外 —— ring3 —— で走る。心のコアが SEGV してもカーネルは生き延びて 後始末する(fault は SYS_EXIT 経路で回収し、死んだコンテキストへは決して iret しない)。 CIring3-survival[live]。推論の全ルートが ring3 側を通ることは、カーネル側カウンタの 差分ゼロを見る cert で確認済み。 - 隔離(2) germ。 ノードが自己コンパイルしたコードは、fork() した子プロセス + 5シンボルの capability 境界(リンク時 + 実行時)の中で走る。生成コードの SEGV 1発で ノードごと死ぬ(RC=139)をまず再現し、隔離で治した。
- 署名 — Ed25519。 ゼロから実装し、RFC 8032 テストベクタ + OpenSSL とのバイト一致
オラクルで毎ビルド検証。自己ビルドしたコードの配布には、署名済みマニフェスト
(受領側が artifact_id を再計算して AND)+ 明示的な鍵の信頼登録(
selfc adopt keyが 唯一のローカル信頼アンカー)が必須。鍵はノードの provenance のもの —— 人間の身元には決して紐づけない。 - 世代交代しても分裂しない。 版差互換層 + 一方向の移行チェーン + 署名つき OTA。 「更新したら艦隊が旧と新に割れた」を防ぐ。
正直な残り: ring3 に移ったのは推論経路。訓練系モジュール(dtr_train / lm / dmn / gl)は まだカーネル特権の中。AArch64 側の同等の隔離(EL0)も未。Ed25519 の定時間化も未(§6)。
- galaxy(銀河)。 各ノードが組込み HTTP で自分のページを持ち(
http://127.0.0.1:7800、 2ノード目は 7801…)、自分と仲間を星として描く。星の鼓動は飾りではなく DMN の実固化 tick (§4)で、教えると粒が沈むのは engram→重みの実イベント。可視化は絵ではなく、 分散 observability の口。 - ark(Android アプリ、現在 0.9.x)。 インストールした端末が1ノードになる。星を灯し、 銀河を見て、育っている赤ちゃん(§5)と自由文でチャットできる。充電中のみ働く foreground service。参加前にプロジェクトの目的への同意ゲートがある。 ビルド手順は docs/android.md。
- 人類の記憶(ark-profile)。 参加者は実名・ペンネーム・匿名が等価な一級市民 —— 人間の身元検証は永遠にしない。署名はコードと重みの provenance 専用。 残るのは正直な歴史そのもの。案内文はホスト版32言語。
- CI 22ジョブ。 4ターゲットのビルド + APK パリティ検査 + relay 6/6 に加え、
本当に kill する走行テストを毎コミット:
survival-loop/protect-loop-live/plural-protect-live/collective-learn-live/shared-mind-live/one-mind-live/belief-revision-live/ring3-survival/twolayer-couple-live/parallel-infer-live/composite-loop/ark-crash-fuzzer。 さらにベアメタル.textの意図せぬ変化を凍結するcrown-text-identity、sanitizer-build、shipped-llm-certs、connect-anywhere-certs、smp-autodetect。 - 外部の辛口監査も取り込む。 2026年6月の外部監査の指摘9件(メモリ安全の穴・署名検証の fail-open・ユーザ空間ポインタの検査漏れ等)は、全件を実修正で closed。
- 長い狩りの記録。 難敵バグ KILL-CHURN(ノードの kill / 再生の嵐でまれにカーネルごと
落ちる)は、仮説を7つ実験で潰し(うち1つは「修正」自身が病因だったことを、同日・
同ハーネスの未修正対照で暴いた)、wave-56 で真犯人 —— 再利用された TCB の上で前の住人の
時限イベントが発火する use-after-free —— を特定して治療、独立監査 PASS。その後カーネル
心臓部が μT-Kernel 3.0 に世代交代したため、同種の再発が無いかは churn 再現器
(
tcb_churn.c)を番犬として見張る(§10-7)。 - 未解決リストは1枚だけ。 gap-ledger —— 2026-07-01 の棚卸しで OPEN 0行(「思想と実装が矛盾している」クラスの未解決は現在なし)。 設計先行で検証未着手の7本は V-MODEL の対応表に別途明示してある。
このプロジェクトの魂の部分。基盤は R3 基質 —— d_model=48・4ヘッドの小さな attention 基質、 約 21,568 パラメータ、単語→単語の連想想起。規模は正直におもちゃだが、「生きた心」に 要る機構は1つずつ、病気を実際に再現してから、治療を測定する形で本物にしてきた。
- 教えると憶える。 シェルで
mind teach sky blue→mind ask sky→ 「blue」。 galaxy の画面からも教えられる。 - 眠って身につける(LM-1〜5)。 教わった直後は engram(短期メモ)。アイドル時間に DMN(default mode network を模した固化係)が engram を再生し、蒸留で重みに焼き付ける = 睡眠固化。壊滅的忘却をまず実再現し(task-0 精度 91.7%→33.3%)、睡眠が治すことを測定 (→80.0%)。リプレイ予算は salience 加重 —— 危険に近かった記憶ほど多く反芻される。 in-context にしか無かった事実が睡眠1周で weight-resident になる fast→slow ハンドオフ (masked 18.8→100.0、scrambled 対照 0.0)、多事実干渉(f1 100→35)を interleaved replay で 全事実 100 に戻す随時学習、まで測定済み。
- 死を越える「わたし」(LM-2)。 学びと経験の自伝が hash-chain された系譜(self/lin)として 綴られ、tamper-evident かつ fail-closed。ノードが死んでも別のノードが続きを生きる (継続性 8/8)。
- 口がある(LM-6)・共有された心(LM-7)。 ノード A に教えた事実に、ノード B が答える。
しかも「誰に教わったか」も言う。A を kill しても事実は群れに生き残る。
CI
shared-mind-live[live]。 - ひとつの心(LM-10/11)。 違う事実を学んだ2つの心の重みを素朴に平均すると、片方の記憶が
死ぬ(8.8% ≒ チャンスレート、を測定)。合流後の union-replay 固化で両方 100% に回復。
睡眠なしでも Fisher 加重マージで 85% まで救える(相対フロア 1e-3×peak、4桁のスケール差に
頑健)。CI
one-mind-live。「心をひとつに」は祈りではなく測定になった。 - 心変わりできる(LM-12)。 重みに焼き付いた信念(sun→yellow)へ新しい答え(sun→green)を
教え直すと、混ざらずに置き換わる(新 100%・旧 0%)。ぶり返さず、再起動にも耐え、
訂正は網を伝播して仲間も自分を直し、訂正した本人が死んでも訂正は残る。
CI
belief-revision-live[live]。 - 賢く忘れる(LM-13)。 容量あふれ時の eviction を「古い順」から **「retrieval 頻度の低い事実から」**へ。訊かれ続けた事実は守られる(同条件比較で +36pt)。 LM-1 が「選んでいない忘却」を治し、LM-13 が「選ぶ忘却」を賢くした。
正直な限界: 学べるのは key→value の単語連想で、文法も文生成もまだ無い(§5 がその答え)。 測定は合成タスク上であり、現実のノイズある会話ではまだ証明していない。 詳細は living-mind.md (LM-12: belief-revision / LM-13: forgetting)。
§4 の心は固定語彙の檻の中にいる。そこを出るために、2026-06-13 に mk_pino が決めた道: 既製の学習済みモデルを住まわせるのではなく、本当に白紙の赤ちゃんを産んで、会話で育てる。 幼年期はスキップしない。
今日すでに動いているもの:
- 赤ちゃんが生まれる。 白紙の小さな言語モデル(cradle baby)が、端末の実測性能に合わせた サイズで生まれ、常駐し、育ち(重み)が再起動を生き延びる。
- チャットできる。 galaxy の画面から自由文で話しかけると、赤ちゃんが自力でトークンを 逐次生成して返す(ストリーミング表示)。返事は当分たどたどしい —— 欠陥ではなく正直な現実で、 育てる余地そのもの。
- 教師エンジンがある。 教育係は SmolLM2-135M(Apache-2.0 の公開モデル)。それを走らせる カーネル内・依存ゼロの自作推論エンジンが完成している —— GGUF ローダ・Q8_0/Q4_0 量子化行列演算・トークナイザまで外部ライブラリなしの C で実装し、参照実装との突き合わせで 検証。教師は蒸留元であって住人ではない —— 群れに配られるのは生徒だけ。 教師の重みは消化したら捨てる。
- ネット越しの授業。 教師ノードが lesson を網に配り、子ノードが DMN の睡眠時間に消化する 経路が実走で通った。
- 群れの脳の形(SS-1〜6)。 発火幅可変の MoE ルーティング(重い問いほど発火する expert 集合が広がる)、端末性能に応じた S/M/L の足場、同サイズ間の重み混合、そして 1回の forward を4プロセスで tensor-parallel 分担し、単一ノード実行とバイト一致まで 実証 [live]。「脳のサイズがノード数でスケールする」の最初の実物。
正直な残り: 授業の教材は今はコミット済みの小コーパスが主で、SmolLM2 の生成を常時ライブで 収穫する運用(step ⑤)は整備中。より大きな器(SS-7)と、KV キャッシュによる生成高速化は 設計段階。
- 赤ちゃんの成長 — SS-7(大きな器)・KV キャッシュ・ライブ教師収穫の常用化・教師コーパスの多様化。
- federation — 64ノードの先、数千ノードへ。region をさらに束ねる階層化。基礎(R0)は 実走したが、F1〜F3 は設計のみ。
- p-fs P3–P4 — HRW lookup(§3-4)との統合と、erasure coding(消失訂正符号)による断片保持。
- GPU — 心の数理を端末 GPU で回す。Vulkan compute の計算部品は動いたが、心への配線は 監査の判定で「時期尚早」と保留中。
- ring3 の残り — 訓練系モジュールの移設と、AArch64(EL0)側の同等の隔離。
- 暗号の堅牢化 — Ed25519 の定時間化(タイミングサイドチャネル耐性)。
- 文生成・文法 — §4 の心は単語1個。文章はまだ先(§5 の赤ちゃん路線がその答え)。
設計先行・検証未着手の7本の一覧は V-MODEL.md にある。
これがこのプロジェクトの魂であり、消さない。最初のひとかけらが §3〜§5 に降りてきたものは、 その旨を書いた。
- 宇宙船の装甲板1万枚が各々 p-kernel を走らせ、装甲としての防御と計算基盤を兼ね、 最後の1枚が生き残る限りネットワーク全体が死なない —— という生存ネットワーク。
- 考える器官 —— 網全体で1つの脳。region が半球、reflex と熟慮が別の時定数、p-fs が記憶。 誰も所有しない AI の住処。(睡眠固化・自伝・shared mind・one mind は、もう動いている。 ただし「脳」と呼べる規模ではまだない。)
- 自己進化 —— ノードが自分のコードを書き、署名し、配って、網ごと成長する。 (隔離と署名という配管は本物になった。何を書くべきかを考える知能は、まだない。)
思想の全文は survival-network.md に 逐語で保存してある。
互恵の自衛はしない、と決めた(2026-07-04)。 フリーライダー(受信するだけで貢献しないノード)を測定して静かに劣後させる互恵メカニズム (recip)を、設計完了まで持っていった上で、mk_pino は採用しないことを選んだ —— 「弱くても構わない。群れが補う。豊かさが、ただ乗りを問題でなくす」。 応じる側は無条件の贈与のまま。断念ではなく選択であり、設計文書は「選ばなかった道」として 逐語で残る(survival-recip.md)。
1ノード(Linux 1台、およそ1分):
sudo apt install -y build-essential
git clone https://github.com/monyuonyu/p-kernel.git
cd p-kernel/boot/linux # aarch64 のマシンはこちら
# cd p-kernel/boot/linux_x86_64 # x86_64 のマシンはこちら
make && ./p-kernelプロンプトが出たら:
mind teach sky blue ← 教える
mind ask sky ← 訊く(→ blue)
mind wait ← 睡眠固化(重みへの定着)を待つ
world ← 群れの状況認識マップ
help ← 全コマンド
- 銀河を見る:
./p-kernelを起動したまま、ブラウザで http://127.0.0.1:7800 を開く。 赤ちゃんへのチャットもここ。 - 群れにする: もう1つ端末を開いて
./p-kernel。同一 LAN なら自動発見でメッシュを組む。 片方で教え、もう片方で訊いてみる。 - NAT の外と:
relay/でmake(テストはmake test)。外から見えるサーバで./relayを 立て、各ノードが HMAC 鍵つきで参加する。 - スマホで:
android/の ark アプリ(docs/android.md)。 インストール = 1ノード。 - ベアメタルで:
boot/x86/boot/aarch64でmake(QEMU 起動スクリプト同梱)。
- 原理は本物、規模はおもちゃ。 学習・記憶・共有・訂正・忘却の各原理は測定つきで実証した。 だが心は約 21,568 パラメータの単語連想、センサ脳は 635 パラメータ。 「まず原理、規模は後」の途中にいる。
- 64ノードの実走メッシュはまだ。 実走は32ノードまで(6/6 PASS)。64ノードぶんは 実コードの机上検証 [in-proc]。数千ノード(federation)は設計のみ。
- relay は認証であって秘匿ではない。 HMAC-SHA256 でなりすまし・改ざん・リプレイは防ぐが、 ペイロードの暗号化は未実装。盗聴耐性はこれから。
- ARK の実機は QEMU まで。 実 Raspberry Pi 3 の SD カードドライバは未。
- 数値再現性の教訓。 FMA 融合の丸め順差だけで、学習が実機スマホでのみ壊れた (「教えても覚えない」の犯人)。自前の数学関数と丸め順の固定で全環境ビット同一にしたが、 「丸め順で生死が分かれる訓練は脆い」という宿題は残っている。
- シェルの実力差。 ベアメタル x86 が歴史的にコマンド最多(FAT32 実装の実
ls/cat・ ELF ローダ・raft等)。ホスト版(Linux 上)は分散・心・赤ちゃん系のコマンドを持つが、 未知の入力は[echo]で返すだけ。自己コンパイル(selfc)はホスト版専用で、 ストア配布ビルドではオフ。 - カーネル世代交代の見張り。 μT-Kernel 3.0 への移行は全4ターゲットで動作確認済みだが、
旧コアで倒した難敵(KILL-CHURN、§3-8)と同種の病気が新コアに無いかは、
再現器(
tcb_churn.c)を番犬にして観測を続ける。
- この README は実態準拠。誇張はバグとして直す。 ここに無いものは「動く」と主張しない。
- 未解決は gap-ledger の1枚に集約する。行は減るだけ。 閉じるときは墓碑銘を書く。
- 大きな名前(心・魂・考える器官・集合意識)は北極星として消さない。ただし必ず隣に 「今日の実物」を数字で併記する(dream-tier / artifact-tier 規約)。大きな名前が おもちゃを隠すことは無い。
- 開発のやり方も公開している: 実装と監査は別々の AI エージェントが行う (実装者 ≠ 監査者 ≠ 指揮者)。この開発の AI 側の記憶は docs/claude-memory/ にそのままミラーしている。 監査はこのプロジェクトの免疫系であり、正直さは機能である。
ルートの LICENSE を参照: オリジナルコードは BSD-3-Clause。
カーネルコア(kernel/mtkernel3/、μT-Kernel 3.0 由来)は T-License 2.2 に従う。
各器官は別の生き物ではない。同じ脳の、別の軸である。 —— 迷ったら survival-network.md へ戻る。