Skip to content

Search

Press ⌘K or use the search field. Search covers message content across every channel you can see.

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:file

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.

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.