Owncast Chat Bridge
Bring your Owncast stream chat into Minecraft, and send Minecraft chat back to your stream.
Owncast Chat Bridge is a small server-side mod for Forge 1.20.1 and NeoForge 1.21.1 that connects your Owncast chat with in-game chat. Viewers' messages appear in-game for every player, and player messages show up in your stream chat. You don't need RCON, a separate bot, or log-tailing. Drop in the jar, fill in the config, and you're set.
Features
- Two-way chat: stream chat appears in-game, and in-game chat is posted back to Owncast.
- Viewer name colors: each chatter's name uses their Owncast color (with adjustable saturation and lightness).
- Join and leave messages: optional "name joined the chat" and "name left the chat" lines in-game.
- Filtering:
- Block specific Owncast users.
- Block or censor (
***) words and phrases, in both directions. - Cap message length.
- Replace links with
<link>.
- No echo loops: messages never bounce back and forth between game and stream.
- Server-side only: players don't need to install anything.
- Lightweight: it uses Java's built-in HTTP server and adds no extra dependencies.
Requirements
| Loader | Minecraft | Java | Download |
|---|---|---|---|
| Forge 47.x | 1.20.1 | 17 or newer | owncast-chat-bridge-forge-1.20.1-x.y.z.jar |
| NeoForge 21.1.x | 1.21.1 | 21 or newer | owncast-chat-bridge-neoforge-1.21.1-x.y.z.jar |
You also need an Owncast server you can administer.
The server must run on a full JDK, not a stripped-down runtime. Standard server installs and hosting panels already use one.
Setup
1. Install
Put the jar for your loader in your server's mods/ folder, start the server once to generate the config, then stop it.
2. Create an Owncast access token (for game → stream)
In Owncast admin, go to Integrations → Access Tokens → Create Access Token. Give it the Send chat messages scope and copy the token.
3. Configure
Edit config/owncastbridge-common.toml:
[owncast]
baseUrl = "http://localhost:8080" # your Owncast server, no trailing slash
accessToken = "PASTE_YOUR_TOKEN"
[webhook]
port = 8100 # port this mod listens on
secret = "some-long-random-string" # optional but recommended
[relay]
streamToGame = true
gameToStream = true
streamPrefix = "[Stream] "
The config also has sections for [colors] (name colors), [events] (join and leave lines) and [filter] (blocked users and words, link stripping, length limit). Each option is commented in the generated file.
4. Point Owncast at the mod (for stream → game)
In Owncast admin, go to Integrations → Webhooks → Create Webhook and use this URL:
http://<minecraft-server-host>:8100/owncast?secret=some-long-random-string
Turn on these events:
- When a user sends a chat message (required)
- When a user joins the chat (optional, for join lines)
- When a user leaves the chat (optional, for leave lines)
If Owncast runs on a different machine, make sure port 8100 is reachable from it (firewall or port forward). If you left secret blank, drop the ?secret=... part.
Start the server. Stream chat now shows up in-game as [Stream] username: message.
FAQ
Does it work in singleplayer? Yes.
Join and leave lines are spammy.
Owncast sends these whenever a viewer's chat connection opens or closes, and that includes page refreshes. Turn off showJoins or showLeaves in [events] to hide them.
The server won't start after adding the mod. Check that you used the jar for your loader and Minecraft version. NeoForge 1.21.1 also needs Java 21; Java 17 won't load it.
I get NoClassDefFoundError: com/sun/net/httpserver/....
Your server is running on a stripped-down Java runtime. Run it with a full JDK (17+ for Forge 1.20.1, 21+ for NeoForge 1.21.1).
Fabric or other Minecraft versions? Not right now. Only Forge 1.20.1 and NeoForge 1.21.1 are supported.
Licensed under MIT.

