Tirami — distributed LLM inference where compute is currency. 1 TRM = 10^9 FLOPs. 21B supply cap, yield halving, staking, collusion resistance. 100% Rust, OpenAI-compatible, no token, no ICO. "tira mi su" = pull me up.
See the codeTirami は、ローカル LLM サーバーに計算資源の貸し借りを組み込んだ分散推論プロトコルです。
手元のマシンで推論を動かしつつ、モデルが載らないときは他のノードに依頼できます。 依頼した分は借りになり、他のノードの推論を引き受ければ返せます。 貸し借りの単位は FLOP で、1 TRM = 10⁹ FLOP として数えます。
💡 まずは 1 台で試せます。
tirami startだけで OpenAI 互換 API が立ち上がります。 経済機能は使わなければ意識する必要はありません。
ローカル LLM を選ぶ理由は、だいたい次の4つに集約されます。
ここまでは Ollama や LM Studio が既に解いています。
Tirami が解くのはその次にある壁です。 32B を Q4 で動かすのに約 20GB、70B で約 40GB、 100B+ の MoE で 50GB 以上のメモリが要ります。多くの人の手元にその機械はありません。 データセンタを建てるか、小さいモデルで我慢するかの二択になります。
Tirami はこの壁を、機械を買うのではなく融通し合うことで越えます。
Ollama は「ローカルでモデルを動かす」を解きました。 Tirami が解くのは「手元に載らないモデルを、データセンタなしで動かす」です。
設計思想の全体は docs/pmvv.md にまとめています。
「休眠している PC を束ねて大きいモデルを動かす」は段階 2 以降の話です。 今日動くのは段階 1 です。
| 段階 | 内容 | 状態 | 制約 |
|---|---|---|---|
| 1 | 他ノードへ推論を依頼(転送) | ✅ 動作中 | 提供者側にモデルが載っている必要があります。プロンプトは提供者に平文で見えます |
| 2 | LAN / Thunderbolt で複数台のメモリを束ねる | 🚧 開発中(#162 / #163) | 低 RTT のリンクが前提です |
| 3 | 広域でのメモリプール | 🔬 研究中 | 重み転送が RTT 律速になります(#164 実測) |
実機測定(Mac mini M4 Pro ⟷ Mac Studio M4 Max)で分かったのは、 推論そのものは RTT にほとんど影響されない一方、重みの転送は RTT に比例して破綻することです。 RTT が 9.2 倍になっても生成速度の低下は 1.36 倍ですが、17 GiB の重み転送は Thunderbolt の 139 秒に対し有線 LAN で 867 秒かかりました。
つまり広域で成立するのは「モデルを持っている人に頼む」であって、 「レイヤーを分けて配る」ではありません。段階 3 が研究中なのはこのためです。
Tirami が提供するのはプライバシーそのものではなく、トラストバウンダリの選択権です。
段階 1 で他ノードに依頼すると、プロンプトは実行するノードに平文で見えます。
ここは隠しません(docs/faq.md 参照)。
価値は、選択肢が 1 つしかない状態から抜けられることです。 自分の機械で完結させる / 信頼できる相手を指名する / 匿名のピアに投げる、を用途ごとに選べます。 暗号化したまま他人に推論させる仕組み(zkML・TEE)はまだ先の段階です。
x_tirami フィールドが付き、その推論に何 TRM かかったかが分かります。git clone https://github.com/clearclown/tirami
cd tirami
cargo build --release
GPU を使う場合はビルド時に選びます。
cargo build --release -p tirami-cli --features tirami-infer/cuda # NVIDIA
cargo build --release -p tirami-cli --features tirami-infer/metal # Apple Silicon
macOS では feature なしでも Metal が有効になります(llama-cpp-sys-2 のビルドスクリプトによる)。
詳細は docs/operator-guide.md をご覧ください。
./target/release/tirami start
モデルの取得、鍵の生成、API の起動まで自動で行われます。
$ curl -s localhost:3000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"qwen2.5:1.5b","messages":[{"role":"user","content":"こんにちは"}]}' \
| jq '{content: .choices[0].message.content, x_tirami}'
{
"content": "こんにちは!何かお手伝いできることはありますか?",
"x_tirami": {
"trm_cost": 47,
"effective_balance": 953
}
}
利用できるモデルは smollm2:135m qwen2.5:0.5b(既定)1.5b 3b 7b 14b 32b です。
任意の GGUF もローカルパス・HuggingFace URL・org/repo/file.gguf の形式で指定できます。
モデルを持つ側(提供者)は、起動時に自分の公開鍵を表示します。
$ ./target/release/tirami start --model qwen2.5:32b
Node ID: 3f8a1c4e...9e2b
借りる側はその公開鍵を指定するだけです。
./target/release/tirami start --bootstrap-peer 3f8a1c4e...9e2b
手元に 32B のモデルが無くても API は同じように使えます。 推論は提供者側で実行され、生成されたトークン量に応じた TRM が双方の署名付きで記録されます。
新規ノードには 1,000 TRM の無利子ローン(72 時間)が付きます。 提供者として継続的に稼ぐには一定額のステークが必要です(Sybil 対策)。
詳しい運用は docs/operator-guide.md をご覧ください。
MockBackend のみです。その他の実装状況は docs/release-readiness.md に整理しています。
crates/
├── tirami-cli CLI
├── tirami-node ノード本体・HTTP API・P2P パイプライン
├── tirami-net iroh QUIC・discovery・クラスタ
├── tirami-proto ワイヤプロトコル
├── tirami-infer llama.cpp 推論エンジン
├── tirami-ledger 台帳・ステーク・価格・ガバナンス
├── tirami-shard レイヤー分割の計画
└── tirami-sdk Rust クライアント SDK
flowchart LR
A["消費者"] -->|"① 推論を依頼"| B["提供者"]
B -->|"② トークンを返す"| A
A -->|"③ 双方が署名した取引記録"| B
B -.->|"④ ゴシップで伝播"| C["周辺ノード<br/>評判・価格形成"]
アーキテクチャの詳細は docs/architecture.md、
経済モデルの設計は docs/whitepaper.md をご覧ください。
Issue や Pull Request を歓迎しています。以下のような報告はとくに助かります。
開発の手引きは AGENTS.md、セキュリティに関する報告方法は SECURITY.md にまとめています。
過去に11言語の翻訳がありますが、いずれも Phase 19 時点の内容で更新が止まっています。
docs/translations/ にありますが、最新は本ファイルです。
推論基盤は mesh-llm(Michael Neale 氏が開始し、現在は Mesh-LLM organization で保守)に由来します。 Tirami はその上に経済層を実装したものです。詳細は CREDITS.md をご覧ください。
MIT License
188 commits
4 commits
Rust
96.4%
Python
2.1%
Shell
1.4%
Tirami — distributed LLM inference where compute is currency. 1 TRM = 10^9 FLOPs. 21B supply cap, yield halving, staking, collusion resistance. 100% Rust, OpenAI-compatible, no token, no ICO. "tira mi su" = pull me up.
See the codeTirami は、ローカル LLM サーバーに計算資源の貸し借りを組み込んだ分散推論プロトコルです。
手元のマシンで推論を動かしつつ、モデルが載らないときは他のノードに依頼できます。 依頼した分は借りになり、他のノードの推論を引き受ければ返せます。 貸し借りの単位は FLOP で、1 TRM = 10⁹ FLOP として数えます。
💡 まずは 1 台で試せます。
tirami startだけで OpenAI 互換 API が立ち上がります。 経済機能は使わなければ意識する必要はありません。
ローカル LLM を選ぶ理由は、だいたい次の4つに集約されます。
ここまでは Ollama や LM Studio が既に解いています。
Tirami が解くのはその次にある壁です。 32B を Q4 で動かすのに約 20GB、70B で約 40GB、 100B+ の MoE で 50GB 以上のメモリが要ります。多くの人の手元にその機械はありません。 データセンタを建てるか、小さいモデルで我慢するかの二択になります。
Tirami はこの壁を、機械を買うのではなく融通し合うことで越えます。
Ollama は「ローカルでモデルを動かす」を解きました。 Tirami が解くのは「手元に載らないモデルを、データセンタなしで動かす」です。
設計思想の全体は docs/pmvv.md にまとめています。
「休眠している PC を束ねて大きいモデルを動かす」は段階 2 以降の話です。 今日動くのは段階 1 です。
| 段階 | 内容 | 状態 | 制約 |
|---|---|---|---|
| 1 | 他ノードへ推論を依頼(転送) | ✅ 動作中 | 提供者側にモデルが載っている必要があります。プロンプトは提供者に平文で見えます |
| 2 | LAN / Thunderbolt で複数台のメモリを束ねる | 🚧 開発中(#162 / #163) | 低 RTT のリンクが前提です |
| 3 | 広域でのメモリプール | 🔬 研究中 | 重み転送が RTT 律速になります(#164 実測) |
実機測定(Mac mini M4 Pro ⟷ Mac Studio M4 Max)で分かったのは、 推論そのものは RTT にほとんど影響されない一方、重みの転送は RTT に比例して破綻することです。 RTT が 9.2 倍になっても生成速度の低下は 1.36 倍ですが、17 GiB の重み転送は Thunderbolt の 139 秒に対し有線 LAN で 867 秒かかりました。
つまり広域で成立するのは「モデルを持っている人に頼む」であって、 「レイヤーを分けて配る」ではありません。段階 3 が研究中なのはこのためです。
Tirami が提供するのはプライバシーそのものではなく、トラストバウンダリの選択権です。
段階 1 で他ノードに依頼すると、プロンプトは実行するノードに平文で見えます。
ここは隠しません(docs/faq.md 参照)。
価値は、選択肢が 1 つしかない状態から抜けられることです。 自分の機械で完結させる / 信頼できる相手を指名する / 匿名のピアに投げる、を用途ごとに選べます。 暗号化したまま他人に推論させる仕組み(zkML・TEE)はまだ先の段階です。
x_tirami フィールドが付き、その推論に何 TRM かかったかが分かります。git clone https://github.com/clearclown/tirami
cd tirami
cargo build --release
GPU を使う場合はビルド時に選びます。
cargo build --release -p tirami-cli --features tirami-infer/cuda # NVIDIA
cargo build --release -p tirami-cli --features tirami-infer/metal # Apple Silicon
macOS では feature なしでも Metal が有効になります(llama-cpp-sys-2 のビルドスクリプトによる)。
詳細は docs/operator-guide.md をご覧ください。
./target/release/tirami start
モデルの取得、鍵の生成、API の起動まで自動で行われます。
$ curl -s localhost:3000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"qwen2.5:1.5b","messages":[{"role":"user","content":"こんにちは"}]}' \
| jq '{content: .choices[0].message.content, x_tirami}'
{
"content": "こんにちは!何かお手伝いできることはありますか?",
"x_tirami": {
"trm_cost": 47,
"effective_balance": 953
}
}
利用できるモデルは smollm2:135m qwen2.5:0.5b(既定)1.5b 3b 7b 14b 32b です。
任意の GGUF もローカルパス・HuggingFace URL・org/repo/file.gguf の形式で指定できます。
モデルを持つ側(提供者)は、起動時に自分の公開鍵を表示します。
$ ./target/release/tirami start --model qwen2.5:32b
Node ID: 3f8a1c4e...9e2b
借りる側はその公開鍵を指定するだけです。
./target/release/tirami start --bootstrap-peer 3f8a1c4e...9e2b
手元に 32B のモデルが無くても API は同じように使えます。 推論は提供者側で実行され、生成されたトークン量に応じた TRM が双方の署名付きで記録されます。
新規ノードには 1,000 TRM の無利子ローン(72 時間)が付きます。 提供者として継続的に稼ぐには一定額のステークが必要です(Sybil 対策)。
詳しい運用は docs/operator-guide.md をご覧ください。
MockBackend のみです。その他の実装状況は docs/release-readiness.md に整理しています。
crates/
├── tirami-cli CLI
├── tirami-node ノード本体・HTTP API・P2P パイプライン
├── tirami-net iroh QUIC・discovery・クラスタ
├── tirami-proto ワイヤプロトコル
├── tirami-infer llama.cpp 推論エンジン
├── tirami-ledger 台帳・ステーク・価格・ガバナンス
├── tirami-shard レイヤー分割の計画
└── tirami-sdk Rust クライアント SDK
flowchart LR
A["消費者"] -->|"① 推論を依頼"| B["提供者"]
B -->|"② トークンを返す"| A
A -->|"③ 双方が署名した取引記録"| B
B -.->|"④ ゴシップで伝播"| C["周辺ノード<br/>評判・価格形成"]
アーキテクチャの詳細は docs/architecture.md、
経済モデルの設計は docs/whitepaper.md をご覧ください。
Issue や Pull Request を歓迎しています。以下のような報告はとくに助かります。
開発の手引きは AGENTS.md、セキュリティに関する報告方法は SECURITY.md にまとめています。
過去に11言語の翻訳がありますが、いずれも Phase 19 時点の内容で更新が止まっています。
docs/translations/ にありますが、最新は本ファイルです。
推論基盤は mesh-llm(Michael Neale 氏が開始し、現在は Mesh-LLM organization で保守)に由来します。 Tirami はその上に経済層を実装したものです。詳細は CREDITS.md をご覧ください。
MIT License
188 commits
4 commits
Rust
96.4%
Python
2.1%
Shell
1.4%