# Concord: a Discord-alternative theme for Discourse

**URL:** <https://meta.discourse.org/t/concord-a-discord-alternative-theme-for-discourse/414805>\
**Category:** Theme\
**Tags:** chat, voice\
**Created:** [October 15, 2026, 8:00pm UTC](https://meta.discourse.org/t/concord-a-discord-alternative-theme-for-discourse/414805 "2026-10-15T20:00:50Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![awesomerobot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/awesomerobot/32/142900_2.png) [@awesomerobot](https://meta.discourse.org/u/awesomerobot)\
**Post date:** [October 15, 2026, 8:00pm UTC](https://meta.discourse.org/t/concord-a-discord-alternative-theme-for-discourse/414805/1 "2026-10-15T20:00:50Z")

</div>

| | | |
| --- | --- | --- |
| ℹ | **Summary** | A self-hosted, open-source Discord alternative: turn Discourse into a channel-based community with text, voice, and forum channels. |
| 🛠 | **Repository** | [github.com/awesomerobot/concord](https://github.com/awesomerobot/concord) |
| ❓ | **Install Guide** | [How to install a theme or theme component](https://meta.discourse.org/t/how-do-i-install-a-theme-or-theme-component/63682) |
| 📖 | **New to Discourse Themes?** | [Beginner’s guide to using Discourse Themes](https://meta.discourse.org/t/beginners-guide-to-using-discourse-themes/91966) |

Install this theme

When you use Discourse to run your own independent site you can choose your [policies](https://discord.com/safety/age-assurance-on-discord-vendors-methods-and-your-data), allow your site to be publicly viewable, and publish content to be indexed by search engines and crawlers. Plus you can extend it and restyle it however you’d like!

 ![discord style chat channel](https://global.discourse-cdn.com/meta/original/4X/8/b/3/8b3fdc1a174434277ea5688b365ca9e2b40494d7.png)  
 ![discourse forum channel topic list](https://global.discourse-cdn.com/meta/original/4X/9/4/b/94b26f19e4b947be0972930a6c15fd05882950cb.png)  
 ![discourse forum channel topic](https://global.discourse-cdn.com/meta/original/4X/2/8/6/2861474019ea02077bedcc091acbcf1f3ae4ba12.png)

Concord makes everything a channel and shows all channels in a custom sidebar:

- **Categories** are forum channels
- **Chat channels** are text channels
- **Voice rooms** (from the [voice plugin](https://meta.discourse.org/t/voice-discord-style-voice-and-video-rooms-now-bundled-with-discourse/411337/)) are voice channels
- **Tags** can optionally be tag channels too

The custom header contains a dropdown menu with site-wide pages (about, groups, badges, admin, etc) which is next to the current channel’s name, description and actions. Direct messages live in their own view, and there’s a member list right sidebar showing who’s online.

 ![image](https://global.discourse-cdn.com/meta/original/4X/0/2/4/02418ee912360963c0aea8819944685ee98a2002.png)

 ![Discord style header menu](https://global.discourse-cdn.com/meta/original/4X/0/d/7/0d7dd3148cc7816c811db80afd6cf0765b1f5d57.png)

⚠ This dramatically changes the layout of Discourse, so it won’t be compatible with every plugin or theme component. It also depends on some very recent changes in core, so make sure you’ve updated Discourse before installing it (you’ll need a build from October 15, 2026 or later).

### Setting it up

Concord requires a few site setting changes, so here’s what to check in your Discourse site settings after you install it.

As an admin, you can view all these settings simultaneously by pasting this to the end of your Discourse URL:

```plaintext
/admin/site_settings/category/all_results?filter=any:navigation_menu|default_homepage|chat_enabled|chat_allowed_groups|enable_public_channels|voice_allowed_groups|voice_create_room_allowed_groups|enable_user_status|tagging_enabled

```

ℹ Note that you need to enable voice from upcoming changes to see the relevant settings, `/admin/config/upcoming-changes`

| Site Setting | What to set it to |
| --- | --- |
| `navigation menu` | `sidebar` (required, the channel list _is_ the sidebar) |
| `chat enabled` | `enabled` if you want text channels and DMs |
| `chat allowed groups` | whoever should be able to chat, include `anonymous_users` for logged-out viewing |
| `enable public channels` | `enabled` so staff can create text channels |
| `voice enabled` | `enabled` if you want voice channels |
| `voice allowed groups` | whoever should be able to join voice channels |
| `voice create room allowed groups` | whoever should be able to create voice channels |
| `enable user status` | optional, statuses show up on avatars in the user panel and header |
| `tagging enabled` | optional, only needed if you turn on the theme’s `include tags` setting |
| `default homepage` | optional, but you can now set this to a chat channel of your choosing |

### Creating channels

The `+` next to your site name opens a “create channel” modal. It only offers the channel types you’re allowed to create:

- **Forum** creates a category (anyone who can create categories)
- **Text** creates a chat channel (staff)
- **Voice** creates a voice room (the `voice create room allowed groups` setting)

 ![the create channel modal](https://global.discourse-cdn.com/meta/original/4X/1/e/f/1ef10d306bb25e6481711a1d253ecce4d2c93aa2.png)

Each type can be made private to a set of groups. You can change this later from **Privacy** in the channel’s `…` menu from the sidebar.

 ![the privacy link in the sidebar menu](https://global.discourse-cdn.com/meta/original/4X/3/6/e/36ee27617521c6a7350c7d0194869fb0c1651cb1.png)

In Discourse, chat channels get their permissions from a category, so each text channel you create in this theme gets an empty “backing” category, nested inside a `chat-channels` parent category. These categories are hidden from the channel list, so you shouldn’t need to think about them… but don’t post topics in them (regular users aren’t allowed to)! When you delete a text channel from its `…` sidebar menu, its backing category is deleted too.

### Organizing sidebar channels

Channels can be grouped into collapsible sections. Admins can create, rename, reorder and delete sections from the `…` menu on a section heading, and move channels between them from the `…` menu on each channel. Anything not in a section is listed at the top, alphabetically.

 ![choosing a sidebar section from the menu](https://global.discourse-cdn.com/meta/original/4X/c/5/0/c5043d318f137294e42aac4c64650641350ee686.png)

Sections are site-wide, so everyone sees the same layout. Changes show up for other people the next time they load the page.

### Theme settings

| Name | Description |
| --- | --- |
| include tags | List the user’s sidebar tags as channels (off by default) |
| include chat channels | List chat channels as text channels (on by default) |
| ai conversations link | Show a button for AI bot conversations next to the site name, for people who can use them (requires Discourse AI with Chatbot enabled) |
| remember last channel | Reopen the channel someone was last in when they come back to your site |
| chat container category | Slug of the category that holds the backing categories for text channels, defaults to `chat-channels` |
| sidebar sections | The sections and the channels in each, you can manage these from the sidebar, this is just where the data is stored |
| member list roles | Groups shown as roles at the top of the member list, in order (admins and moderators by default) |

### Other things to note

- Everyone sees every channel they have access to, there’s no way (yet) for people to hide individual channels from their own list. Muting a channel still works as usual for notifications.
- Opening a text channel joins it, just like Discord. If someone leaves a channel it’ll still be listed, so muting is the better option for quieting one down.
- Subcategories don’t get their own spot in the channel list, instead they’re shown as boxes at the top of their parent’s forum channel. The theme generally suggests a flat structure, but you can choose a parent category for a forum channel by editing it after creation.
- Deleting a text channel from chat’s own settings page is hidden for channels with a backing category, so they’re always deleted from the channel’s `…` menu (which also cleans up the category). If a channel gets deleted some other way, like through the API, the backing category is left behind and you’ll want to remove it yourself.
- Chat always opens full page, never in the drawer.
- “Online” in the member list means active anywhere on the site in the last few minutes, not just in chat. People who hide their presence stay hidden.
- On sites with a very large number of channels, only the first 500 text channels are loaded into the list. Similarly, a private chat channel’s member list loads its first 250 members up front, and the rest as you scroll.
- Making a voice channel private adds the _current_ members of the groups you pick (up to 200). People who join those groups later won’t get access automatically, since voice rooms don’t have group permissions. You’ll have to invite additional members manually.
- If you switch away from Concord later, the backing categories for your text channels will still be there (and visible on `/categories`), so you may want to delete those.

There’s still so much we can do here, but this is a solid foundation if you’re looking for a Discord alternative you can self-host (or use on our paid [discourse.org](http://discourse.org) hosting!).

As always, feedback and thoughts are welcome!

---

_[View the full topic](https://meta.discourse.org/t/concord-a-discord-alternative-theme-for-discourse/414805)._
