Workspace Chat
Workspace Chat is a real-time team messaging feature built into every Hawkra workspace. It provides a persistent communication channel for team members working in the same workspace, with presence tracking and message history. Chat is designed for coordinating during collaborative security assessments -- quick status updates, sharing findings, or flagging urgent issues -- without needing to switch to an external messaging tool.
How It Works
Chat uses WebSocket connections for real-time bidirectional communication. When you enter a workspace, a WebSocket connection is established to the backend, authenticated using your JWT credentials (sent via cookies during the WebSocket upgrade handshake). All messages are scoped to the workspace -- you only see messages from members of the same workspace, and each workspace has its own independent chat history.
The connection lifecycle follows this pattern:
- Connecting -- The WebSocket connection is being established. A yellow indicator is displayed.
- Connected -- The connection is active and you can send and receive messages. A green indicator is displayed.
- Disconnected -- The connection has been lost. A red indicator is displayed. Hawkra automatically attempts to reconnect with exponential backoff (up to 10 attempts, with delays increasing from 1 second to 30 seconds).
A keep-alive ping is sent every 30 seconds to maintain the connection through network intermediaries (proxies, load balancers) that may close idle connections.
Accessing Chat
Chat is available in two forms within a workspace:
Floating Chat Widget
A circular chat button is fixed to the bottom-right corner of every workspace page. Click it to open a floating chat window that overlays the current page. This lets you communicate without navigating away from your work.
The floating chat button includes:
- Connection indicator -- A small colored dot (green, yellow, or red) showing the current connection status
- Unread badge -- A red counter showing the number of unread messages received while the chat window is closed
Full Chat Panel
The chat panel can also be displayed as a dedicated section within workspace layouts, providing a larger view of the conversation integrated directly into the workspace interface.
Presence Tracking
The chat header displays the number of workspace members currently online. Below the header, an online users bar shows the username of each connected member with a green status dot. Your own name is highlighted and labeled "(you)."
When a member connects or disconnects, the presence list updates in real time via user_joined and user_left WebSocket events. The initial presence list is sent as an authoritative presence message when you first connect.
Sending Messages
Type your message in the input field at the bottom of the chat panel and press Enter or click Send. Messages can be up to 10,000 characters long. The input field is disabled while the connection is being established or is disconnected, with placeholder text indicating the current state ("Connecting..." or "Type a message...").
Messages are delivered instantly to all connected workspace members via WebSocket. Each message includes the sender's username and a timestamp.
Message History
Chat messages are persisted server-side and loaded when you open the chat panel. The initial load retrieves the most recent 50 messages. Messages are displayed chronologically with date separators ("Today," "Yesterday," or a formatted date) to provide temporal context.
New messages automatically scroll the view to the bottom so you always see the latest message. Your own messages are displayed on the right side with a blue background, while messages from other members appear on the left with a gray background.
Join and Leave Notifications
When workspace members connect or disconnect from the chat, presence updates are broadcast to all connected members. The online users bar updates in real time to reflect who is currently active in the workspace.
Key Actions
| Action | How |
|---|---|
| Open chat | Click the floating chat button in the bottom-right corner of any workspace page |
| Close chat | Click the floating chat button again to collapse the chat window |
| Send a message | Type in the input field and press Enter or click Send |
| Check who is online | Look at the online users bar below the chat header |
| View message history | Scroll up in the chat panel to see older messages |
| Check unread messages | Look at the red badge on the floating chat button |
Tips and Notes
- Per-workspace scope. Each workspace has its own independent chat. Messages sent in one workspace are not visible in another. If you switch workspaces, you switch to that workspace's chat history and member list.
- Persistent history. Messages are stored server-side and persist across sessions. When you return to a workspace after logging out and back in, your previous conversation is still available.
- Coordinate during assessments. Use chat during collaborative penetration tests to share findings in real time. For example, when one team member discovers a vulnerability, they can immediately alert the rest of the team through workspace chat without interrupting their workflow.
- Connection resilience. If your network drops, Hawkra automatically attempts to reconnect. Messages sent by others during the disconnection will be available in the history when you reconnect. You do not need to manually reconnect.
- Message length limit. Messages are limited to 10,000 characters. For sharing longer content like code snippets, tool output, or detailed findings, consider using workspace notes or the built-in note-taking features.
- All workspace members. Any authenticated member of a workspace can participate in chat. There are no separate chat permissions -- if you have access to the workspace, you have access to the chat.
Chat messages are visible to all members of the workspace. Do not share sensitive credentials or secrets through chat. Use Hawkra's encrypted notes feature for storing sensitive information securely.