MCPcopy Index your code
hub / github.com/CommE2E/comm

github.com/CommE2E/comm @desktop-v19.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release desktop-v19.0.0 ↗ · + Follow
10,721 symbols 31,875 edges 2,587 files 262 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Comm

Comm is an E2E-encrypted messaging app. You can think of it as Signal with an IRC-like federated community layer.

  • DMs and group chats are E2EE between devices using pairwise Double Ratchet sessions initiated via X3DH.
  • Communities, which consist of a tree structure of channels, are hosted on federated user-run backends that we call keyservers. Communication is encrypted via TLS.

Learn more at comm.app!

Repo structure

The client apps and keyserver layer are mostly written in Flow-typed Javascript. These projects are organized in a monorepo structure using Yarn Workspaces.

  • native contains the code for the React Native app, which supports both iOS and Android.
  • keyserver contains the code for the Node/Express server. This includes the application server for the communities layer (the "keyserver"), and can be configured to serve web and landing as well (see below).
  • web contains the code for the React desktop website.
  • landing contains the code for the Comm landing page.
  • lib contains code that is shared across multiple other workspaces, including most of the Redux stack that is shared across native/web.

Comm's backend services are centralized and never touch plaintext data. They are written in Rust and deployed with Terraform to AWS. These projects are organized in a monorepo structure using Cargo Workspaces.

  • services contains the various different backend services.
  • shared contains gRPC and protobuf definitions, and shared Rust libraries.

Dev environment

Note that it’s currently it’s only possible to contribute to this project from macOS. This is primarily due to iOS native development only being supported in macOS.

Check out our doc on how to set up our dev environment.

Extension points exported contracts — how you extend this code

TryFromAttribute (Interface)
Conversion trait for [`AttributeValue`] Types implementing this trait are able to do the following: ```ignore use comm_ [16 …
shared/comm-lib/src/database.rs
DeviceKeyUploadData (Interface)
(no doc) [6 implementers]
services/identity/src/grpc_utils.rs
ToMetadataValueAscii (Interface)
(no doc) [2 implementers]
shared/grpc_clients/src/identity/shared.rs
ServiceConfig (Interface)
(no doc) [2 implementers]
native/native_rust_library/build.rs
IdentityServiceClient (Interface)
(no doc) [1 implementers]
lib/types/identity-service-types.js
Animatable (Interface)
(no doc) [1 implementers]
lib/flow-typed/environments/cssom.js
Animatable (Interface)
(no doc) [1 implementers]
services/electron-update-server/flow-typed/environments/cssom.js
MemOps (Interface)
(no doc) [1 implementers]
services/blob/src/tools.rs

Core symbols most depended-on inside this repo

push
called by 1009
native/cpp/CommonCpp/Tools/MPMCQueue.h
toBe
called by 850
lib/flow-typed/npm/jest_v29.x.x.js
tShape
called by 436
lib/utils/validation-utils.js
get
called by 365
services/electron-update-server/flow-typed/environments/bom.js
dbQuery
called by 344
keyserver/src/database/database.js
toString
called by 326
lib/flow-typed/npm/webpack_v5.x.x.js
parse
called by 296
services/reports/src/email/config.rs
useSelector
called by 259
native/redux/redux-utils.js

Shape

Function 4,784
Class 2,974
Method 2,702
Interface 160
Enum 101

Languages

TypeScript68%
Rust16%
C++14%
Java1%
Kotlin1%

Modules by API surface

services/electron-update-server/flow-typed/environments/bom.js334 symbols
lib/flow-typed/environments/bom.js333 symbols
services/electron-update-server/flow-typed/environments/html.js204 symbols
lib/flow-typed/environments/html.js204 symbols
web/shared-worker/_generated/comm-query-executor.js190 symbols
services/electron-update-server/flow-typed/environments/node.js163 symbols
lib/flow-typed/environments/node.js163 symbols
services/electron-update-server/flow-typed/environments/dom.js142 symbols
lib/flow-typed/environments/dom.js142 symbols
native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp126 symbols
web/shared-worker/utils/sql-query-executor-wrapper.js120 symbols
desktop/addons/windows-pushnotifications/CollectionsWrap.h92 symbols

For agents

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

⬇ download graph artifact