Can we keep the deployment status inside this conversation?
Messaging infrastructure for multi-tenant SaaS
Build the conversation layer. Keep control of the product.
Add private and group messaging with explicit tenant boundaries, versioned contracts, realtime delivery, and client SDKs your team can understand from day one.
- Tenant + app scoped
- REST + WebSocket
- TypeScript + Flutter
The hard parts, made explicit
Chat is more than a message box.
It is an authorization model, a realtime protocol, a storage system, and an operating surface. V Chat keeps those boundaries visible so your team can ship faster without inheriting a black box.
For product teams
Build DMs, group conversations, threads, reactions, read state, and moderation.
Explore capabilitiesFor platform engineers
Integrate through generated contracts, explicit credentials, and bounded APIs.
See the developer pathFor operators
Inspect usage, delivery, audit evidence, and tenant-safe support workflows.
See the control planeOne coherent messaging surface
The building blocks users already expect.
Start with conversations and grow into the delivery, safety, and operational controls your product needs—without crossing scope boundaries.
Messaging that feels native to your product.
Private and group channels, replies, reactions, mentions, read state, unread summaries, search, and moderation under one channel model.
Realtime with recovery built in.
Authorized subscriptions, monotonic channel sequence, reconnect supervision, gap detection, and REST reconciliation.
Tenant isolation is not optional context.
Every app-owned operation carries immutable organization, application, and environment scope derived from verified credentials.
Events your systems can trust and reconcile.
Durable outbox publication, signed webhooks, retries, deduplication, audit events, and bounded operator recovery.
Flutter that stays useful offline.
Drift-backed scoped caches, pending writes, lifecycle handling, reconnect, and responsive UI primitives.
A contract, not a guessing game
From first token to live channel in readable code.
V Chat separates app-user, trusted server, and dashboard credentials. The SDK makes lifecycle, retry, cancellation, and realtime ownership visible instead of hiding network behavior behind global state.
- 01 Generated OpenAPI transport plus handwritten resource clients
- 02 Stable typed errors and bounded request behavior
- 03 Explicit connect, watch, unsubscribe, and disconnect lifecycle
import { VChatClient } from '@vchatsdk/sdk-typescript';
const client = new VChatClient({
baseUrl: 'https://api.example.com',
userId: currentUserId,
tokenProvider: fetchCurrentUserChatToken,
webSocketFactory: (url, protocols) =>
new WebSocket(url, [...protocols]),
});
await client.connect();
const channel = client.channel(
'messaging',
'support-123',
);
const watched = await channel.watch(applyTypedEvent);
await channel.sendMessage(
{ text: 'Hello' },
{ messageId: crypto.randomUUID() },
);
Understand the system you operate
Clear boundaries from your product to every delivery path.
A modular monolith keeps ownership explicit today. Durable state, realtime fan-out, and customer integrations cross versioned ports—not hidden shared writes.
Your product
V Chat
Delivery + state
Durable commit → outbox → authorized fan-out
Isolation is the product boundary
Designed so one missing scope is a release blocker.
V Chat keeps dashboard sessions, customer application credentials, and app-user tokens separate. Foreign resources follow non-leaking behavior, and secrets stay out of browser and mobile clients.
Review the security modelScope from verified identity
Never trust tenant or app identity from request JSON alone.
Bounded public inputs
Allowlisted filters, stable errors, cursors, limits, and explicit DTOs.
Signed delivery boundaries
Versioned events, signed webhooks, retry evidence, and safe replay.
Redacted operations
No message text, credentials, tokens, or private URLs in shared telemetry.
Deploy on your terms
One reviewed artifact. Clear runtime roles.
V Chat includes repository-prepared AWS and Coolify deployment profiles with separate API, dashboard, and worker processes, external MongoDB and Redis, health gates, and prior-digest rollback.
- Single-region pooled architecture with explicit limits
- Runtime secrets injected outside the image
- Staging-first promotion without rebuild drift
Build the part your users remember
Make messaging part of your product, not your backlog.
Start from the contracts, explore the source, and connect the dashboard when your environment is ready.