# tomeetadx/tomeet_backend architecture

> Architecture diagram of the GitHub repository tomeetadx/tomeet_backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tomeetadx/tomeet_backend
- Repository: https://github.com/tomeetadx/tomeet_backend

## Overview

TOMEET is a long-lived social agent: people build context through conversation and multimodal inputs, express social intent, get matched into an expanding activity room, then provide feedback that informs later understanding. The API and channel workers connect users to queued intelligence work; the intelligence worker uses agent context, model/search capabilities, and persisted domain state. The README documents additional memory, matching, room, and relationship-chain capabilities whose detailed wiring is not shown in the sampled source, so only documented connections are included.

Main entry points: [`apps/intelligence-worker/src/index.ts`](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/intelligence-worker/src/index.ts) (Intelligence worker), [`apps/api/src/app.ts`](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/api/src/app.ts) (Web API), [`apps/wechat-ilink-worker/src/index.ts`](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/wechat-ilink-worker/src/index.ts) (iLink worker), [`packages/intelligence/src/hosted-llm.ts`](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/intelligence/src/hosted-llm.ts) (Hosted intelligence)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry"]
  node_api["Web API<br/>[app.ts]"]
  node_api_server["API runtime<br/>[server.ts]"]
  node_ilink_worker["iLink worker<br/>[index.ts]"]
  node_ilink_client["iLink client<br/>[client.ts]"]
  node_channel_client["TOMEET channel client<br/>[tomeet-client.ts]"]
end

subgraph group_agent["Agent intelligence"]
  node_int_worker["Intelligence worker<br/>[index.ts]"]
  node_agent_core["Agent context<br/>[context.ts]"]
  node_hosted_llm["Hosted intelligence<br/>[hosted-llm.ts]"]
  node_web_search["Web search<br/>[web-search.ts]"]
  node_contracts["Domain contracts<br/>[index.ts]"]
end

subgraph group_social["Social lifecycle"]
  node_user_model["User model<br/>[index.ts]"]
  node_matchmaking["Matchmaking<br/>[index.ts]"]
  node_game_catalog["Game catalog<br/>[index.ts]"]
  node_room["Rooms and activities<br/>[index.ts]"]
  node_feedback["Feedback<br/>[index.ts]"]
  node_rel_worker["Relationship worker<br/>[index.ts]"]
end

subgraph group_state["Persistence"]
  node_data["Data access<br/>[index.ts]"]
  node_supabase_store["Supabase store<br/>[supabase-store.ts]"]
end

subgraph group_integrations["External services"]
  node_supabase[("Supabase")]
  node_llm["Hosted LLM"]
  node_tavily["Tavily"]
  node_injective["Injective EVM"]
end

node_person(("User"))
node_webclient(("Web client"))
node_wechat(("WeChat"))

node_person -->|"sends requests"| node_webclient
node_webclient -->|"calls API"| node_api
node_person -->|"sends messages"| node_wechat
node_wechat -->|"delivers updates"| node_ilink_worker
node_ilink_worker -->|"polls and sends"| node_ilink_client
node_ilink_worker -->|"forwards turns"| node_channel_client
node_channel_client -->|"submits agent work"| node_api
node_api_server -->|"builds"| node_api
node_api -->|"reads and writes"| node_data
node_int_worker -->|"claims and updates jobs"| node_data
node_data -->|"selects backend"| node_supabase_store
node_supabase_store -->|"persists state"| node_supabase
node_int_worker -->|"assembles context"| node_agent_core
node_int_worker -->|"requests intelligence"| node_hosted_llm
node_hosted_llm -->|"calls model"| node_llm
node_hosted_llm -->|"prepares search evidence"| node_web_search
node_web_search -.->|"searches"| node_tavily
node_int_worker -->|"updates understanding"| node_user_model
node_int_worker -->|"requests selection"| node_matchmaking
node_int_worker -->|"supplies activity options"| node_game_catalog
node_int_worker -->|"executes room actions"| node_room
node_int_worker -->|"processes feedback"| node_feedback
node_int_worker -->|"validates job data"| node_contracts
node_rel_worker -->|"processes relationship state"| node_supabase_store
node_rel_worker -.->|"anchors and revokes proofs"| node_injective

click node_api "https://github.com/tomeetadx/tomeet_backend/blob/main/apps/api/src/app.ts"
click node_api_server "https://github.com/tomeetadx/tomeet_backend/blob/main/apps/api/src/server.ts"
click node_ilink_worker "https://github.com/tomeetadx/tomeet_backend/blob/main/apps/wechat-ilink-worker/src/index.ts"
click node_ilink_client "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/wechat-ilink/src/client.ts"
click node_channel_client "https://github.com/tomeetadx/tomeet_backend/blob/main/apps/wechat-ilink-worker/src/tomeet-client.ts"
click node_int_worker "https://github.com/tomeetadx/tomeet_backend/blob/main/apps/intelligence-worker/src/index.ts"
click node_agent_core "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/agent-core/src/context.ts"
click node_hosted_llm "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/intelligence/src/hosted-llm.ts"
click node_web_search "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/intelligence/src/web-search.ts"
click node_contracts "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/contracts/src/index.ts"
click node_user_model "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/user-model/src/index.ts"
click node_matchmaking "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/matchmaking/src/index.ts"
click node_game_catalog "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/game-catalog/src/index.ts"
click node_room "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/room/src/index.ts"
click node_feedback "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/feedback/src/index.ts"
click node_rel_worker "https://github.com/tomeetadx/tomeet_backend/blob/main/apps/relationship-worker/src/index.ts"
click node_data "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/data/src/index.ts"
click node_supabase_store "https://github.com/tomeetadx/tomeet_backend/blob/main/packages/data/src/supabase-store.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api,node_api_server,node_ilink_worker,node_ilink_client,node_channel_client,node_person,node_webclient toneBlue
class node_int_worker,node_agent_core,node_hosted_llm,node_web_search,node_contracts toneAmber
class node_user_model,node_matchmaking,node_game_catalog,node_room,node_feedback,node_rel_worker toneMint
class node_data,node_supabase_store toneRose
class node_supabase,node_llm,node_tavily,node_injective,node_wechat toneIndigo
```

## Components

### User entry

- [Web API](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/api/src/app.ts): `apps/api/src/app.ts`
- [API runtime](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/api/src/server.ts): `apps/api/src/server.ts`
- [iLink worker](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/wechat-ilink-worker/src/index.ts): `apps/wechat-ilink-worker/src/index.ts`
- [iLink client](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/wechat-ilink/src/client.ts): `packages/wechat-ilink/src/client.ts`
- [TOMEET channel client](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/wechat-ilink-worker/src/tomeet-client.ts): `apps/wechat-ilink-worker/src/tomeet-client.ts`

### Agent intelligence

- [Intelligence worker](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/intelligence-worker/src/index.ts): `apps/intelligence-worker/src/index.ts`
- [Agent context](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/agent-core/src/context.ts): `packages/agent-core/src/context.ts`
- [Hosted intelligence](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/intelligence/src/hosted-llm.ts): `packages/intelligence/src/hosted-llm.ts`
- [Web search](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/intelligence/src/web-search.ts): `packages/intelligence/src/web-search.ts`
- [Domain contracts](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/contracts/src/index.ts): `packages/contracts/src/index.ts`

### Social lifecycle

- [User model](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/user-model/src/index.ts): `packages/user-model/src/index.ts`
- [Matchmaking](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/matchmaking/src/index.ts): `packages/matchmaking/src/index.ts`
- [Game catalog](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/game-catalog/src/index.ts): `packages/game-catalog/src/index.ts`
- [Rooms and activities](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/room/src/index.ts): `packages/room/src/index.ts`
- [Feedback](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/feedback/src/index.ts): `packages/feedback/src/index.ts`
- [Relationship worker](https://github.com/tomeetadx/tomeet_backend/blob/main/apps/relationship-worker/src/index.ts): `apps/relationship-worker/src/index.ts`

### Persistence

- [Data access](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/data/src/index.ts): `packages/data/src/index.ts`
- [Supabase store](https://github.com/tomeetadx/tomeet_backend/blob/main/packages/data/src/supabase-store.ts): `packages/data/src/supabase-store.ts`

### External services

- **Supabase**
- **Hosted LLM**
- **Tavily**
- **Injective EVM**

### Other components

- **User**
- **Web client**
- **WeChat**

## Connections

- User → Web client: sends requests
- Web client → Web API: calls API
- User → WeChat: sends messages
- WeChat → iLink worker: delivers updates
- iLink worker → iLink client: polls and sends
- iLink worker → TOMEET channel client: forwards turns
- TOMEET channel client → Web API: submits agent work
- API runtime → Web API: builds
- Web API → Data access: reads and writes
- Intelligence worker → Data access: claims and updates jobs
- Data access → Supabase store: selects backend
- Supabase store → Supabase: persists state
- Intelligence worker → Agent context: assembles context
- Intelligence worker → Hosted intelligence: requests intelligence
- Hosted intelligence → Hosted LLM: calls model
- Hosted intelligence → Web search: prepares search evidence
- Web search → Tavily: searches
- Intelligence worker → User model: updates understanding
- Intelligence worker → Matchmaking: requests selection
- Intelligence worker → Game catalog: supplies activity options
- Intelligence worker → Rooms and activities: executes room actions
- Intelligence worker → Feedback: processes feedback
- Intelligence worker → Domain contracts: validates job data
- Relationship worker → Supabase store: processes relationship state
- Relationship worker → Injective EVM: anchors and revokes proofs
