Team Chat
Use the team chat
goshs ships with a live team chat that is synchronized over a websocket connection across every browser visiting the goshs page and the --tui dashboard. It replaces the old shared clipboard with a full, collaboration-focused message log — ideal for coordinating during an engagement or a CTF without leaving the tool.
Each browser picks a nickname (stored in localStorage); the TUI authors messages as tui@<host>.
Features
- Markdown rendering — messages are rendered as Markdown (with emoji), including fenced code blocks. Long code blocks (more than 10 lines) are collapsible.
- Full
:shortcode:emoji set — the complete Mattermost emoji catalog (~1800 emoji) with composer autosuggest and a searchable reaction picker. - Emoji reactions — toggle reactions on any message; hover a reaction chip to see who reacted.
- In-place editing — edit your own messages (press
↑in the composer to recall and cycle through your previous messages). Edited messages are marked(edited). - Image paste — paste an image straight into the composer; it is inlined as base64 (or written to disk with
--persist-chat-images). - File upload — attach a file with the 📎 button. Uploads are stored in
.goshs-chat/and respect--read-only. - Own-message highlight — your own messages are visually highlighted.
- Desktop notifications — opt in with the 🔔 toggle in the composer to get Web Notifications for other people’s messages when the tab is hidden.
Persistence
By default the chat log lives in memory only and is lost when goshs stops. Pass -pc/--persist-chat to write the full log — messages, edit flags, per-emoji reaction authors — to <webroot>/.goshs-chat/chat.json after every change and restore it on restart.
Pasted images are inlined as base64 by default. Pass -pci/--persist-chat-images to instead write pasted images to disk under .goshs-chat/.
Info
The .goshs-chat/ directory (chat log and any uploaded files or images) is created inside the served webroot but is hidden from the directory listing.
Disable the chat
Use -nc/--no-chat to disable the team chat entirely — it will not be shown in the UI. See Restricting functions.