AIを前提とするOS。
⚠️ 実験的プロジェクト。 本プロジェクトは初期研究段階にあり、本番環境での使用は推奨されません。 API、設定形式、アーキテクチャは予告なく変更される場合があります。コントリビューションや大胆なアイデアを歓迎します。
今日存在するすべてのオペレーティングシステムは、大規模言語モデルが登場する前に設計されました。 Linuxは人間が操作するために設計されました。openSystemはAIが操作するために設計されています—— そして人間が指示する。
openSystemはLinuxディストリビューションではありません。研究プロトタイプでもありません。 これは明確な賭けです:5年以内に、あらゆる意味のあるOS操作がAIによって仲介されるでしょう。 私たちはその前提から出発したOSを構築しています。50年のPOSIXレガシーの上にAIを乗せるのではなく。
あなたが以下を信じるなら、このプロジェクトはあなたを怒らせるでしょう:
- 決定論的システムは常に確率的システムより安全だ
- ユーザーはOSが何をしているか理解すべきだ
- POSIX互換性は制約ではなく機能だ
あなたが以下を信じるなら、このプロジェクトはあなたのためにあります:
- 1970年代のシェルの比喩はとっくに役目を終えている
- AI推論はシステムコールパスに組み込むほど安価になっている
- あなたがこれまで使った中で最高のOSはまだ構築されていない
一言話しかけるだけで、30秒以内に動くアプリが手に入ります。
何が起きたか: 自然言語 → LLMがRust/WASMコードを生成 → コンパイル → Ed25519署名済み.ospパッケージ → インストール → wasmtimeサンドボックスで実行。パッケージマネージャー不要。アプリストアの審査不要。既存のバイナリ不要。
| 機能 | 状態 | 実装 |
|---|---|---|
| 自然言語 → アプリ作成 | ✅ 動作中 | os-agent 意図パイプライン + LLM コード生成 |
| WASM サンドボックス実行 | ✅ 動作中 | wasmtime / WASIp1、MemoryOutputPipe 出力キャプチャ |
| App Store インストール/検索 | ✅ 動作中 | SQLite レジストリ + Ed25519署名 .osp パッケージ |
| パッケージ署名検証 | ✅ 動作中 | OspPackage::verify_signature + E2Eテスト |
| ソフトウェア GUI レンダリング | ✅ 動作中 | tiny-skia 0.12 + fontdue 0.9 ピクセルラスタライザー |
| UIDL → ECS コンポーネントツリー | ✅ 動作中 | build_ecs_tree() ヒットテスト・レイアウトエンジン付き |
| UIイベント → WASM コールバック | ✅ 動作中 | EventBridge 双方向チャネル |
| AI生成GUIレイアウト | ✅ 動作中 | UIDL_GEN_SYSTEM_PROMPT few-shotスキーマ |
| AIドリブンリソーススケジューリング | ✅ 動作中 | eBPFプローブ + cgroup v2 + LLM決定ループ |
| Timerシスコール(interval/clear) | ✅ 動作中 | pollingモデル、ノンブロッキングdetach |
| デスクトップ通知 | ✅ 動作中 | notify_send + fallback実装 |
| Storageアプリ分離 | ✅ 動作中 | 分離検証テスト |
| GPUアクセラレーションレンダリング | 🔜 v0.6.0 | Bevy + wgpu(ECSツリー接続待ち) |
| WASM実行時間制限 | 🔜 v0.6.0 | epochインタラプトCPUバジェット |
メトリクス: 392テスト · clippyワーニング0 · カバレッジ80%
graph TB
subgraph User["ユーザーインタラクション層"]
NL["自然言語ターミナル"]
WebUI["Web UI"]
Voice["音声(whisper.cpp)"]
end
subgraph Agent["os-agent デーモン"]
Intent["意図分類器"]
CodeGen["LLM コード生成"]
UIGen["UIDL ジェネレーター"]
AppStore["App Store クライアント"]
end
subgraph Runtime["アプリランタイム"]
Wasm["wasmtime サンドボックス\n(WASIp1)"]
GUI["GUI レンダラー\n(tiny-skia + ECS)"]
SysBus["システムサービスバス\n(os-syscall-bindings)"]
end
subgraph AI["AI ランタイム層"]
LLM["リモート LLM API\n(OpenAI互換 / Anthropic)"]
end
subgraph Sched["リソーススケジューリング"]
eBPF["eBPF CPU/IO プローブ"]
CGroup["cgroup v2 コントロール"]
AILoop["AI 決定ループ"]
end
subgraph Kernel["Linux 6.x カーネル"]
SchedExt["sched_ext"]
IoUring["io_uring"]
KMS["KMS/DRM"]
end
NL --> Intent
WebUI --> Intent
Voice --> Intent
Intent --> CodeGen
Intent --> UIGen
CodeGen --> LLM
UIGen --> LLM
CodeGen --> Wasm
UIGen --> GUI
GUI --> SysBus
Wasm --> SysBus
AppStore --> Intent
eBPF --> AILoop
AILoop --> CGroup
SysBus --> Kernel
CGroup --> Kernel
sequenceDiagram
participant U as ユーザー
participant A as os-agent
participant L as LLM API
participant W as wasmtime
U->>A: "ポモドーロタイマーを作って"
A->>A: 分類 → CreateApp
A->>L: Rust/WASM + UIDL を並行生成
L-->>A: app.wasm + uidl.json
A->>A: cargo check → .osp パック → Ed25519 署名
A-->>U: ✓ アプリインストール完了 (UUID: 3f8a1c2d-...)
U->>A: "ポモドーロを実行して"
A->>A: 分類 → RunApp
A->>W: サンドボックスで app.wasm を実行
W-->>U: ポモドーロタイマーを開始しました。25分間集中してください。
- Rust 1.75+
wasm32-wasip1Rustターゲット:rustup target add wasm32-wasip1- Python 3.10+(rom-builderスクリプト用)
- QEMU(テスト用)
- リモートLLM APIエンドポイント(OpenAI互換またはAnthropicネイティブ)
git clone https://github.com/soolaugust/openSystem
cd openSystem
cargo build --workspace
cargo test --workspace # 392テスト、全パス# システムイメージをビルド
python3 rom-builder/build.py --manifest hardware_manifest_qemu.json
# ヘッドレス(シリアルコンソール)
qemu-system-x86_64 \
-hda system.img -m 8G -smp 4 -enable-kvm \
-device virtio-net-pci,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::8080-:8080 \
-nographic
# GUIセッション
qemu-system-x86_64 \
-hda system.img -m 8G -smp 4 -enable-kvm \
-device virtio-gpu -device virtio-keyboard-pci -device virtio-mouse-pci \
-device virtio-net-pci,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::8080-:8080初回起動時、セットアップウィザードが対話形式でモデル設定を案内します。
再設定:opensystem-setup
設定ファイル /etc/os-agent/model.conf:
[api]
base_url = "https://api.deepseek.com/v1" # OpenAI互換エンドポイントであれば何でも可
api_key = "<your-api-key>"
model = "deepseek-chat"
# api_format = "anthropic" # Anthropicネイティブ形式の場合はコメントを外す
[network]
timeout_ms = 10000
retry_count = 3
[fallback] # 任意:フォールバックエンドポイント
base_url = "https://api.anthropic.com/v1"
api_key = "<your-api-key>"
model = "claude-sonnet-4-6"| フォーマット | api_format の値 |
認証ヘッダー | 対応プロバイダー例 |
|---|---|---|---|
| OpenAI互換(デフォルト) | "openai" または省略 |
Authorization: Bearer |
DeepSeek、Qwen、vLLM、OpenAI |
| Anthropicネイティブ | "anthropic" |
x-api-key |
Claude (api.anthropic.com) |
URLに
"anthropic"が含まれる場合、Anthropicフォーマットとして自動検出されます。
| クレート | 説明 | テスト数 |
|---|---|---|
os-agent |
コアデーモン:NLターミナル、意図分類、アプリ生成、WASMランナー | 59 |
gui-renderer |
UIDLレイアウトエンジン、ソフトウェアラスタライザー、ECSツリー、イベントブリッジ | 64 |
app-store |
Ed25519署名 .osp レジストリ、HTTP API、osctl CLI |
48 |
resource-scheduler |
AIドリブン cgroup v2 管理、eBPF CPU/IO プローブ | — |
rom-builder |
ハードウェアマニフェストリゾルバー、QEMUボードサポート、ディスクイメージパッケージング | — |
os-syscall-bindings |
WASI syscall API、メモリセーフIPC、タイマー管理 | 58 |
openSystemはv1においてLinuxをハードウェア抽象化レイヤーとして使用しながら、独自カーネルを並行開発しています。 ハードウェアサポートについてLinuxを参考にし、30年分のドライバー開発に感謝します。 しかし私たちのプロセスモデルはPOSIXではなく、私たちのシェルはシェルではありません。 Linuxの互換性が必要な場合:このプロジェクトをフォークして互換レイヤーを構築してください——リンクはしますが、マージはしません。
システムコールパスにおけるAIについて:
「AI推論は遅すぎないか?」— 今はそうです。私たちは推論レイテンシが1000msではなく10msの世界に向けて最適化しています。
ネットワーク依存について:
オフラインモードは目標ではありません。これはiPhoneがiCloudについて下したのと同じ決断です。
POSIXについて:
openSystemではソフトウェアはオンデマンドで生成されます。POSIX互換性は、ストリーミングサービスにVHSサポートを要求するようなものです。
openSystemは活発に開発中です。以下の分野でのコントリビューションを歓迎します:
- GPUレンダリング — ECSツリーをBevy + wgpuに接続(
gui-renderer/src/bevy_renderer.rs) - WASM host functions —
net_http_get、storage分離、syscallバインディング実装(os-agent/src/wasm_runtime.rs) - テストカバレッジ — 現在80%、目標90%+(issueを見る)
- 音声インターフェース — whisper.cppの統合はスタブ済み、実装が必要
- 大胆なアイデア — AIのためのOSが面白いと思うなら、issueを開いてください
cargo test --workspace # 全テスト実行
cargo clippy --workspace -- -D warnings # ゼロワーニングポリシーMIT