Skip to content

arryllopez/meerkat

Repository files navigation

Meerkat

License: GPLv3 Status PRs Welcome GitHub Stars Discussions Rust Python Blender Tokio Axum WebSocket macOS Linux Windows

Real-time collaborative editing inside Blender — multiplayer scene editing, live transforms, and shared sessions.

Meerkat Demo — real-time object sync between two Blender instances

Lawrence Arryl Lopez (1)

Alpha dropping soon — join the discussion


Why Meerkat?

Blender has no built-in real-time collaboration. If you're working with a team, you're juggling .blend file versions over chat or cloud sync — hoping nobody overwrites each other's work.

Meerkat fixes that.

Feature Meerkat Manual File Sync Proprietary Alternatives
Real-time transform sync Partial
Conflict resolution Partial
Presence indicators Some
Open-source
Works inside Blender
Cloud relay (optional)
Peer-to-peer option

Features

  • Multiplayer Scene Editing — Multiple artists editing the same scene simultaneously
  • Live Transforms — Object position, rotation, and scale synced in real-time
  • Shared Sessions — Host or join a session directly from the Blender UI panel
  • Conflict Resolution — Handles simultaneous edits gracefully without overwriting work
  • Presence Indicators — See who's in the session and what they're selecting
  • Peer-to-Peer Option — Direct connections without a relay server when on the same network
  • Cloud Relay — Optional hosted relay for remote teams (no port forwarding required)

Roadmap

  • Phase 1 (Weeks 1-2): Rust server foundation - WebSocket server, session state, event handlers, and broadcast infrastructure.
  • Phase 2 (Weeks 2-3): Blender plugin skeleton - addon structure, connect/disconnect flow, and initial full state sync.
  • Phase 3 (Weeks 3-4): Object lifecycle sync - create/delete/sync for primitives, cameras, lights, and asset references.
  • Phase 4 (Weeks 4-5): Transform and property sync - 30Hz throttled transforms, property updates, and name syncing.
  • Phase 5 (Weeks 5-6): Presence and resilience - users panel, selection highlights, robust full sync, reconnect handling, and scene export.
  • Phase 6 (Weeks 6-7): Observability and durability - file-backed event log, crash recovery, metrics endpoint, and benchmarking.
  • Phase 7 (Weeks 7-8): Polish and deployment - Docker, cloud deployment (WSS), rate limits, packaging, ADRs, and launch demo.

Detailed implementation checklist: CLAUDE.MD (see Implementation Phases).


Architecture

Meerkat Architecture Diagram

Meerkat is split into two components:

  • Rust backend (tokio + axum) — Handles WebSocket sessions, object ID/transform diffing, and relay logic. Only transmits object IDs and transforms rather than full mesh data, keeping bandwidth minimal.
  • Python Blender plugin — Hooks into Blender's depsgraph update handlers to capture and broadcast local changes, and applies incoming remote deltas to the scene.

Requirements

Runtime

Dependency Purpose
Blender 4.0+ Plugin host
Python 3.10+ Bundled with Blender
Rust 1.75+ Backend server (if self-hosting)

Build (source installs only)

  • Rust 1.75+
  • Python 3.10+
  • Blender 4.0+ (for plugin testing)

Installation

Alpha not yet released. Instructions will be finalized for the first release. Watch the repo or join the discussion to be notified.

From source (backend):

git clone https://github.com/arryllopez/meerkat.git
cd meerkat
cargo build --release

Plugin (Blender):

# Coming soon — will be installable via Blender's Add-on preferences
Edit → Preferences → Add-ons → Install → select meerkat.zip

Usage

# Start the relay server (self-hosted)
./meerkat-server

# Or connect to the hosted relay — configured directly in the Blender panel

Inside Blender, open the Meerkat side panel (N key → Meerkat tab):

Action Description
Host Session Start a new collaborative session
Join Session Connect to an existing session by ID
Leave Session Disconnect from the current session
View Peers See who's currently connected

Development

cargo build         # Build backend binary
cargo test          # Run unit/integration tests
cargo clippy        # Lint (enforced via pre-commit)

Plugin development:

# Symlink plugin into Blender's addons directory for live reloading
ln -s $(pwd)/plugin ~/.config/blender/4.x/scripts/addons/meerkat

Contributing

Contributions are welcome — especially around networking, Blender Python API expertise, and conflict resolution strategies.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feat/your-feature)
  3. Commit your changes
  4. Open a Pull Request

Have a question or idea? Start a discussion.


Featured In

Know a place Meerkat should be listed? Open an issue or submit a PR.


Star History

Star History Chart


License

Licensed under the GNU General Public License v3.0.

  • You can use, modify, and distribute this software freely.
  • Any derivative work must also be open-source under GPLv3.
  • No proprietary forks.

See the LICENSE file for full details.

About

real time collaborative scene layouts in blender

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages