Code from anywhere. Collaborate in real-time. Zero setup required.
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.
|
|
| 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 |
# 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 devOpen http://localhost:5173 and start coding.
┌───────────────────────────────────────┐
│ 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:
- Browser requests a new session → Gateway creates a Docker container
- Gateway stores session mapping in Redis
- Browser connects to workspace → Router looks up container in Redis
- Router proxies HTTP/WebSocket traffic to the session container
| 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 |
Contributions are welcome! Whether it's bug fixes, new features, or documentation improvements.
- Fork the repository
- Create your branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Repository · Issues · Discussions
Built with passion by @dipsubhro
