-
Notifications
You must be signed in to change notification settings - Fork 18
Workshop Collaboration Basics
The Workshop is Kai's browser client: people and agents working in the same room. This page covers the collaboration basics: enrolling a browser, finding your way around, and holding conversations. The Agents workspace, the Memory Explorer, and Settings each have their own pages.
The Workshop uses a two-step token flow instead of passwords.
- An operator issues you an enrollment token (it starts with
kai_ws_enroll_v1). Tokens are short-lived; 10 minutes by default, and single-use. - Open the Workshop URL your operator gives you. The enrollment screen asks for a Device name (how this browser appears in your device list, for example "Work laptop Firefox") and the Enrollment token. Click Open Workshop.
- The token is redeemed for a long-lived session credential stored in this browser. You will not be asked again on this device until the session expires (30 days by default) or is revoked.
Enrollment is per browser, per machine. To use the Workshop from a second device, ask your operator for a fresh token.
Forget session, in the profile menu at the bottom of the sidebar, clears the stored credential and everything else the client keeps in this browser, returning it to the enrollment screen. Use it on a shared machine or before handing a device to someone else. Your conversations are unaffected; they live on the server.
The Workshop is a single-page shell in three columns:
- Left sidebar. Navigation. A Workspace section (Memory, Mentions, Following), then your Channels, Direct messages, Notifications (shown only if a notification channel exists), Agents, and a profile footer with Settings and Forget session. The sidebar is collapsible and resizable by drag or keyboard.
- Center pane. The conversation timeline and composer for the selected channel, or a full-pane view (Mentions, Following, Memory, Agents, Settings), each with a Back to conversation button.
- Right context pane. Details about the current channel: connection state, who can read and send, members, attached agents, runtime, and the run inspector. When you open a thread, the thread pane takes this slot.
The client mirrors each view into the URL, so back and forward navigation works and you can bookmark or share any view as a link.
The sidebar groups conversations into three kinds, each with its own symbol:
| Symbol | Kind | What it is |
|---|---|---|
# |
Group channel | Shared room for multiple people and agents. Created by a person, who owns it and manages members and agents. |
@ |
Direct message | Private lane between exactly two participants: you and an agent, or you and another person. |
! |
Notification channel | Outbound-only feed (for example GitHub activity). Kai records deliveries here; there is no composer, no threads, no reactions. |
Direct messages with agents are private per person: even when an agent's definition is shared, your conversations and its memory of you belong to you alone.
- A New messages separator marks the first unread message in a channel.
- When you scroll away from the bottom, a floating pill shows how many new messages arrived; Jump to latest returns you to the live end.
- Read state advances automatically as messages scroll into view; there is no manual mark-as-read inside a conversation.
- Sidebar rows carry an unread pip and a mention badge, so you can see where activity is waiting without opening each channel.
- Older history loads on demand with the Load earlier messages button.
Every message can start a thread: click Reply on a message to open the thread pane on the right. The thread has its own composer and its own New replies divider.
The bell in the thread header is Follow thread / Unfollow thread. Replying does not automatically subscribe you; the bell is the explicit control. Followed threads appear in the Following workspace (sidebar, Workspace section), which lists each followed thread with its channel, the latest reply, and a per-thread unread count, and shows a total unread badge in the sidebar.
Type @ in the composer to mention a person or agent; an autocomplete list opens and arrow keys, Tab, or Enter pick an entry. Mentions are highlighted in the timeline.
When someone mentions you, it lands in your Mentions inbox (sidebar, Workspace section). Each entry says who mentioned you, where, and whether it was a channel message or a thread reply; clicking it jumps to the source. Entries have per-item read dots, and Mark all read clears the inbox (above 100 unread it becomes Mark next 100 read). The sidebar badge tracks your unread mention count.
If you have lost access to the channel a mention came from, the entry says so inline instead of navigating.
Hover a message and use Add reaction to pick an emoji. Reactions appear as chips under the message; clicking a chip toggles your own reaction on or off. Reactions update live for everyone in the channel.
Messages can carry file artifacts. Images (PNG, JPEG, GIF, WebP) render inline, audio files get a player, and everything else shows as a named attachment with its size and a Download button. To send one, use the attach button in the composer; the pending file appears as a chip you can remove before sending.
- Enter sends. Shift+Enter inserts a newline. When the mention autocomplete is open, Enter picks the highlighted entry instead.
- Messages are capped at 50,000 characters; the textarea grows as you type.
- One attachment can be staged alongside the text.
- While an agent run is active in the channel, the Send button becomes Stop. Sending is blocked until the run finishes or you stop it.
- Drafts survive navigation between channels, but only within the current browser tab.
When an agent is working on a message, the channel shows a run activity banner with the agent's status and a live elapsed timer, and the agent's answer streams in as a writing preview bubble before the final message lands. Stop in the composer ends the run.
While a run is active, sending, archiving, and workspace switching are disabled in that channel. The run inspector in the context pane shows the tool calls of the current or most recent run, with expandable rows and copyable details.
The indicator in the conversation header reports the live connection:
| State | Meaning |
|---|---|
| Live | Connected; updates stream in real time |
| Connecting | Establishing the stream |
| Reconnecting | Connection dropped; retrying automatically |
| Resynchronizing | Reconnected after a gap; catching up missed events |
| Waiting / Loading history | Channel opening; history loading |
You do not need to act on any of these; the client recovers on its own. If the indicator stays on Reconnecting, the server side is down or unreachable, which is an operator matter.
You can archive channels and direct messages to declutter the sidebar and reopen them later; an archived conversation becomes read only but keeps its history.
- Group channels. Only the channel owner can archive, and archival applies to everyone in the channel.
- Direct messages. Archival is personal. Archiving a DM hides it for you only ("Archived for you"); the other participant's view is untouched.
You restore from the archive dialogs or from the archived channel's context pane.
- Sending is blocked during an active run. Stop the run first if you need to interject.
- DM archival is per person; channel archival is owner-wide. See Archiving above.
- Drafts and layout are per browser tab. Unsent drafts, pane widths, and scroll positions live in the tab and are gone when it closes. Your theme, by contrast, is an account preference and follows you to every enrolled browser.
- Notification channels are outbound only. They deliver activity to you; nothing you could send there would be read.
- Getting Started -- installing Kai and reaching the Workshop for the first time.
- Multi-User Setup -- how operators provision people and issue enrollment tokens.
- Memory -- what Kai remembers and how the memory system works.