Skip to content

About

OBS-STUDIO-RUST is an independent fork of obsproject/obs-studio with all the problems fixed. want to have maintainer privledges? File an issue and tag @zackees

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

18,425 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

obs-studio-rust

Important

We’re unifying OBS into one hybrid Rust/C/C++ build. Prioritize migrating code to Rust and retiring the C/C++ implementations it replaces. Each completed port becomes part of the application, with compatibility and parity checks supporting the transition.

OBS Rust Discord Server Reddit: r/ObsRust Discussions: got an idea? Contributor leaderboard workflow status Merge queue for master

obs-rust logo

This is an independent rewrite of the obsproject's obs-studio.

Same obs studio, but without the bugs. AI generated issues and PRs welcome.

Got an idea? Start a conversation.

Want to help port OBS to Rust? Paste this into your AI agent:

PROMPT="/loop 10m https://raw.githubusercontent.com/obs-rust/obs-studio/refs/heads/master/.claude/skills/obs-worker/SKILL.md"
claude --dangerously-skip-permissions "$PROMPT"

Using another agent? Paste this instead:

You are a worker in obs-rust/obs-studio, the Rust rewrite of OBS Studio.
Take exactly one issue from claim to an open pull request, then stop.
1. Clone https://github.com/obs-rust/obs-studio if you are not in it.
   Read AGENTS.md, then .claude/skills/obs-worker/SKILL.md, and follow it.
   It sends you to docs/rust-port/coordination.md and
   docs/rust-port/testing-policy.md: read both before you code.
2. Pick one open issue from label:ready (fall back to
   label:needs-investigation). Skip any with a recent "Claiming:" comment
   or an open PR that names it. Comment "Claiming: #N" with a short plan.
3. Branch from master. Commit a failing test first (RED), then the fix
   that makes it pass (GREEN). Run ./lint. One PR per issue.
4. Open the PR against master, describing RED and GREEN.
5. Do not merge, never push to master, and never commit secrets.
   Report the PR URL and stop. Maintainers queue PRs; you don't.
Stuck? Ask in the Discord linked in the README, or in Discussions.

Install

OBS-Studio-Rust is a beta. Every package is attached to a release in releases, named OBS-Studio-Rust-<version>-<os>-<cpu>.<ext>: take the newest obs-studio-rust-v* release and the file for your OS and CPU. Each release also ships a SHA256SUMS file.

It installs and runs beside upstream OBS Studio. It has its own app identity and keeps its settings in an obs-studio-rust folder inside the usual per-user config directory, so neither program overwrites the other. On its first start it copies upstream OBS's settings, profiles, scenes and plug-in settings without changing the originals; later upstream changes are not imported again. Windows and macOS are a new app identity, so the OS may ask for capture permissions again.

Linux (x86_64)

  • AppImage — any distribution: chmod +x OBS-Studio-Rust-*-linux-x86_64.AppImage, then run it. The AppImage is tested on AlmaLinux 8 (the glibc 2.28 floor), Ubuntu 22.04, Ubuntu 24.04, Arch Linux and NixOS. On NixOS, see the AppImage entry in the Q&A below.
  • .deb — Ubuntu 26.04: sudo apt install ./OBS-Studio-Rust-*-ubuntu-26.04-x86_64.deb. It installs the GUI as obs-studio-rust-gui; obs-studio-rust is the obs-websocket command-line client. It keeps its settings in ~/.config/obs-studio-rust.
  • Flatpak bundle: flatpak install --user ./OBS-Studio-Rust-*-linux-x86_64.flatpak, then flatpak run io.github.obs_rust.OBSStudioRust. It gets the Freedesktop runtime from Flathub and does not update itself yet: install the next release's bundle the same way. It is not on Flathub (com.obsproject.Studio there is upstream OBS Studio), so it installs as io.github.obs_rust.OBSStudioRust, beside upstream's rather than over it. Its settings are in ~/.var/app/io.github.obs_rust.OBSStudioRust/config/obs-studio, and its plug-ins go in ~/.var/app/io.github.obs_rust.OBSStudioRust/data/obs-studio/plugins/. To bring your scenes over from upstream's Flatpak, copy ~/.var/app/com.obsproject.Studio/config/obs-studio to that config folder.

macOS (arm64, x86_64)

Open the .dmg for your CPU (macos-arm64 on Apple silicon, macos-x86_64 on Intel), copy OBS-Studio-Rust.app to Applications, and start it. Packages are signed and notarized when the project's release credentials are configured. For an unnotarized download, try opening the app once, then allow it in System Settings → Privacy & Security → Open Anyway; for a download you trust, the Terminal alternative is xattr -dr com.apple.quarantine /Applications/OBS-Studio-Rust.app, which removes quarantine from that app only (see Apple's guidance). Its settings are in ~/Library/Application Support/obs-studio-rust.

Windows (x64, arm64)

Unpack the .zip for your CPU, then start bin\64bit\obs64.exe from the unpacked folder. SmartScreen warns on the first start: choose More info, then Run anyway if you trust the download. The -symbols.zip files are only for decoding crash dumps. Its settings are in %APPDATA%\obs-studio-rust.

Conversion progress

How much of libobs is Rust — the part that has to be ported. The rest of the app can stay C++ in the hybrid build. Measured by tools/conversion/measure.py; click the card for the full breakdown.

libobs port progress, click for the full breakdown

Tip

Come talk to us on Discord. We're a new project, and the people building it are there. Ask a question, tell us what works or breaks on your setup (AppImage, .deb, Flatpak, your plug-ins and capture devices), suggest an idea, or follow the port as it lands. No question is too small.

Features

What OBS-Studio-Rust does differently from upstream OBS Studio, for a user: new features, changed behavior and fixed upstream bugs, by area, with links to the issues and pull requests. See the features ledger.

Fixing bugs with AI + Rust

Want to fix one yourself? Contributors, human or AI-assisted, chat about ports and pull requests on Discord.

preview_small.mp4

Launch speed

4.3× faster to the main window and 19% less memory on an NVIDIA streaming rig (#1168, #1170, #1171, #1172).

OBS-Rust launch speed: 4.09 s to 0.95 s, 307 to 250 MiB

Contributors leaderboard

The top five, ranked by merged PRs only, credited to the original author even when a maintainer re-landed the work (counted once). Updated every 4 hours.

obs-rust contributors leaderboard

See all contributors

How CI works here

Lots of people and AI agents work on this repo at the same time, so CI is built to do as little repeated work as possible:

  • Every pull request gets a quick check. It runs the Rust and C tests on Linux, plus macOS or Windows only when your change touches those platforms. It does not build every app package.
  • The full build runs before each release. Once a day, and before anything is published, CI builds and tests everything: every platform, the full app, a Flatpak build check and the release packages. A beta only ships if all of it passes.
  • You can prove your change locally first. One command (ci-lint local-gate run) runs the same Linux checks on your machine and signs your commit. CI sees the signature and skips the checks you already ran. This applies to a pull request from a branch of this repository whose author has write access; a fork PR runs every check anyway, so stamping saves you nothing there.
  • Builds are cached and shared. Rust builds go through soldr, which reuses compiled code across branches and machines.

The full guide, with the tools, rules and commands, is in docs/ci-tooling.md. If you're contributing, please read it before you push: it explains how to avoid overloading the shared machines and CI.

Q&A

Where can I get help, or report something that isn't quite a bug?

Join us on Discord: it's the quickest way to reach the people working on OBS Rust. For a reproducible bug, please also file an issue; for longer ideas, start a discussion.

Does OBS Rust support all of the plug-ins?

Yes. OBS Rust is fully backwards compatible with OBS Studio — the plug-ins you already have should work as-is. If you find one that doesn't, that's a bug: please file an issue and link it here so we can track it.

How do I install it on Linux?

See Install above: the AppImage, the .deb and the Flatpak bundle, and where each one keeps its settings.

How do I run the AppImage on NixOS?

The simplest way is appimage-run (programs.appimage.enable = true;, then appimage-run ./OBS-Studio-Rust-*.AppImage). It gives the AppImage the paths a regular distribution has, and OBS renders on your GPU and finds NVENC.

Running the AppImage directly works through nix-ld. Your configuration needs hardware.graphics.enable = true;, programs.nix-ld.enable = true; and Wayland among nix-ld's libraries:

programs.nix-ld.libraries = with pkgs; [ wayland ];

Without Wayland there, the AppImage stops at start and says so. You don't need to add /run/opengl-driver/lib or the keyboard layouts: the AppImage finds the driver libraries (for NVENC) and /etc/X11/xkb itself.

How do I install plug-ins for the AppImage?

The AppImage loads plug-ins from the same per-user folders as OBS Studio on Linux, so a plug-in you already installed for your own account is picked up as-is. To add one, unpack its Linux build into either of these folders:

  • ~/.local/share/obs-studio/plugins/<plugin>/, with the module at <plugin>/<plugin>.so and its files under <plugin>/data/ (the current layout).
  • ~/.config/obs-studio/plugins/<plugin>/, with the module at <plugin>/bin/64bit/<plugin>.so and its files under <plugin>/data/ (the older layout that many plug-in downloads still use).

Then restart OBS Rust. Tools → Plugin Manager lists what loaded.

Plug-ins installed system-wide by a distribution package (under /usr/lib/obs-plugins or /usr/lib/<arch>/obs-plugins) are not loaded. They were built against that distribution's OBS and libraries, not the ones inside the AppImage. Use the plug-in's own Linux download instead.

A plug-in with its own Qt windows must be built for a Qt 6 release no newer than the one in the AppImage. If a plug-in sits in one of those folders but doesn't load, run the AppImage from a terminal and the log will say why. Then file an issue as above.

Want to see the original README from OBS Project? Click here.

🏆 OBS Project User Abuse Hall of Fame

Bugs they confirmed, then closed. Features you relied on, then removed. Twelve upstream threads where users showed up in numbers and were turned away anyway. Six of them were closed as stale on a single afternoon.

Issue 💬 Fate
🥇 Preview Stutter that appears in Streams/Recordings 184 locked (off-topic)
🥈 OBS Virtual Camera may affect built-in webcams 87 closed not planned, locked
🥉 Removal of --disable-shutdown-check breaks automated background workflows 64 closed not planned, locked
4 Dock Sizes are Reset the next time you open OBS. 34 closed not planned
5 Pause and Resume Recording Doubles or Triples CPU usage 34 closed not planned

In their own words:

“No amount of "I don't like your answer" will change it.” — #9285, to a user who said a downgrade fixed their dropped frames

“However, if you refuse to follow the process, there is nothing we can do, and this report is not actionable.” — #13685, in the same comment that admitted 32.2 had raised the driver minimum

“[…] that decision has already been made.” — #12650, on removing a flag users' setups depended on

See all 12, every quote, and why each one made the cut →

About

OBS-STUDIO-RUST is an independent fork of obsproject/obs-studio with all the problems fixed. want to have maintainer privledges? File an issue and tag @zackees

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages