---
title: Collaboration
description: 'Set a chat to personal, team, project or public, share a read-only /share/[token] link to the full workspace or selected jobs, and read presence avatars.'
tags:
  - chat
  - collaboration
---

Collaboration controls let you decide who can see a conversation and share it with your team from within [Ivy](/docs/chat). Reach for them when a chat moves from a personal exploration to shared research, or when you want to hand a result to a teammate. Visibility levels, shareable URLs, and presence indicators work together so you can keep work private, open it to your organization, or make it publicly accessible.

## Collaboration

Ivy supports collaborative research through visibility controls, shareable URLs, and presence indicators. You can keep conversations private, share them with your team, or make them publicly accessible.

## Visibility levels

Every chat has a visibility level that determines who can access it. Click the visibility badge in the chat header to change the current level. You must be the chat owner or an organization admin to modify visibility.

| Level | Icon | Who can access | Use case |
|---|---|---|---|
| **Private** (shown as "personal") | Lock | Only you | Personal explorations, draft analyses, sensitive data |
| **Team** | Group | All members of your organization | Standard team collaboration, shared research |
| **Project** | Folder | Anyone with access to the parent project | Cross-team collaboration on a specific project |
| **Public** | Globe | Anyone with the link (read-only) | Publishing findings, sharing with external collaborators |

> The default visibility for new chats is **Team**. You can change this default in your account settings.

### Private chats

Private chats are visible only to the creator. No other user -- including organization admins -- can see private chats. Use private mode for exploratory research, personal notes, or work involving sensitive compounds before they are ready for team review.

### Team chats

Team chats are visible to all authenticated members of your organization. Team members can view the full conversation history, canvas cards, and tool results. This is the default mode and is suitable for most collaborative work.

### Project chats

Project-level visibility ties the chat to a specific project (campaign). Any user who has access to that project can view the chat, even if they are not in your organization. This is useful for cross-functional teams or external collaborators who have been granted project access.

### Public chats

Public chats generate a shareable URL that anyone can access without authentication. Public viewers see the conversation in read-only mode -- they cannot send messages, run tools, or modify canvas cards. This is ideal for publishing findings or sharing results with reviewers.

> Public share pages carry no `noindex` tag, so search engines can index them, and there is no per-chat setting to turn that off. Avoid sharing sensitive or proprietary research through public chats.

## Sharing URLs

### Copying a share link

1. Click the three-dot menu in the chat header.
2. Select **Copy Link**.
3. The shareable URL is copied to your clipboard.

Share links use vanity slug URLs when available (e.g., `/chat/username/my-analysis`). If the chat owner has set a username, the URL uses that format. Otherwise, a UUID-based URL is used.

### Sharing via token

For public chats, a share token URL is generated at `/share/[token]`, which routes to `/share/chat/[token]`. This URL does not require authentication and provides read-only access to the conversation.

### Choosing shared results

When creating a chat share link, choose **Full workspace** to share all results or **Specific results** to select completed jobs. A specific-results link keeps the full conversation transcript for context, but limits the displayed tool calls, artifacts, canvas cards, and their downloadable or inline files to the selected jobs. Select at least one result before creating that link.

Because the transcript is kept, assistant and user messages can still mention results you did not select. Only completed jobs can be selected: results that don't come from a job (searches, sandbox output) are left out of a specific-results link.

## Team presence

When multiple team members have the same chat open, presence indicators show who is currently viewing or participating.

### Presence indicators

Active users appear as avatar circles near the chat header. Hover over an avatar to see the user's name and when they last interacted with the chat.

### Notification preferences

Each user can configure per-chat notifications:

| Notification | Default | Description |
|---|---|---|
| **Job completion** | On | Alert when jobs submitted in this chat finish running. |
| **Mentions** | On | Alert when a teammate mentions your name in the chat. |
| **Presence changes** | Off | Alert when teammates join or leave the chat. |
| **Sound** | On | Play an audio tone for notifications. |

Toggle these settings from the bell icon in the chat header. Preferences are stored per-chat and synced across devices.

## Guest access

Guests can view public and shared chats without creating an account. Guest sessions have limited functionality:

- Read-only access to conversation history
- View canvas cards in Tier 1 and Tier 2 (interactive Tier 3 may be restricted)
- No ability to send messages, run tools, or modify settings
- No access to pin, branch, or duplicate actions

The chat header hides collaboration controls for guest users to keep the interface clean.

## Best practices for collaboration

### Set visibility before sharing results

Change the visibility level before sharing a link to ensure the recipient has the correct access. If you share a private chat link, the recipient will see an access-denied page.

### Use mentions for directed questions

Type `@username` in a message to mention a teammate. They receive a notification (if enabled) and can quickly navigate to the relevant message.

### Branch before diverging

If a teammate wants to explore a different hypothesis within the same conversation, use the **Branch** action instead of continuing in the same thread. This preserves the original conversation and creates a clean fork for the alternative direction.
