How chattocorp/chatto works
Chatto is a self-hostable team and community chat product: users enter through the web or desktop client, authenticate, then use server-backed chat and collaboration features. The repository also contains separately described client, bot, workflow, and identity products. The map preserves those documented branches; source excerpts provide only a few implementation-level links, so other connections are limited to README claims or left unasserted.
Main entry points: main.mjs Desktop runtime · cli Chat server and CLI · lib Web frontend · client.ts TypeScript client
Components 19
Chatto application
- Web frontend
apps/frontend/src/lib - Query cache
apps/frontend/src/lib/query/queryClient.ts - Chat server and CLI
cli - Server state provisioning
cli/internal/core/storage.go
Desktop client
- Desktop runtime
apps/desktop/main.mjs - Frontend protocol
apps/desktop/frontend_protocol.mjs - Game capture
apps/desktop/game_capture.mjs - Screen sharing
apps/desktop/screen_sharing.mjs - Desktop updates
apps/desktop/updates.mjs
Identity and APIs
- Authling identity provider
authling/cmd/authling/main.go - OIDC state storage
authling/internal/oidcprovider/storage.go - Authling runtime storage
authling/internal/storage/storage.go - Public API definitions
proto
Clients and integrations
- TypeScript client
packages/chatto-client/src/client.ts - ChattoBot
packages/chattobot
Workflow orchestration
- Runling orchestrator
packages/runling/src/runtime/source-manager.ts - Runling web routes
packages/runling/src/routes
Other components
- Chat user
- NATS JetStream
Connections 19
- Chat user → Web frontend: uses
README.md - Web frontend → Chat server and CLI: uses server
README.md - Chat user → Desktop runtime: uses
- Desktop runtime → Frontend protocol: registers protocol
apps/desktop/main.mjs - Desktop runtime → Game capture: configures capture
apps/desktop/main.mjs - Desktop runtime → Screen sharing: configures sharing
apps/desktop/main.mjs - Desktop runtime → Desktop updates: supports updates
apps/desktop/main.mjs - Web frontend → Query cache: uses cache
apps/frontend/src/lib/query/queryClient.ts - Query cache → TypeScript client: clears user stores
apps/frontend/src/lib/query/queryClient.ts - Chat server and CLI → Server state provisioning: provisions state
cli/internal/core/storage.go - Server state provisioning → NATS JetStream: creates resources
cli/internal/core/storage.go - Authling identity provider → OIDC state storage: provides identity
- OIDC state storage → Authling runtime storage: uses storage
authling/internal/oidcprovider/storage.go - Authling runtime storage → NATS JetStream: provisions buckets
authling/internal/storage/storage.go - TypeScript client → Chat server and CLI: connects to
README.md - ChattoBot → TypeScript client: built with
README.md - Runling orchestrator → Runling web routes: serves routes
- Runling orchestrator → ChattoBot: orchestrates assistant
- Chat server and CLI → Public API definitions: implements public API