Skip to content

SubTerm

Cloud IDE with Real-Time Collaboration

MIT License Docker Node.js PRs Welcome


Code from anywhere. Collaborate in real-time. Zero setup required.


SubTerm IDE Preview


Get Started · Documentation · Report Bug · Request Feature


Why SubTerm?

SubTerm is an open-source, browser-based IDE designed for developers who want a powerful coding environment without local setup headaches. Each session runs in an isolated Docker container, providing security and consistency across environments.

For Developers

  • Instant Environment — Start coding in seconds
  • Full Terminal Access — Complete bash shell with PTY
  • VS Code Experience — Monaco editor with IntelliSense
  • GitHub Integration — Clone repos with one click

For Teams

  • Real-Time Collaboration — Edit together, see cursors live
  • Session Sharing — Invite teammates instantly
  • Isolated Workspaces — Sandboxed containers per session
  • Self-Hostable — Deploy on your infrastructure

Features

Feature Description
Editor Monaco VS Code engine with syntax highlighting for 20+ languages
Terminal Full PTY Complete bash shell with command history
Collab Real-Time CRDT-powered sync with live cursor tracking
Security Sandboxed Isolated Docker containers per session
Import GitHub Clone public repositories directly
Share Instant One-click workspace sharing

Quick Start

# Clone the repository
git clone https://github.com/dipsubhro/subterm.git && cd subterm

# Start services
cd gateway && docker compose up -d

# Run the client
cd ../client && pnpm install && pnpm dev

Open http://localhost:5173 and start coding.


Architecture

                              ┌───────────────────────────────────────┐
                              │          Docker Containers            │
                              │  ┌─────────┐ ┌─────────┐ ┌─────────┐  │
                              │  │ Session │ │ Session │ │ Session │  │
                              │  │    1    │ │    2    │ │    3    │  │
                              │  │ :3000   │ │ :3000   │ │ :3000   │  │
                              │  └─────────┘ └─────────┘ └─────────┘  │
                              └───────────────────────────────────────┘
                                              ▲
                                              │ proxy
                                              │
┌──────────┐    create session    ┌─────────────────────┐
│          │ ────────────────────▶│       Gateway       │
│  Browser │                      │       :4000         │
│ (React)  │                      └──────────┬──────────┘
│  :5173   │                                 │
│          │    workspace traffic  ┌─────────▼──────────┐
│          │ ────────────────────▶│       Router        │
└──────────┘                      │       :5500         │
                                  └──────────┬──────────┘
                                             │
                                             ▼
                                  ┌─────────────────────┐
                                  │        Redis        │
                                  │    (Session Store)  │
                                  │       :6379         │
                                  └─────────────────────┘

Flow:

  1. Browser requests a new session → Gateway creates a Docker container
  2. Gateway stores session mapping in Redis
  3. Browser connects to workspace → Router looks up container in Redis
  4. Router proxies HTTP/WebSocket traffic to the session container

Tech Stack

React Node.js Docker Redis Socket.IO Yjs


Documentation

Document Description
Architecture System design, services, and data flow
Deployment Production setup and configuration
Collaboration Real-time editing with Yjs
Execution Engine Container orchestration and PTY

Contributing

Contributions are welcome! Whether it's bug fixes, new features, or documentation improvements.

  1. Fork the repository
  2. Create your branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.


Repository · Issues · Discussions

Built with passion by @dipsubhro

Popular repositories Loading

  1. subterm-frontend subterm-frontend Public

    use web based IDE right into your browser

    JavaScript 2

  2. subterm-backend subterm-backend Public

    use web based IDE right into your browser

    JavaScript

  3. subterm-gateway subterm-gateway Public

    an reverse proxy style gateway that redirects incoming req to specific container's exposed port

    JavaScript

  4. subterm-proxy subterm-proxy Public

    An efficient proxy router that can handle http lifecycle and socket connection too

    JavaScript

  5. docs docs Public

  6. .github .github Public

Repositories

Showing 6 of 6 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…