MCPcopy Index your code
hub / github.com/concrnt/concrnt

github.com/concrnt/concrnt @v1.7.7

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.7.7 ↗ · + Follow
1,744 symbols 4,735 edges 122 files 987 documented · 57% updated 2d agov1.7.5 · 2025-09-05★ 617 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

wordmark

Concrnt: SNSのアカウントをあなたのインターネット人格として確立します。

English

What is Concrnt:

Concrntは分散マイクロブログ基盤です。

Why Concrnt:

ユーザーのアイデンティティとするためには、第三者からの検閲・復旧不能なアカウントの凍結処理が行われるような中央集権型のSNSでは、安心してアイデンティティを構築することができません。 大切に育てたアカウントが突然凍結され復旧不可能になるのは、到底許されるべきではなく、一切許容できることではありません。

しかし、サーバーが物理的に存在している以上、サーバーの運営者はそのサーバーが設置されている国の法律に従う必要がありますし、運営者も人間であるため、「凍結が一切できない」というのは現実的ではありません。

Concrntは、このジレンマを解消します。

Concrntは、独自のプロトコルを用いて、アカウントが移行可能なように設計されています。つまり、最初にアカウントを作成したサーバーで自分のアカウントが凍結されたとしても、自分のアカウントを別のサーバーに引越しするだけで、凍結前と同じ過去の投稿・フレンド関係を維持したまま、新しいサーバーでアカウントを再開することができます。

How Concrnt solves the problem:

Concrntは公開鍵暗号を用いて自己のアイデンティティを証明します。 サーバーには一切機密情報を渡さず、アカウントのセキュリティはユーザー自身が責任を持って管理します。

Cool! Where can I join?

web上で動作するクライアント実装のうちの1つ、concrnt.world があります!

比較

中央集権型:

理不尽な凍結の恐れがあり、アカウントが凍結された場合、そのインターネット人格の死を意味します。

Activitypub(mastodon, misskey):

アカウントの引越し機能はありますが、引越し前に凍結された場合打つ手がなくなってしまいます。 また、主要なActivityPub対応SNSはローカルタイムラインという概念がありますが、これは外のユーザーが閲覧・参加できるものではないので、結局それぞれのサーバーでアカウントを作り直すことになります。 Concrntでは、各サーバーに話題ベースのコミュニティタイムラインを好きな数だけ作成することができ、他のサーバーのユーザーも閲覧・参加できます。

nostr:

秘密鍵を用いて自身のアイデンティティを証明する素晴らしい仕組みですが、リレーサーバーをうまく選ぶ必要があります。 またリレーサーバーが自分のデータを保持してくれるか、そして削除してくれるかは保証されません。 (こういった要件を要求しない使い方であれば、非常によく動作します。) 本質的な分散型であるため、逆に非本質だが便利(非暗号化メッセージの可視性コントロールなど)は実装されないような印象を受けます。

Bluesky:

Blueskyは最近活発になってきているプロジェクトであるためまだ詳細はわかりませんが、Concrntと非常に似ています。 BlueskyはTwitterと同様、「世界の全ての情報を共有可能にする」といったミッションで作られているように思います。一方で、Concrntは「コミュニティを中心とし、世界とはゆるく繋がる」ことをミッションとしています。 このミッションの違いにより、Blueskyは巨大なIndexサーバーを建て、フィードを生成するアーキテクチャをとっている一方で、Concrntは単一のサーバーだけを用いて近所の情報を軽量に・リアルタイムに取得するためのアーキテクチャを取っています。

Concrntの問題点?:

Concrntのとっているアーキテクチャ戦略は、Twitterのように無数のユーザーが好きなユーザーを好きなだけフォローできるといった超巨大なシステムまでスケールすることはできない可能性があります。 巨大なホームタイムラインを1つ構築するのではなく、ある程度の大きさのリストをいくつか作成し、それらを切り替えて使うことを前提としているためです。

というのも、Concrntは世界と濃厚に繋がることを主目的においておらず、コミュニティタイムラインをベースとした関係を構築することを主目的においており、それに最適化されています。 これにより、Indexサーバーのような巨大なサーバーを自前で作らずとも、各ドメインが独立して情報をコントロールできるようになっています。

また、Concrntは「自分のアイデンティティは自分で守る」をコンセプトにしています。 一方、現実問題で自分の身を守るためには、ある程度の知識と技術が必要です。つまり、ある程度の使いにくさ・複雑さがあるということです。

そういった意味では、他人に自分を守ってもらいつつ、凍結されないように運営のご機嫌伺いをする中央集権型SNSの方が、一般の人にとっては安心できるかもしれません。

マニア向け情報

自鯖の建て方やプロトコル仕様等

詳細なドキュメントサイトはこちら: concrnt square

Contributing

PRを作成する場合は基本的に先にissueを作成し、その可否のコンセンサスを取ることをお勧めします。(concurrentは現在heavilyに開発されており、その方針上入れられない変更であることがあります。)

Extension points exported contracts — how you extend this code

AckService (Interface)
(no doc) [6 implementers]
core/interfaces.go
Reactor (Interface)
(no doc) [5 implementers]
x/notification/reactor.go
Reactor (Interface)
(no doc) [5 implementers]
x/job/reactor.go
Client (Interface)
(no doc) [3 implementers]
client/client.go
Keeper (Interface)
(no doc) [3 implementers]
x/timeline/keeper.go
Repository (Interface)
Repository is the interface for userkv repository
x/userkv/repository.go
Repository (Interface)
Repository is the interface for association repository
x/association/repository.go
Handler (Interface)
Handler is the interface for handling HTTP requests
x/auth/handler.go

Core symbols most depended-on inside this repo

Error
called by 279
core/errors.go
Start
called by 270
x/job/reactor.go
String
called by 190
cdid/cdid.go
Get
called by 145
x/entity/handler.go
Start
called by 70
x/timeline/keeper.go
Is
called by 57
core/errors.go
Summerize
called by 47
core/interfaces.go
EXPECT
called by 43
core/mock/services.go

Shape

Method 1,208
Function 271
Struct 203
Interface 55
TypeAlias 7

Languages

Go100%

Modules by API surface

core/mock/services.go338 symbols
core/interfaces.go151 symbols
x/timeline/repository.go66 symbols
x/timeline/mock/repository.go56 symbols
client/client.go43 symbols
x/timeline/service.go40 symbols
client/mock/client.go36 symbols
x/entity/repository.go32 symbols
x/entity/mock/repository.go32 symbols
x/association/repository.go28 symbols
x/association/mock/repository.go28 symbols
x/timeline/handler.go26 symbols

Datastores touched

postgresDatabase · 1 repos

For agents

$ claude mcp add concrnt \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page