# Workspace groups

**URL:** https://meta.discourse.org/t/workspace-groups/399936
**Category:** Plugin
**Tags:** groups, chat
**Created:** [April 4, 2026, 11:53am UTC](https://meta.discourse.org/t/workspace-groups/399936 "2026-04-04T11:53:39Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![Anton\_Akhmerov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anton_akhmerov/32/169548_2.png) [@Anton\_Akhmerov](https://meta.discourse.org/u/Anton_Akhmerov)
#### Post date: [April 4, 2026, 11:53am UTC](https://meta.discourse.org/t/workspace-groups/399936/1 "2026-04-04T11:53:39Z")

</div>

| | | |
| --- | --- | --- |
| ℹ | **Summary** | Prototype plugin for using one Discourse server as a home for multiple teams (slack- or mattermost-like). |
| 🛠 | **Repository Link** | [GitHub - akhmerov/discourse-workspace-groups · GitHub](https://github.com/akhmerov/discourse-workspace-groups) |
| 📖 | **Install Guide** | [How to install plugins in Discourse](https://meta.discourse.org/t/install-plugins-in-discourse/19157) |

> **This is a prototype plugin, mostly AI-generated, use it at your own risk. Any feedback welcome!**

### Features

I built this because I want to host a single Discourse instance for several research groups, while making each top-level category feel more like a team space. The plugin turns top-level categories into _workspaces_ and subcategories into _channels_. Each channel keeps its normal Discourse topics and also gets a paired chat channel.

The plugin also adds a team overview page, team-focused sidebar navigation, public and private channels, join and leave flows, guest access to individual channels, and archive or unarchive support for channels that should become read-only.

Here is how it looks:

### Configuration

Install the plugin, rebuild Discourse, and enable `discourse_workspace_groups_enabled` in the admin settings. If you want the paired chat behavior, also enable Discourse Chat and configure it so category chat channels can be created and used.

To use the plugin, create a top-level category for a research group and convert it into a workspace. Its subcategories then become channels. The team overview page is the main place to create and manage channels.

If you want ordinary team members to create channels, enable `discourse_workspace_groups_members_can_create_channels`. If some top-level categories should never become workspaces, add their IDs to `discourse_workspace_groups_excluded_top_level_category_ids`.

### Settings

| Name | Description |
| --- | --- |
| `discourse_workspace_groups_enabled` | Enables the plugin and its workspace or channel behavior. |
| `discourse_workspace_groups_members_can_create_channels` | Allows non-admin members of a workspace to create channels. |
| `discourse_workspace_groups_excluded_top_level_category_ids` | A list of top-level category IDs that should never be treated as workspace candidates. |

---

<div class="post-metadata">

### Author: ![mcwumbly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcwumbly/32/103861_2.png) [@mcwumbly](https://meta.discourse.org/u/mcwumbly)
#### Post date: [April 4, 2026, 12:23pm UTC](https://meta.discourse.org/t/workspace-groups/399936/2 "2026-04-04T12:23:22Z")

</div>

I really like what you’re doing here. I can certainly see something like this being appropriate for a larger org that wants to provide groups their own space to organize their communication amongst themselves.

Are you using this in the wild yet?

(I do see your caveat about it being a prototype)

Curious to hear what your real world experience is with it.

---

<div class="post-metadata">

### Author: ![Anton\_Akhmerov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anton_akhmerov/32/169548_2.png) [@Anton\_Akhmerov](https://meta.discourse.org/u/Anton_Akhmerov)
#### Post date: [April 4, 2026, 12:29pm UTC](https://meta.discourse.org/t/workspace-groups/399936/3 "2026-04-04T12:29:14Z")

</div>

Thanks!

It’s fresh out of the oven, so I’m posting it also as an RFC. I’ll still need to develop a migration of a few gigabytes/a decade worth of Mattermost database into it before I can use this in production.

---

<div class="post-metadata">

### Author: ![Anton\_Akhmerov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anton_akhmerov/32/169548_2.png) [@Anton\_Akhmerov](https://meta.discourse.org/u/Anton_Akhmerov)
#### Post date: [April 29, 2026, 4:35pm UTC](https://meta.discourse.org/t/workspace-groups/399936/4 "2026-04-29T16:35:56Z")

</div>

I have an update here:

1. I made a [migration plugin](https://gitlab.kwant-project.org/anton-akhmerov/discourse-mattermost-import) from mattermost (it’s a plugin because it uses a bunch of instance APIs). This is designed to work with the workspace plugin.
2. I imported a 2M messages instance mattermost into a discourse sandbox for testing.
3. Fixed a couple of minor glitches.
4. Everything works, the testers of the sandbox instance are overall satisfied 🎉

---

<div class="post-metadata">

### Author: ![jenmck](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jenmck/32/332487_2.png) [@jenmck](https://meta.discourse.org/u/jenmck)
#### Post date: [July 22, 2026, 10:50am UTC](https://meta.discourse.org/t/workspace-groups/399936/5 "2026-07-22T10:50:11Z")

</div>

> [@Anton\_Akhmerov](#):
>
> create a top-level category for a research group and convert it into a workspace

I’m testing out the plugin and I can’t see anywhere to convert a category into a workspace - where do i find that?

---

<div class="post-metadata">

### Author: ![Anton\_Akhmerov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anton_akhmerov/32/169548_2.png) [@Anton\_Akhmerov](https://meta.discourse.org/u/Anton_Akhmerov)
#### Post date: [July 23, 2026, 12:24pm UTC](https://meta.discourse.org/t/workspace-groups/399936/6 "2026-07-23T12:24:29Z")

</div>

Hey! Cool that you want to try it!

About converting: the site admin should see a button on an _empty_ top-level category, next to the new topic button.

---

<div class="post-metadata">

### Author: ![gilles](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gilles/32/549022_2.png) [@gilles](https://meta.discourse.org/u/gilles)
#### Post date: [July 23, 2026, 2:43pm UTC](https://meta.discourse.org/t/workspace-groups/399936/7 "2026-07-23T14:43:21Z")

</div>

I find your plugin very interesting 👍 I haven’t installed it yet, but the ability to easily switch between a forum and a discussion in each category is ingenious. I think we can use it for other situations too.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [July 23, 2026, 2:50pm UTC](https://meta.discourse.org/t/workspace-groups/399936/8 "2026-07-23T14:50:40Z")

</div>

I built this a while back.

> [@Discourse Category Home house](https://meta.discourse.org/t/discourse-category-home/214227):
>
> Summary: Give users each a specific Homepage (“Home Category”) in your community. It allows you to have a single Discourse in which users have specific “home pages” (read: Category) as determined by their Primary Group. link GitHub: [Repository](https://github.com/merefield/discourse-category-home) https://github.com/merefield/discourse-category-home arrow_right Install: Follow the [plugin installation guide](https://meta.discourse.org/t/install-a-plugin/19157). Enjoying this plugin? Please star it on [GitHub](https://github.com/merefield/discourse-category-home)! prayFeatures Using only the available interface elements of a normal Discourse…

This creates home spaces for different primary groups.

how is this conceptually different, out of interest?

---

<div class="post-metadata">

### Author: ![Anton\_Akhmerov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anton_akhmerov/32/169548_2.png) [@Anton\_Akhmerov](https://meta.discourse.org/u/Anton_Akhmerov)
#### Post date: [July 23, 2026, 3:06pm UTC](https://meta.discourse.org/t/workspace-groups/399936/9 "2026-07-23T15:06:04Z")

</div>

My plugin is an extremely (maybe overly so) ambitious AI-implemented attempt to see if discourse can be made to approximate Slack/Mattermost/Zulip interaction and permissions models. By now it has **a lot**. For example, it manages group memberships, gives users capacity to create and manage categories and chat channels for a more dynamic workspace.

Some of its parts are related to existing features, but I haven’t seen anything coming close. I’m kinda impressed that it worked out—we’re using it for about a month 🙃

---

<div class="post-metadata">

### Author: ![louk](https://avatars.discourse-cdn.com/v4/letter/l/d07c76/32.png) [@louk](https://meta.discourse.org/u/louk)
#### Post date: [July 29, 2026, 2:08am UTC](https://meta.discourse.org/t/workspace-groups/399936/10 "2026-07-29T02:08:59Z")

</div>

It looks great. I’m considering trying this. Wondering whether there are any significant issues flagged with this plugin by existing users?

---

<div class="post-metadata">

### Author: ![Anton\_Akhmerov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anton_akhmerov/32/169548_2.png) [@Anton\_Akhmerov](https://meta.discourse.org/u/Anton_Akhmerov)
#### Post date: [July 30, 2026, 12:16pm UTC](https://meta.discourse.org/t/workspace-groups/399936/11 "2026-07-30T12:16:13Z")

</div>

Some people were unhappy about the chat experience not being as polished as in team-chat-oriented apps, much of it specific to discourse rather than the plugin. No significant issues, but I would only recommend this to someone that is familiar with discourse administration, and preferably also with agentic coding.

The plugin is likely _OK_ out of the box, but it might miss things that you need.

---

<div class="post-metadata">

### Author: ![jenmck](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jenmck/32/332487_2.png) [@jenmck](https://meta.discourse.org/u/jenmck)
#### Post date: [August 30, 2026, 9:38pm UTC](https://meta.discourse.org/t/workspace-groups/399936/12 "2026-08-30T21:38:15Z")

</div>

One issue -

When I’m in the workspace, the site logo link that would normally take me back to the homepage actually takes me to the page I’m currently on.

Screenshot here, showing the site logo link url on hover compared with the url I’m currently on.

 ![image](https://global.discourse-cdn.com/meta/original/4X/9/5/c/95cb8d9787a1ee2a6e5cbbd799dd07d2d32ec24b.png)

edited to add: found another issue

When I created another workspace, both workspaces were listed in the teams section of the sidebar. when i navigate to the first workspace i made, i have the workspace view, like this:

 ![image](https://global.discourse-cdn.com/meta/original/4X/d/6/a/d6a09c5ee2206e67c0c615ee5bca62baa37452cf.png)

But when I go to the second workspace I created, I see the regular sidebar

 ![image](https://global.discourse-cdn.com/meta/original/4X/c/f/d/cfd3c400def32b27f772419035a17244268f332b.png)

---

<div class="post-metadata">

### Author: ![Anton\_Akhmerov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anton_akhmerov/32/169548_2.png) [@Anton\_Akhmerov](https://meta.discourse.org/u/Anton_Akhmerov)
#### Post date: [August 30, 2026, 9:55pm UTC](https://meta.discourse.org/t/workspace-groups/399936/13 "2026-08-30T21:55:36Z")

</div>

That’s quirky, but it’s there by design. I wanted to mimic the experience of being “inside” a team, and so I made it sticky. To exit a workspace use the switcher icon below (two arrows swapping).

---

<div class="post-metadata">

### Author: ![jenmck](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jenmck/32/332487_2.png) [@jenmck](https://meta.discourse.org/u/jenmck)
#### Post date: [August 31, 2026, 8:55am UTC](https://meta.discourse.org/t/workspace-groups/399936/14 "2026-08-31T08:55:02Z")

</div>

Ah, I get it. My feedback would be that it’s not consistent with the Docs Categories plugin and the Admin areas - there’s a distinct `Back to Forum` link at the top of the sidebar in those areas, so it wasn’t intuitive to me where I needed to click to get out of it.

---

<div class="post-metadata">

### Author: ![Anton\_Akhmerov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/anton_akhmerov/32/169548_2.png) [@Anton\_Akhmerov](https://meta.discourse.org/u/Anton_Akhmerov)
#### Post date: [August 31, 2026, 9:52am UTC](https://meta.discourse.org/t/workspace-groups/399936/15 "2026-08-31T09:52:31Z")

</div>

Good point, I’ll need to think about it. Overall the design of the plugin is to alter the discourse layout rather than to extend. My idea was that the users spend 99% of their time in their workspace. So for example I might alter the logo and change the panel further in the next iterations.
