<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jakub Dvořák</title>
    <description>The latest articles on DEV Community by Jakub Dvořák (@jakub_dvorak).</description>
    <link>https://dev.to/jakub_dvorak</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4226280%2F1e4d2fd6-b62b-4deb-bc2b-de337492a00f.png</url>
      <title>DEV Community: Jakub Dvořák</title>
      <link>https://dev.to/jakub_dvorak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jakub_dvorak"/>
    <language>en</language>
    <item>
      <title>I’m building RIM, a self-hosted chat workspace with plugins and commands</title>
      <dc:creator>Jakub Dvořák</dc:creator>
      <pubDate>Wed, 04 Nov 2026 13:39:04 +0000</pubDate>
      <link>https://dev.to/jakub_dvorak/im-building-rim-a-self-hosted-chat-workspace-with-plugins-and-commands-3412</link>
      <guid>https://dev.to/jakub_dvorak/im-building-rim-a-self-hosted-chat-workspace-with-plugins-and-commands-3412</guid>
      <description>&lt;p&gt;Hi DEV! &lt;/p&gt;

&lt;p&gt;I’m the maintainer of &lt;a href="https://rim-platform.org" rel="noopener noreferrer"&gt;RIM&lt;/a&gt;, an open-source, self-hosted chat workspace.&lt;/p&gt;

&lt;p&gt;The idea is to put your tools and everyday actions beside your conversations. RIM has channels, DMs, groups and threads, but the part I’m most interested in sharing is how you can shape the workspace through plugins, commands, shortcuts and macros.&lt;/p&gt;

&lt;p&gt;For example, the Kubernetes plugin shows pods alongside chat and lets you restart one after confirmation. The GitHub pull-request plugin puts open PRs in a panel beside the conversation. There are also plugins for polls and release tracking.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fydrulgb01v91k2sudjcj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fydrulgb01v91k2sudjcj.gif" alt="Animated demo of RIM showing a GitHub pull-request panel beside a chat conversation, followed by the command palette and message search." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A quick tour of RIM: plugin panels, commands and search. Recorded in the running app with fictional demo conversations.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Plugins run in your client and can add panels, commands and context actions. Sandboxed web plugins work in both the browser and desktop app. Desktop process plugins can also connect to tools on your computer, such as kubectl.&lt;/p&gt;

&lt;p&gt;Commands bring those actions into a searchable palette. You can assign eligible commands your own shortcuts, and macros save sequences of supported commands with their arguments so you can run a routine again without repeating each step.&lt;/p&gt;

&lt;p&gt;I’m curious what other people would build with that foundation—a connection to an internal tool, a useful panel, or an action their team repeats every day.&lt;/p&gt;

&lt;p&gt;The server is written in &lt;strong&gt;Rust&lt;/strong&gt;, backed by &lt;strong&gt;PostgreSQL&lt;/strong&gt;. The client uses &lt;strong&gt;React and TypeScript&lt;/strong&gt;, with &lt;strong&gt;Tauri&lt;/strong&gt; for the desktop app. A documented Docker Compose setup runs the server, database and web client. Desktop downloads are available for Linux and Windows.&lt;/p&gt;

&lt;p&gt;RIM connects independently operated servers through relays and workspace hosts. Your relay handles your account and routes requests and events between your devices and the servers hosting your workspaces. A workspace host manages its channels, membership, permissions and moderation.&lt;/p&gt;

&lt;p&gt;One server can do both jobs, which is how the Docker Compose setup starts. People using different relays can message each other and join shared workspaces without creating a separate account on every workspace host. Your identity is based on keys, with device linking and a recovery phrase.&lt;/p&gt;

&lt;p&gt;DMs and private groups support MLS end-to-end encryption. Workspace channels, including private channels, are readable by their host server.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;early 0.0.x software&lt;/strong&gt;, with one maintainer. There’s no mobile app or voice/video calling yet, and the identity and encryption implementation has not had an external cryptographic review. The public instance is a community test service, with no guarantees of availability or data retention.&lt;/p&gt;

&lt;p&gt;I also want to be transparent about development: I use AI coding agents extensively. I make the product and architecture decisions, review every change, and test locally and in a real browser against a throwaway server before each release. I’m responsible for maintaining what ships.&lt;/p&gt;

&lt;p&gt;If you’d like to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chat.rim-platform.org" rel="noopener noreferrer"&gt;Try the hosted web app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rim-platform.org/docs/self-hosting.html" rel="noopener noreferrer"&gt;Run your own instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rim-platform" rel="noopener noreferrer"&gt;Browse the source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rim-platform.org/docs/client/plugin-tutorial.html" rel="noopener noreferrer"&gt;Explore the plugin tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;RIM is Apache-2.0 licensed. I’m looking for early testers, feedback on the self-hosting experience, and people interested in experimenting with plugins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What tool or action would you want beside your team’s conversations?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>rust</category>
      <category>react</category>
    </item>
  </channel>
</rss>
