How abdulsamad/polychat works
PolyChat is a local-first AI chat workspace: a user configures a thread and model, composes text or attachments, submits a queued job, and receives streamed text or generated media rendered in the conversation. Threads, messages, settings, and BYOK secrets stay browser-local; chat, image, and video generation are handled by an authenticated server API and model providers. README capabilities also include model discovery, voice input/playback, message actions, usage details, and local-data management. Several server and route internals are unsampled, so links are limited to documented responsibilities and evidenced calls.
Main entry points: useHandleChatResponse.tsx Response handling · useCustomEditor.tsx Rich composer · useByokModelAvailability.ts Model availability · index.ts Generation controllers
Components 24
Chat workspace
- Conversation route
apps/client/app/routes/home.tsx - Threads and settings
apps/client/app/components/AppSidebar/index.tsx - Rich composer
apps/client/app/hooks/useCustomEditor.tsx - Model availability
apps/client/app/hooks/useByokModelAvailability.ts - Submit and queue
apps/client/app/hooks/useSubmitMessage.tsx - Response handling
apps/client/app/hooks/useHandleChatResponse.tsx - Conversation display
apps/client/app/components/Thread/index.tsx - Rich message actions
apps/client/app/components/Message/index.tsx - Voice features
apps/client/app/hooks/useSpeech.tsx
Local state and keys
- Chat job state
apps/client/app/store/index.tsx - Conversation state
apps/client/app/store/index.tsx - Browser persistence
apps/client/app/utils/lforage.ts - Encrypted BYOK vault
apps/client/app/utils/byok-vault.ts
Generation API
- Generation requests
apps/client/app/utils/api-calls.ts - API entry and auth
apps/serverless/src/index.ts - Generation controllers
apps/serverless/src/controllers/index.ts - Text generation
apps/serverless/src/controllers/chat.ts - Image generation
apps/serverless/src/controllers/image.ts - Video generation
apps/serverless/src/controllers/video.ts
Model runtime
- Model factory
apps/serverless/src/models/factory.ts - AI providers
- Model catalog and schemas
packages/utils/src/models.ts
Other components
- User
- Browser speech services
Connections 31
- User → Conversation route: opens workspace
- Conversation route → Threads and settings: shows threads
- Conversation route → Conversation display: renders conversation
- User → Rich composer: composes prompt
- Rich composer → Model availability: checks model
- Rich composer → Submit and queue: submits message
- Submit and queue → Chat job state: enqueues job
- Chat job state → Response handling: dispatches job
- Response handling → Generation requests: requests generation
- Generation requests → API entry and auth: sends request
- API entry and auth → Generation controllers: dispatches request
- Generation controllers → Text generation: dispatches chat
- Generation controllers → Image generation: dispatches image
- Generation controllers → Video generation: dispatches video
- Text generation → Model factory: creates model
- Image generation → Model factory: creates model
- Video generation → Model factory: creates model
- Model factory → AI providers: uses provider
- Model availability → Model catalog and schemas: reads catalog
- Model availability → AI providers: discovers models
- Response handling → Conversation state: updates messages
- Conversation state → Conversation display: supplies messages
- Conversation display → Rich message actions: renders messages
- Conversation state → Browser persistence: persists threads
- Threads and settings → Conversation state: manages threads
- Threads and settings → Browser persistence: manages local data
- Model availability → Encrypted BYOK vault: checks keys
- Response handling → Encrypted BYOK vault: checks provider key
- Response handling → Voice features: speaks response
- Voice features → Browser speech services: uses playback API
- Rich composer → Browser speech services: uses recognition API