Nostrの週刊ガイド、Nostr Compassへようこそ。

今週: SproutはBuzzへ改名し、persona、team、managed agentの記録をNostr relay eventとして公開し始めました。従来のbadge frontierモデルは、デバイス間の既読状態とメッセージごとの既読マーカーに置き換わります。sandwich.farmのNappletsは、NostrとBlossom上で配布される組み合わせ可能なNostrアプリのためのtrust boundary protocolとして登場します。Conduit(購入者向けMarket、Merchant Portal、Store BuilderからなるNostr上の3アプリ構成のmarketplace monorepoで、独自のNIPおよび仕様ディレクトリをリポジトリ内に持つ)は、marketplace MVPを強化する17件のPRをマージし、デフォルトを公開relayへ切り替え、プライバシーに配慮した分析機能を追加しました。BitBlikは、暗号化されたNostr DM上で動くP2PのBLIK・Lightning交換protocolを出荷し、coordinatorが法定通貨とLightning hold invoiceの間をアトミックに決済します。Amethystは、先週のwallet、podcast、workoutを含むローンチに続き、Health Connect Workouts、Road Events、折りたたみ可能な返信、分類器付きrelay遅延ヘルス追跡、macOS公証の修正を追加しました。Amberは先週提案されたNIP-46 client metadata拡張を実装し、signerのリクエスト画面にネイティブアプリのアイコンとidentityを表示します。HavenはMarmot暗号化メッセージングprotocol上で非公開の位置共有を開始しました。CodeDeckは暗号化Nostr relayを通じ、スマートフォンからノートPC上のClaude Codeセッションを操作可能にし、pairingを1回のQRスキャンへまとめ、さらにセッションごとのモデル選択を追加しました。Grainはoutbox modelを実装したimport可能なGo Nostr client libraryを出荷します。Mostro Core、WispとDark Wisp、Citrine、FIPS、Kubo(保護者が選ぶYouTubeチャンネルと必須のtrust-gated子ども向けfeed)、Pollerama(web-of-trustスコア、端末内relay engine、「知り合いかもしれない人」欄)は後続patchを出荷しました。未リリースの作業では、sandwich.farmのブラウザベースMLS coordinator、nostterのUX改善スプリント、Zap Cookingのプロジェクト横断NIP-46修正とcomposer刷新、ShopstrのCashu escrow lifecycle、divine.video、Nosturを扱います。新たな追跡対象はSocial Agents Prototype、git-over-Nostr issueをtriageするPRana、routstr-chatです。protocol面では、NIP-99にon-graph checkoutおよびescrowの提案が加わり、Conduit、BitBlik、Shopstrのcommerce作業と直接つながります。6月最後のCompassとなるため、本号は「Nostrの6年間の6月」で締めくくります。


トップストーリー

Amethyst v1.12.1からv1.12.6がv1.12.0ローンチをフォローアップ

Amethystは先週のv1.12.0ローンチに続き、水曜日から金曜日までに6件のpatchを相次いで公開しました。v1.12.1はHealth Connect Workoutsと画像として共有する操作を追加し、TorのActiveフラグを決定論的にしてbootstrap callbackがgateと競合しないようにします。v1.12.2はRoad Eventsと折りたたみ可能な返信を追加し、v1.12.3は分類器およびdashboard UIを備えたrelay遅延ヘルス追跡とmacOS公証の修正を導入しました。v1.12.4からv1.12.6まではCrowdin翻訳更新と翻訳者クレジットの自動化を出荷します。

SproutはBuzzへ改名しpersona、team、managed agentをrelay eventとして公開

Sproutは、Blockが開発するself-host可能なworkspaceです。人間とAI agentが同じchannelで協働し、すべてのメッセージ、reaction、workflow step、review承認、git eventが署名済みNostr eventとして記録されます。このプロジェクトは今週、Buzzへ改名されました。GitHubは旧block/sprout slugをblock/buzzへredirectするようになりましたが、リポジトリ、ライセンス、製品方針は変わりません。過去号のSproutに関する記事はすべて同じプロジェクトを指します。

改名とともに、大規模な製品作業もマージされました。PR #1189によりpersona、team、managed agentの記録がNostr relay eventとして公開され、状態を複製せずに同じagent identityを複数のworkspaceとaudit logへ表示できます。新しいdesktop paneはprofileにNIP-OA owner attestationを表示し(PR #1198)、channel threadの未読badge frontierをメッセージごとの既読マーカーへ置き換えて、デバイス間で未読数を正確に保ちます(PR #1178)。inboxではreminder eventに著者とsourceの帰属情報が加わりました(PR #1176)。

一時channelの有効期限はデフォルトで7日になり(PR #1182)、agentごとのrelay overrideはworkspaceのデフォルトへfallbackする前に設定済みrelayを優先します(PR #1131)。Windows buildにはshell tool用の完全なGit for Windows toolchainが同梱されるようになりました(PR #1145)。

Napplets: 明確なtrust boundaryを持つ組み合わせ可能なNostrアプリ

Sandwich.farmは今週、組み合わせ可能なNostr applet、すなわちnappletのprotocolとしてnapplet.runを発表しました。nappletは1つのことを行う小さなprogramで、sandbox環境で実行され、nsiteと同じevent形式を使ってNostrとBlossom上から解決されます。プロジェクトは3つのリポジトリにまたがります。napplet/webはweb packageを収め、今週の一斉ローンチで51件のsubpackage version tag(@napplet/core、@napplet/sdk、@napplet/nap、@napplet/shim、@napplet/conformance)を切りました。napplet/napsは15件のPRがマージされたNAP仕様群、kehto/webは41件のPRがマージされたweb runtimeで、kehto.github.io/web/playgroundにplaygroundがあります。対応する仕様PRはdskvr(sandwich.farm)が提出したNIP-5D #2303です。

設計上の前提はprotocol層で定義されるtrust boundaryです。shellは署名、鍵へのアクセス、relayへの書き込みといった危険な操作を仲介し、runtimeは実装と上位UXを処理するため、nappletは可搬で使い捨て可能なまま、単一hostに囲い込まれにくくなります。napplet同士は同じshellを通じて通信でき、設計上runtimeへのlock-inはありません。著者はnappletをNMP(Pablof7z)およびTiles(Soapbox)と同じ問題への並行した取り組みとして位置づけ、Amethyst v1.12.6のNIP-5AとNIP-5Dサポートにより、ローンチ時点で少なくとも1つの実稼働clientがあると述べています。歴史的経緯として、sandwich.farmの以前のnapp.run(NIP-07 native app prototype)とThorium forkのdryft browserが、棚上げされる前に現在の設計へ影響を与えました。

Conduitがmarketplace MVPを強化しデフォルトを公開relayへ変更

ConduitはConduit-BTC組織がconduit.marketで提供する3アプリ構成のmarketplace monorepoです。購入者向けMarket、Merchant Portal、Store Builderを含み、リポジトリ内のnips/とspecs/ディレクトリでConduit固有のNostr commerce primitiveを定義します。下層ではConduit-BTC/conduit-relayというScope-2 khatru拡張が動作します。両リポジトリは今年初めに公開され、今週はmarketplace MVPを強化する17件のPRがマージされました。

出荷されたPRはmarketplaceの正確性に集中しています。出品の安全状態(PR #110)とmerchant側の商品価格および配送zoneの強化(PR #115)です。relay側では、PR #102がcommerce capabilityの検出を修正し、PR #112が第三者の安全でないrelay hintを無視し、PR #128が新規clientのデフォルトを公開Conduit relay domainに設定します。プライバシーに配慮した分析機能はPR #109とPR #129で導入され、dompurifyの更新はOSV advisoryを解消します(PR #116)。これらは今週のより大きなNIP-99 commerceの動きに含まれます。PR #2323はorder flow、escrow、disputeを扱うNIP-99 market向けon-graph checkout layerを提案し、NIP-99を完全なe-commerceへ拡張してきたGamma Markets Market SpecはConduitなどが構築する仕様層となり、Shopstrも同じ週にCashu escrow lifecycleを出荷しました。

BitBlikがNostr上のP2P BLIK・Lightning交換protocolをローンチ

BitBlikは今週、Nostr上に構築されたP2PのBLIK ↔ Lightning交換protocolとして公開されました。BLIKはポーランドの銀行が発行する即時決済方式です。BitBlik coordinatorはtakerが支払うBLIK法定通貨とmakerが資金を提供するLightning hold invoiceの間をアトミックに決済し、取引のlifecycleはNostr上で進みます。Flutter app、CLI、coordinatorはcore packageを共有し、GitHub monorepoのbit-blik/bitblik、www.bitblik.appのweb build、Zapstore appのapp.bitblikを通じて提供されます。

protocolはclientとcoordinator間のRPCに暗号化されたNostr DM(NIP-44)を使います。offerはkind 38383のparameterized replaceable event、RPC requestはkind 25195、RPC responseはkind 25196、status updateはkind 25197として公開されます。coordinatorはtakerがBLIK codeを送信する間Lightning hold invoiceを保持し、BLIK送金が確認されるとpreimageを解放し、invoiceの決済をmakerへ送ります。


タグ付きリリース

Amber v6.2.2がNIP-46 client metadataを実装

Amberはgreenart7c3が保守する主要なAndroid向けNIP-46 remote signerです。対応する仕様PRがマージされたのと同じ週にv6.2.2を出荷しました。このリリースはrequest画面とapp一覧にnative app iconと新しいclient metadata fieldを表示し、接続のたびにclient metadataを永続化し、接続時と承認時にnative app iconと名称を取得します。この変更はDocNRによるNIP-46 PR #2381と直接対応します。同PRはconnect requestへ任意のclient metadataを追加し、signerがrequest元の分かりやすい名称とiconを表示できるようにします。Amber v6.2.2はevent kind 30618もサポートし、Active relay画面でデフォルトrelayと接続relayを分離します。

このリリースはsignerのsecurity surfaceも強化します。復号済みNIP-46 requestおよびresponse本文はlogへ出力されなくなり、encryptおよびdecrypt payloadはciphertextとして保存され、必要時に復号されます。すべてのlogcat出力はBuildConfig.DEBUGの背後に置かれ、browser呼び出し元(packageがnull)は常に確認する設定へ強制され、clipboardへcopyされたnsec、ncryptsec、seed wordは機密扱いとなり一定時間後に消去されます。多層防御としてbackupとdata extractionの明示的な除外も追加されました。Active relayのnested scrollによるcrash、bunker requestの競合する重複排除によるLazyColumnのduplicate key crash、release update確認時のEOSE競合も修正しています。

HavenがMarmot上で非公開の位置共有をローンチ

Havenは、Marmot protocolを使ってNostr上で動作するAndroidおよびiOS向けの非公開で検閲耐性のある位置共有appとして今週公開されました。新規プロジェクトの初回リリースとして、4日間にv0.1.0からv0.1.4まで5件を出荷しました。HavenはDartとFlutterで構築され、developer署名済みappとしてZapstoreから公開されます。Nostr向けMLSベースのend-to-end暗号化メッセージング層であるMarmotがgroup stateとciphertext配布を担い、Havenはこの形式をメッセージングから位置共有へ拡張します。各groupの暗号化stateには、そのgroupが共有に同意した位置情報updateが含まれます。

CodeDeck: Nostr経由のremote agentic coding

CodeDeckは、Androidとdesktop向けのmulti-session agentic coding interfaceとして今週公開されました。Tauri v2、React 19、Rust backendで構築され、暗号化Nostr relayを通じてスマートフォンからノートPC上のClaude Codeセッションを操作できます。同じ4日間にv2026.06.17、v2026.6.18、v2026.6.20を出荷しました。transport modelはNostrを暗号化control planeとして使います。CodeDeckを動かすスマートフォンがcommandを暗号化eventとして公開し、ノートPCの隣で動くbridgeがそれを購読し、ノートPCは同じrelayを通じてsession outputを送り返します。

v2026.06.17はnostr-vpn FIPS meshをappのAndroid VPN serviceとして組み込みます。これによりノートPCはどこからでも物理test phone上でappの開発buildを構築、install、起動、操作でき、test phone側に必要なsoftwareはCodeDeckだけです。v2026.6.18はpairingとmesh inviteを1回のQR scanにまとめ、v2026.6.20はセッションごとのモデル選択を追加し、各sessionを選択済みmodelで開始できるようにします。

Grain v0.8.0-rc1が完全なNostr client engineを出荷

Grainは0ceanSlimが保守するGo relayです。v0.8.0-rc1を公開し、Nostr relayであると同時に、その実装を支えるimport可能なGo client libraryとなりました。v0.7.xがbrowserからrelayを運用することに重点を置いたのに対し、v0.8系はclient/coreを出荷します。これはcgoにもHTTPにも依存しないpure Goの独立したoutbox-model Nostr client engineです。engineは共有relay poolを管理し、各userのrelay listを解決し、すべてのreadとpublishをgossip / outbox modelに従ってroutingします。userのnoteはそのuserのoutbox relayから読み、公開した返信は親著者のinbox relayへ届きます。Grain自身のweb frontendがこのlibraryのreference consumerになったため、UIは利用可能なappであると同時に下流Goプロジェクト向けの実装例でもあります。

リリースはnative NIP-44暗号化(v2とv3)、NIP-42 relay AUTH、NIP-65、NIP-17、NIP-51、NIP-37 relay list、NIP-89 client tag、BlossomとNIP-96 media supportを導入します。relay routingを独自に再実装していた下流Go appはengineを直接importできるようになりました。

Mostro Core v0.13.1がProtocol v2をフォローアップ

Mostro Coreはv0.13.1を先週のProtocol v2展開に続くリリースとして出荷し、protocolのprice feed契約にPriceTooStale error variantを導入しました。今週のdaemon側では、PR #752が無効なorder IDを黙って破棄せずCantDo(NotFound) errorとしてclientへ示し、PR #785が内部protocol versionをactive transportに追従させます。PR #778はCUPおよびMLC向けEl Toque fiat-cross providerのphase 3を導入し、PR #782は仕様に合わせてNIP-33 info tagのprotocol_versionsをprotocol_versionへ改名します。

Wisp v1.1.2とDark Wisp variant

WispはbarrydeenによるKotlinおよびJetpack Compose製Android clientです。v1.1.2ではself-send wallet legを決定論的なtransaction順序内で別々に保持し(PR #586)、mediaの多いnoteでも動作するようinline video playerを遅延作成し(PR #592)、event relay集合のConcurrentModificationExceptionを修正し(PR #595)、chat bubble内容のintrinsic measurementを修正してSubcomposeLayout crashを回避しました(PR #596。リリースはlock外でspam scoringを行うincremental feed filterも導入します。Wisp teamは今週、ZEC、DASH、BCH、LTCのzap targetと匿名modeを追加したmulti-currency variant、Dark Wisp v1.1.0もZapstoreで公開しました。

Citrine v3.0.1

Citrineはgreenart7c3によるAndroid local Nostr relayです。v3.0.1は1件の修正を出荷しました。未登録のPokey receiverを登録解除した際のcrashでrelay全体が停止しなくなります。

FIPS v0.4.0-rc2

FIPS(Free Internetworking Peering System)は、v0.3.x wire formatを基にしたpackage検証用release candidateとしてv0.4.0-rc2をtag付けしました。v0.4.0系はpeer到達性のためのNym mixnet transportとopt-in mDNS LAN discoveryを追加し、data planeを刷新して単一nodeのthroughputを高めpacketあたりのCPU負荷を下げます。operator向けread surfaceをdata planeのhot pathから外し、負荷下でも可観測性の応答を維持し、再設計したfipstop TUIを出荷し、packet loss下でも途切れないようFMPとFSPのrekeyを強化します。これはrelease candidateであり、v0.4.0 stable版は暫定的に2026-06-21とされています。

Kubo v2026.06.12とv2026.06.20がtrust-gated子ども向けfeedを固定し保護者選定YouTubeを追加

KuboはJeroenOnNostrがTrust Extended Permissions Protocol(TEPP)上に構築したNostr-nativeなYouTube Kids代替appです。今週2件のリリースを出荷しました。v2026.06.12(calendar versioning、派生versionCodeはYYYYMMDD)はtrust-gated子ども向けfeedを必須にします。子どもが閲覧または操作できるすべてのpost、profile、reaction、repostは、保護者が許可した人物に限定されたTEPPを経由します。新規installではtrust gateが有効で始まり、onboarding時に子どものcircleが初期化されるため、初回起動からfeedが保護されます。保護者向けmanaged group chatも追加し、trust eventを家族のprivate relay集合へ送り、trust dataを読み込めない場合は未審査内容を漏らす代わりに何も表示しないfail-closed動作を取ります。

v2026.06.20は保護者が選定するYouTube channelを追加します。保護者がchannelを検索して子ども向けfeedへ加えると、子どもには保護者が承認したchannelの動画だけが表示されます。HTTP fast laneとoptimistic UIにより約10秒かかっていた追加経路も置き換えました。このリリースはTrust Extended Permissionsを無効にするoptionも削除します。プロジェクトは必須trustを中心に設計されているため、toggleは常にonです。専用Support pageを追加し、group chatの@mentionを修正してrawなnostr:npub1…ではなくclick可能な@nameを表示し、mention autocompleteを加え、trust公開のgate判定をmirror flagではなく実際の適用状態に基づかせます。両リリースはdeveloper署名済みAndroid app com.kubo.appとしてZapstoreで追跡されています。

Pollerama v1.9.0からv1.9.4がweb-of-trustスコア、端末内relay engine、「知り合いかもしれない人」欄を追加

Polleramaはabh3poによるForm*系のNostr pollおよびfeed clientで、pollerama.funで提供されています。今週Zapstoreで5件のリリースを出荷しました。v1.9.0は新しい端末内relay engineを導入します。内蔵local relayがuserの閲覧したすべてを保存し、まずlocal cacheからappへ応答するため、feed、profile、threadは即座に読み込まれ、offlineでも利用でき、背後でnetworkと同期されます。すべてのrelay traffic(readとwrite)はmain thread外でこのengineを経由し、読み込み済みのnote、profile、reaction、zapは再取得せずlocal storageから直接提供されます。

v1.9.2は、follow listをsync engineと独立してcacheすることで、HomeとNotes feed(およびFollowing・Network view)が起動時や復帰時に空になることがある問題を修正しました。DM内で共有されたnoteは、userが著者をfollowしていなくてもrelay hintから参照先noteを取得して確実に読み込みます。relay接続、cache size、sync stateを表示し、再接続またはlocal cacheの消去を行えるNetwork設定panelも追加されました。v1.9.3は起動時crashとHome feed読み込みのregressionを修正します。

v1.9.4はprofileにweb-of-trust trust score(自分がfollowする人のうち何人がこの人物もfollowしているかをnetwork chipとして表示)と、「知り合いかもしれない人」欄(web of trustから得たfollow候補を、自分のfollowのうち何人がその人物をfollowしているかで順位付け)を追加します。Network設定はweb-of-trustの規模と最終計算時刻を表示し、任意に再計算するbuttonも備えます。trust scoreとrecommendationはweb-of-trust workerがbackgroundで計算するためappをblockしません。

その他のタグ付きリリース

nogringo/nostr-mail-client v0.13.1はAmber、Aegis、PrimalでのNIP-55 signer app loginを復旧し、signer appへcontactの署名を繰り返し要求しないようにします。Cameri/nostream v3.0.0はweb app factoryからunsafe-inlineを削除し、script nonceを実装します。LaWallet NWC v1.0.0は共有可能なQR linkによるcard有効化、Remote Wallet認識、Lightning Address自動発行を備えたプロジェクト初の1.0です。Formstr Nostr Calendar v2.0.0からv2.0.2はPWAを追加し、offline replaceable eventを修正し(PR #194)、signer methodをbindしてprivate formを送信可能にしました(PR #199)。Spl0itable/NYM、codeswot/ZapBook、77elements/noornote、mattn/nostr-relay、mattn/algia、mouse484/astraea、dergigi/boris、fiatjaf/nak、Spl0itable/nosflare、nostrord/nostrordからの小規模なリリースが今週を締めくくります。


未リリースの変更

Cordn Ad-hoc CVM: ブラウザベースのMLS coordinator

Cordn Ad-hocはsandwich.farmの新しいweb appで、ad-hocなCordn group向けにbrowser tab内で動作するMLS coordinatorとして今週公開されました。この形式は独特です。browser tabがContextVM Nostr coordinator processを実行し、coordinator pubkeyを公開し、Nostr relay経由でMCP requestを受信し、MLS key package、Welcome、join request、group messageをbrowser storageへ保存します。backendはありません。appは同じpubkeyを持つ複数のcoordinatorが同時に動くことを防ぎ、raw Nostr event、decode済みrequest、instance heartbeatを確認するoperator debug logを提供します。

SnowCait/nostterが19件のUX改善PRを出荷

nostterはSnowCaitのweb Nostr clientです。今週はreleaseを切らずに19件のPRをマージしました。nostrapp.linkをapp-manager.nostter.appへ置き換え(PR #2234)、deck.nostter.appをframe-ancestors allowlistへ追加する変更(PR #2233)により、プロジェクトのsurfaceをnostter.app domainへ集約します。followeeのreplaceable eventはIndexedDBへcacheされ(PR #2231)、seen-on relay stateはseen-onとviaのoptionを分離してreactivityを取り戻しました(PR #2230)。

Zap Cookingがプロジェクト横断NIP-46 bugを修正しcomposerを刷新

Zap CookingはNostr上のレシピ共有clientです。今週16件のPRをマージしました。影響範囲が最も広い変更はPR #452です。Primal remote signerがeventへsigner自身のpubkeyを付けていたため、Primalを経由するすべてのclientでupload、zap、authが壊れていました。Zap Cookingはこの経路を発見してpatchしました。修正はclient内ですが、bugはNIP-46全体に存在します。PR #458はcountdown timer、統一されたreply・comment UI、Write・Preview tabを備えたcomposerへ再構築します。3件のSSR修正(PR #460、PR #461、PR #462)とPR #454はprofileとrecipe routeを安定化しました。explore画面はdrag scrollできる行、profile link付きavatar cursor、community向けsticky tab修正を追加します(PR #456)。

ShopstrがCashu escrow lifecycleとstorefront toolを出荷

ShopstrはNIP-99 marketplaceです。今週、一連の重要なPRをマージしました。PR #512はmarketplace向けにend-to-endのP2PK Cashu escrow lifecycleを実装します。これは同じ週に進むNIP-99 PR #2323(on-graph checkout layer提案)およびConduitのローンチを含む、より広範なcommerceの動きにつながります。出品企業一覧、企業詳細、storefront、seller reputationを取得するread toolはPR #543で導入されます。PR #229はprofileおよびshop画像のURL貼り付けを追加し、PR #359はmarketplace統計取得にtimestampを含めます。

divine.videoのmobileおよびdesktop作業

divine.videoはrabbleによる、復元したVine archiveを備えた短尺loop video clientです。今週マージされたPRは再生と編集に集中しています。addressable videoをfeed内で重複排除し(PR #5465)、local Nostr tag filterを完全一致にして偽の結果を避け(PR #5463)、video editorがsticker layer付きdraftをcrashせず復元し(PR #5474)、Messages badgeはfollow済みながら未返信の未読chatを数えるようになりました(PR #5473)。

NosturがNIP-46 client metadataサポートとDM更新修正を出荷

NosturはFabianによるiOS clientです。先週の1.29.0リリースに続き、canonical repoへ4件のPRをマージしました。PR #74はNIP-46 bunker connect requestへclient metadataを追加します。これはDocNRが提案し、今週Amber v6.2.2が出荷したものと同じ形式です。PR #75とPR #76はiPhoneがforegroundへ移行した後のDM refreshとforeground recovery経路を修正し、PR #78はcustom NWC設定にQR scanを追加します。


新たな追跡対象と発見

Social Agents Prototype: human approval gateを備えたNostr-native AI agent協働

Social Agents Prototypeは、分散型agent間通信を探求するNostr上の実験的AI toolです。agentはnetworkへ最小単位の質問をbroadcastし、関連するagentだけが応答し、送受信されるすべてのmessageは転送前にhuman approval gateを通ります。作者はSruly Rosenblatです。このプロジェクトは今週のBuzzおよびNIP-100 SNINと同じagent協働領域にありますが、異なる形式を取ります。Social Agents Prototypeはagentをbroadcastとlistenを行うparticipantとしてモデル化し、そのすべてのmessageに人間の承認を要求します。同じ問題への複数の並行した取り組みが今週見えています。

PRana: NIP-34 issueのworklist

DocNRによるPRanaは、opt-inのgit-over-Nostr repoで正しくopenされたNIP-34 issueのworklistです。このtoolはgit-over-Nostr stackの1層上に位置し、参加repoからNIP-34 issue eventを取り込み、triage queueとして表示します。ローンチと同じ週に、NIP-34 PR #2384は期限切れ問題を解決するためmaintainers tagの削除を提案しました。これはPRanaのようなtoolがrepo間でissueの権限を解決する方法に直接影響します。

routstr-chat: Nostr上のRoutstr protocol経由でlocal LLMへアクセス

Routstr teamによるroutstr-chatは、Routstr protocolを使ってNostr経由で任意のLLM modelへアクセスする完全localなchat interfaceです。Routstr protocolはNostr上で公開されたprovider announcement(kind 38421)を通じてinference requestをroutingし、Cashuで決済します。これはNewsletter #20で扱いました。chat clientはそのprotocol上のuser-facing surfaceです。routing daemon(Routstrd)がdiscoveryとpaymentを処理し、chat appがconversation UIを提供します。


Protocol作業

NIP update

今週のNIP活動は異例に多く、2件のmergeと重要なopen proposalが相次ぎました。

NIP-46 client metadataをAmberとNosturが出荷

NIP-46 PR #2381は先週Claveが提案したもので、現在は両側に実稼働実装があります。Amber v6.2.2はbunker connect requestの新しい任意field optional_client_metadataを読み、request画面とapp一覧にnative app iconとmetadataを表示します。Nostur PR #74はclient側で同fieldを追加します。3プロジェクトが揃うことで、bunker pairingのidentity不足が解消されます。bunker:// pairingでもappがnostrconnect://で既に告知できたものと同じname、url、imageを運べるようになります。

NIP-86 signeventとrelay roleを定義する関連event

staabによるPR #2389はrelay管理APIであるNIP-86へsignevent操作をmergeし、relay adminがrelayに代わってNIP-43 eventを管理できるようにしました。関連するopen proposalのstaabによるPR #2390はrelay role eventを定義し、relayがrole定義を宣言し、adminがmemberをそのroleへassignまたはunassignできるようにします。2件のPRは組み合わせて使う設計です。NIP-86がadminに操作を与え、role eventが認可modelを与えます。

NIP-99: marketplace向けon-graph checkout layer

ColabonateによるPR #2323は今週の取り組みを結ぶ最も強いhubです。この提案はdesign feedbackの依頼として提示され、NIP-99とGamma Market Specのstackにある2つの不足を指摘します。1つはgraph上で完結するcheckout flow(buy now後のstate、order作成、payment、delivery確認を、どのclientでも読めるpublic addressable Nostr eventとして表現)、もう1つはweb-of-trust signalだけでは足りない取引(高額商品、初取引の相手、匿名marketplace、物理配送)向けのescrowとdispute resolutionです。この提案は、NIP-99が出品情報のclient間siloを解消したのと同様に、marketplaceのclient間siloを解消します。Conduitのローンチ(独自のnips/とspecs/ディレクトリを含む)、Shopstr PR #512(end-to-end Cashu escrow lifecycle)、BitBlik(独自のescrow primitiveを備えたP2P BLIK ↔ Lightning)、Gamma Markets Market Specの独立リポジトリがactive trackingへ入ったのと同じ週に登場しました。

NIP-34: 期限切れ問題の解決にmaintainers tagを削除

dhalsimによるPR #2384はNIP-34 repository announcementからmaintainers tagを削除し、issue #2382に対応します。maintainers tagには定義済みの有効期限semanticsがなく、下流toolはmaintainer assignmentがまだ権威を持つか判断しにくい状態でした。この変更の影響範囲は広く、flotilla-budabit patch(今週重要なpatch活動があった唯一の追跡対象NIP-34 repo)、Iris teamの8 repo構成NIP-34 distribution、BitBlikのNIP-34 mirror、新しいAmber NIP-34 mirror、DocNRのPRana issue worklist toolへ及びます。PRのcross reviewerにはDanConwayDev(ngit)、vitorpamplona(Amethyst)、TheAwiteb、chebizarroが含まれます。

NIP-29 group state(作業中)

dtononによるPR #2372はNIP-29向けにgroup stateという枠組みを提案し、feedbackを得るためwork in progressとして共有されています。これは#27で扱ったNIP-29の進展を新しい枠組みで継続するものです。

NIP-79 StoriesとNIP-76 Reels Feed(いずれもanaskmh)

同じ作者による2件の短尺media仕様が今週登場しました。PR #2386はNIP-79 Storiesを提案します。24時間後に期限切れとなる全画面の写真、動画、text slideで、個々のslideにkind 19、複数slideのstoryを並べる順序付きe tagを保持するaddressable eventにkind 34237、任意でプライバシーを保つ閲覧receiptにkind 15750を使います。PR #2385は短尺video Reels Feed向けのNIP-76を提案します。どちらもdivine.videoのような既存video clientが出荷するものと並行する仕様であり、その実装ではありません。

kind 1 noteへの返信としてのkind 1111

zhoreeqによるPR #2358は、kind 1 noteにkind 1111(NIP-22)のcomment thread返信を使わないよう勧めていた行をNIPs群から削除します(issue #2250)。diffは小さいものの影響は広く、NIP-22のthreaded comment形式を通常のkind 1 timeline noteに使いたいclientが、明示的にサポートされるようになります。


Nostrの6年間の6月

6月のrepository historyは、Nostrがprotocol黎明期から組み合わせ可能なapplication substrateへ進む過程をたどります。2021年には作業のすべてが1つのprotocol repositoryに収まっていました。2022年には標準化processと最初の本格的clientが別々のprojectになりました。2023年の公開利用の波によりrelay、payment、より豊かなidentityが急務となり、2024年は初期のsigningとmessagingの近道を置き換え、2025年はそれらの契約をprivate group、git協働、media、commerceへ広げ、2026年にはagent workspace、exchange、developer toolの一層としてNostrを使う製品が登場しました。署名済みeventがrelay間を移動できると証明する段階から、それを実装の一要素にする段階への進展です。

2021年6月: protocol黎明期

Nostrは誕生から約7か月でした。fiatjafの最初のprotocol投稿とfiatjaf/nostr repositoryが、公開projectのほぼ全体をなお収めていました。各変更をreviewできるdeveloperは一握りで、reference implementationはPython scriptでした。まだclient ecosystemではなく、platformにidentityを割り当てられなくてもuserがeventへ署名しrelayを選べる、という主張の段階でした。

専用のNIPs repositoryはなく、proposalとimplementation exampleは引き続きmain protocol historyを共有していました。この時点では範囲が小さいことが強みで、新しい実装者はprotocolを端から端まで理解できました。一方、すべての新しい挙動が同じ小集団に依存するという代償もありました。2022年のrepository分割とclientの波が、この制約を取り除き始めます。

2022年6月: NIPs repositoryの成立

2022年半ばまでにNostrには十分な数の提案者が集まり、5月に作成された独立のnostr-protocol/nips repositoryが必要になりました。約20件の仕様が基本event形式、follow list、暗号化DM、relay metadata、bech32 identifierを扱っていました。文書を元のcode repositoryから移したことでprojectのgovernanceが変わり、clientは独立して進化でき、共有wire behaviorには明示的なproposalとreviewが行われるようになりました。

AstralやAnigmaを含む最初のpublic web clientは初期版が稼働し、William CasarinのDamus repositoryはTestFlight配布へ向かっていました。user baseはまだ小さくdeveloper中心でしたが、systemには2つの拡大面が生まれました。より多くの人が仕様を保守せずapplicationを構築でき、より多くの人が元のclientを所有せず仕様を改善できるようになりました。

2023年6月: Damus後の利用急増

2023年6月までに、DamusのApp Storeローンチ後に起きたpublic利用の波がengineering上の問題を変えていました。PrimalとIrisはprotocol初期のchatを追っていない人向けに開発し、strfryはtraffic増加に直面するoperatorへ高性能relayを提供しました。networkに必要なのは実装数の増加だけではなく、user、follow、event historyが増えても応答性を保つclientとrelayでした。

そのためprotocol作業はroutingとvalue transferへ集中しました。NIP-65 relay listは形成されつつあったoutbox modelに可搬なsource of truthを与え、NIP-57 zapはeventとidentityをLightning receiptへ接続しました。段階の変化は実用上のものでした。identityとpublishingがuserを呼び込みましたが、より大きなnetworkを1つの過負荷なpublic feed以上のものとして動かしたのは、選択的relay routingとwallet interoperabilityでした。

2024年6月: signer、gift wrap、messagingの刷新

2024年6月までに署名処理は個々のclientの外へ移り始めました。NIP-46仕様、nsecBunker、Amberにより、webおよびAndroid applicationはuserのsecret keyを取り込まずに署名を要求できました。これは初期の前提を逆転させます。可搬性とは各clientへnsecをcopyすることではなく、専用signerにその周囲のboundaryを適用させることになりました。

messagingも同じ理由で変わりました。NIP-17はNIP-44暗号化とNIP-59 gift wrappingを組み合わせ、NIP-04が露出するmetadataを減らしました。NIP-89はclient自身が描画しないevent type向けのhandlerを推薦可能にしました。この環境でMLS-over-Nostrの議論も始まりました。プライバシーとapplication discoveryはclient間の契約になりつつあり、1つのclientが全機能を抱えるのではなく、private groupとevent固有applicationの基盤を整えました。

2025年6月: Marmot、git-over-Nostrの成熟、多様なclient

2025年6月までにMLS-over-Nostrには正式なMarmot仕様とpublic implementationのWhite Noiseがありました。NIP-34 git event、ngit、GitWorkshopも利用可能なcode review flowへ成熟しました。これらのprojectは同じ設計段階にありました。relayを協調に使いつつ、text note clientをapplication全体として扱わず、機密group stateやrepository objectを専用層へ移しました。

commerceとmediaも同じ形式を取りました。NIP-60 walletとNIP-61 nutzapはCashu stateを可搬なeventへ持ち込み、Wavlake、Divine、NIP-99 marketplace実装はmusic、video、listingに専用event kindを使いました。applicationがidentityとrelay substrateを維持しながら、domain固有のstorage、payment、moderation、presentationを導入するにつれ、Nostrは目に見える形では「social network」らしさを弱めていきました。

2026年6月: ローンチの多い月

2026年6月にはNostrをより大きな製品の1要素として扱うローンチが相次ぎました。Buzzは人間とagent向けのself-host workspace-as-relay形式を公開し、NappletsはNostrとBlossom上の組み合わせ可能なappにtrust boundaryを定義し、Conduitはmarketplace applicationと独自のprotocol文書を並べました。これらのprojectは、署名済みeventが協働を支えられるかを問う段階を過ぎています。どの作業をeventに置き、どれをblobまたはlocal stateに置き、hostがどの権限を保持すべきかを決めていました。

BitBlikはP2Pの法定通貨・Lightning交換にNostrを使い、CodeDeckは暗号化relayを通じてcoding sessionを運び、Havenは通常のmessenger以外にMarmotを応用しました。2021年のprototype repositoryからの距離はproject数の増加だけではありません。抽象化の変化です。teamは可搬なidentity、relay discovery、暗号化、paymentを既存部品として出発点にし、その上にあるapplication固有boundaryへ設計作業を注げるようになりました。