Product workflows
Direct and group conversations, channels, threads, mentions, reactions, attachments, unread state, and moderation.
The target product contract for Launch Rail Chat: domain concepts, client integration, realtime recovery, service architecture, and the operational boundaries we plan to validate with private-pilot teams.
Status and scope
Chat is registered as a private-pilot module. The first pilot is intended to validate the conversation model, React and Flutter integration, customer-cloud operations, security boundaries, and workload behavior before a stable release contract is published.
Direct and group conversations, channels, threads, mentions, reactions, attachments, unread state, and moderation.
Proposed React components, Flutter widgets, REST and Connect APIs, and a recoverable WebSocket stream.
Customer-owned AWS is the first target. Launch Rail does not need to retain the customer’s cloud credentials.
Tenant scope, Authz decisions, expiring sessions, revocation, and governed agent operations are first-class design inputs.
Proposed quickstart
The intended workflow starts from a versioned project manifest, deploys into the customer environment, and issues scoped chat sessions to the application. The commands and package interfaces below are illustrative pilot targets.
Select Chat and its required Identity and Authz integrations.
Generate and apply customer-cloud artifacts from the customer environment.
Connect the proposed React or Flutter kit to a scoped session.
project: atlas-product
environment: pilot
modules:
chat:
channel: private-pilot
integrations:
identity: required
authz: required
media: optional
notifications: optional
audit-log: optional
deployment:
target: aws
credentials: ambient// Proposed private-pilot package and API
import {
ChatProvider,
ConversationList,
MessageThread,
MessageComposer,
} from "@launchrail/chat-react";
export function TeamChat({ session }) {
return (
<ChatProvider session={session}>
<ConversationList />
<MessageThread conversationId="team-room" />
<MessageComposer conversationId="team-room" />
</ChatProvider>
);
}// Proposed private-pilot package and API
LaunchRailChat(
session: chatSession,
child: ChatShell(
conversations: ConversationList(),
thread: MessageThread(conversationId: "team-room"),
composer: MessageComposer(conversationId: "team-room"),
),
)Domain model
The proposed model keeps product-facing concepts explicit so clients do not have to infer permissions, unread state, or delivery behavior from raw event streams.
Realtime recovery
The planned client model combines a durable history API with a scoped WebSocket stream. Clients track per-conversation sequence and recover gaps from history after reconnect, sleep, network switching, or delayed delivery.
Exchange a valid chat session for a scoped realtime ticket and subscribe only to permitted conversation streams.
Apply events in sequence, deduplicate by event identity, and update local projections.
If the next sequence is missing, stop assuming continuity and request durable history after the last known cursor.
Merge durable records, advance the cursor, and resume realtime consumption without duplicating user-visible messages.
{
"event_id": "evt_01J...",
"type": "chat.message.created.v1",
"tenant_id": "tenant_acme",
"conversation_id": "conv_product",
"sequence": 1842,
"occurred_at": "2026-07-16T10:24:00Z",
"payload": {
"message_id": "msg_01J...",
"sender_id": "user_42",
"text": "Release checklist is ready"
}
}Target architecture
The pilot target uses a stateless Go API, PostgreSQL for durable domain state, a transactional outbox, NATS JetStream for distributed work, Redis for ephemeral presence, and adapters for search, media, and notifications.
React · Flutter · backend
REST · Connect · WebSocket
PostgreSQL · outbox
NATS JetStream
Events and worker coordination
Redis
Presence and connection state
Search adapter
Replaceable indexing boundary
Ecosystem adapters
Media, Notifications, Audit Log
Operational semantics
These are target semantics for pilot validation. They will only become stable guarantees after implementation, workload testing, recovery exercises, and compatibility review.
A message is acknowledged after its durable state and outbox record commit together.
A monotonic sequence orders durable changes inside a conversation; no global ordering is promised.
client_message_id and the Idempotency-Key header make caller retries visible and deduplicable.
Downstream events use at-least-once delivery; consumers deduplicate by event identity.
Sequence gaps trigger durable history reconciliation rather than silent best-effort continuation.
Typing and presence may expire or be dropped; they never replace durable membership or message state.
POST /v1/conversations/conv_product/messages
Authorization: Bearer <scoped-chat-session>
Idempotency-Key: client_message_9c12
Content-Type: application/json
{
"client_message_id": "client_message_9c12",
"text": "Release checklist is ready",
"reply_to_message_id": null,
"attachment_ids": []
}Ecosystem integrations
Identity and Authz are planned dependencies for the pilot. Media, Notifications, Audit Log, and Entitlements are optional connections selected by the product workflow and deployment blueprint.
Governed agent access
Proposed Chat tools are exposed only through the Launch Rail Agent Gateway. The gateway applies tenant and environment scope, tool allowlists, read or write scope, budgets, Authz policy, expiration, revocation, approval, and audit controls.
List permitted conversations, retrieve message history, and search within the agent’s explicit scope.
The first proposed mutation is sending a message only after an approval decision, with the resulting action recorded in Audit Log.
Release gates
Availability will change only after the product and operational contract have evidence behind them. A roadmap label is not treated as a readiness claim.
Cross-tenant denial, session expiry, revocation, membership policy, and privileged-operation review.
Reconnect, history reconciliation, worker retry, outbox replay, backup, and restore exercises.
React and Flutter contract tests, upgrade guidance, error behavior, and reference workflows.
Workload validation, observability, runbooks, incident boundaries, and support lifecycle.
Versioned artifacts, signed release metadata, dependency inventory, and compatibility records.
Repeatable customer-cloud planning and deployment without Launch Rail retaining cloud credentials.
We’ll map the product requirements and pilot boundaries before implementation.