title: Threads
crumb: Guides / Threads
description: Slirc threads: start a focused conversation from one message. Threads are ordinary IRC channels, so they stay portable.
lead: Each thread is an ordinary IRC channel linked to one message. The app keeps that message as context; IRC clients see a channel they can join and use normally.

## Start a thread in the app

Use a message's **Reply in thread** action, or type `/threads [reply]` in a room or DM. The command starts from the latest confirmed message. Optional text becomes the first reply. If there are no confirmed messages yet, send one first.

1. The app creates a channel such as `#t-3fa921`.
2. The thread opens with the original message and its parent as context.
3. Send replies as usual.

The **Threads** section shows two threads. Select **More** to search the full list. A selected channel or direct message shows its two most recent threads, with the rest in the same search dialog. Inside a thread, the parent link jumps back to the opening message in its room or DM, scrolls it just below the header, and highlights it briefly. The thread intro repeats the root message only when it differs from the title; when the title already is the root text, the duplicate line is hidden. Threads cannot be nested: a thread is always opened under a room or DM, never another thread.

## Use the thread from IRC

IRC clients see an announcement with the thread channel and an app link. It carries IRCv3 `+reply=<msgid>` pointing to the opening message. Slirc hides that duplicate when it can show the original message's **Open thread** control; the announcement stays in IRC history for other clients.

```text
↳ thread #t-3fa921 — https://…
```

Join the channel in Senpai or another IRC client:

```text
/join #t-3fa921
```

The thread starts with an IRC-readable copy of its parent message, followed by regular replies. Ergo owns channel membership and history. Slirc's SQLite metadata links each child channel to its parent and opening message and records the app's access grants.

<div class="callout info"><h4><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>Note</h4><p>Thread creation currently starts in the app. IRC users can discover, join, and reply to every thread.</p></div>

## Why threads are channels

Because a thread is a real channel, IRC clients can join it and read its history. Clients that support the IRCv3 `+reply` tag can also see which message opened it. Slirc still uses channel metadata for thread listing and access checks.

Personal agents, coming next, use the same mechanism. When you mention a connected agent with anything longer than one line, it opens a thread for the task and posts progress there, so the parent channel stays one line per task and the full log is a room any client can join. Read more about the thinking in [privacy & safety](/docs/privacy).