Search
Press ⌘K or use the search field. Search covers message content across every
channel you can see.
Filters
Section titled “Filters”| Filter | Example |
|---|---|
| Channel | in:#eng |
| Author | from:@dana |
| Before a date | before:2026-07-01 |
| After a date | after:2026-06-01 |
| Has an attachment | has:file |
They combine, and bare words are matched as text:
deploy in:#eng from:@dana after:2026-06-01 has:fileHow it works
Section titled “How it works”SQLite installs use an FTS5 index kept in sync inside the same transaction that
writes the message, so a message is searchable the moment it is sent, and a
deleted message leaves no ghost in the index. Postgres installs use a generated
tsvector column with a GIN index.
Permission filtering happens in SQL rather than by filtering results afterwards. A private channel you are not in cannot appear, even as a count.
Encrypted channels are excluded
Section titled “Encrypted channels are excluded”The server stores only ciphertext for those channels and has no key, so there is nothing to index. They are left out of results rather than returning nonsense. This is the direct cost of encryption and worth weighing per channel.