Rahul Kumar
← All projects

DevSync

2025

Collaborative cloud IDE

DevSync lets a team open the same project in the browser and work on it together. Edits, cursors and selections sync through Yjs CRDTs over WebSockets, and every room runs in its own Docker container, so the terminal, dev servers and even Tkinter apps behave like they would on a local machine. Project state is saved, so a room can be picked up again later.

How DevSync works

Seven parts of the app. The paired videos play in sync, so you see the same action from the host's screen and a peer's screen at the same moment. Hover a video to speed it up.

01Real-time code syncing

Two users editing the same file. Keystrokes, cursors and selections travel over WebSockets as Yjs CRDT updates, so there are no locks and no merge conflicts.

host
peer
▶▶1x2x3x

Each file is a Yjs document. Every client applies the same updates and ends up with the same text, whatever order the updates arrive in. Cursor positions and selections sync alongside the content.

  • WebSocket
  • Yjs
  • CRDT

02Integrated terminal execution

A real shell connected to the room's Docker container. Install dependencies, run a dev server or serve a static site, the same way you would locally.

▶▶1x2x3x

basic shell

▶▶1x2x3x

serving a static site

The terminal is a pseudo-terminal attached to the room's container. Long-running processes such as dev servers and watchers keep running when users disconnect and reconnect.

  • Docker
  • PTY
  • WebSocket
  • Express

03File system synchronization

Creating, renaming, moving or deleting a file on one screen shows up for every connected peer.

host
peer
▶▶1x2x3x

File-tree changes are broadcast as events and every peer applies them in the same order, so the explorer stays the same for everyone even when several people move folders at once.

  • WebSocket
  • Yjs

04GUI execution

GUI programs such as Tkinter apps run inside the container on a virtual display, and their window is streamed back to the browser.

▶▶1x2x3x

tkinter app inside the container

Xvfb provides a virtual X11 display inside the container, and its frames are relayed to a canvas in the browser, next to the terminal.

  • Xvfb
  • X11
  • Docker

05Live preview

Start a dev server in the terminal and a preview pane opens through a reverse proxy.

▶▶1x2x3x

dev server preview

The container's port is exposed through a reverse proxy and shown in a side pane, so everyone in the room sees the running app.

  • Reverse proxy
  • Port forwarding

06Built-in team chat

A chat panel next to the editor, running on the same WebSocket connection.

host
peer
▶▶1x2x3x

Chat uses the same connection as the editor, so there is no second socket to manage. Presence (who is online, who is typing) comes from Yjs awareness.

  • WebSocket
  • Yjs awareness

07Git repository import

Paste a Git URL and the container clones the repository with its history and opens it in the editor.

▶▶1x2x3x

git clone inside the room

The clone runs inside the room's container. When it finishes, the file tree refreshes for everyone in the room.

  • Git
  • Docker