A modern, multi-protocol web terminal application with support for real-time communication, built with cutting-edge technologies across multiple platforms.
- Create and manage terminal sessions through a web interface
- Multi-session support - Run multiple terminals simultaneously
- Session persistence - Resume sessions across browser refreshes
- User-based session isolation - Secure session management per user
- WebSocket support for reliable real-time communication
- WebTransport support for low-latency communication (future-proof)
- Automatic protocol fallback - Uses best available protocol
- Full terminal emulation using xterm.js
- Dynamic resizing - Resize terminals in real-time
- Multiple shell support - Configure different shell types
- Customizable working directories - Start terminals in any directory
- Environment variable support - Configure shell environments
- Responsive design - Works on desktop and mobile devices
- Fullscreen mode - Immersive terminal experience
- Modern UI - Clean, intuitive interface built with React
- Session management panel - Easy session switching and management
Location: clients/web-terminal
A modern React-based web client built with TypeScript and xterm.js, providing a seamless terminal experience in the browser.
Detailed Documentation: Web Terminal README
Location: kt-terminal
A modern terminal server built with Kotlin, following DDD+Kotlin+SOLID principles, with support for WebSocket and WebTransport protocols.
Detailed Documentation: Kotlin Terminal README
Location: rs_terminal
A high-performance terminal server built with Rust, providing low-latency terminal access through WebSocket and WebTransport protocols.
Detailed Documentation: Rust Terminal README
- WebSocket for reliable communication
- WebTransport for next-generation low-latency communication
- Automatic protocol negotiation and fallback
- Clear bounded contexts
- Rich domain models
- Repository pattern
- Use case-driven architecture
- Clean separation of concerns
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Kotlin coroutines for async programming
- Rust's safety and performance
- TypeScript for type safety
- React hooks for component logic
- Works on Windows, macOS, and Linux
- Multiple backend implementations for different use cases
- Responsive design for mobile and desktop
- Node.js 20+ - For frontend development
- pnpm - Package manager for frontend
- Java 21+ - For Kotlin backend
- Gradle 8.5+ - Build tool for Kotlin backend
- Rust 1.80+ - For Rust backend (optional)
# Install dependencies
cd clients/web-terminal
pnpm install
# Start development server
pnpm run dev# Build the project
cd kt-terminal
./gradlew build
# Run the application
./gradlew run
# Run tests
./gradlew test# Build the project
cd rs_terminal
cargo build
# Run the application
cargo run
# Run tests
cargo test-
Start the backend server
cd kt-terminal ./gradlew run -
Start the frontend development server
cd clients/web-terminal pnpm run dev -
Open your browser
- Navigate to
http://localhost:3000 - Create a new terminal session
- Start using the terminal!
- Navigate to
- Located in
clients/web-terminal/src/config/appConfig.ts - Configures API endpoints, WebSocket URLs, and application settings
- Located in
kt-terminal/src/main/resources/application.conf - Configures server port, shell settings, session timeout, and more
POST /api/sessions- Create a new terminal sessionGET /api/sessions- Get all terminal sessionsGET /api/sessions/{id}- Get a specific terminal sessionDELETE /api/sessions/{id}- Delete a terminal sessionPOST /api/sessions/{id}/resize- Resize a terminal session
ws://localhost:8080/ws- WebSocket endpointhttps://localhost:8082- WebTransport endpoint
- Modern, type-safe development environment
- Clear separation of concerns
- Comprehensive documentation
- Test-driven development support
- Easy to extend and modify
- Responsive, intuitive interface
- Low-latency terminal experience
- Secure session management
- Multi-session support
- Cross-platform compatibility
- Scalable architecture
- Multiple backend options
- Easy deployment
- Comprehensive logging and monitoring
- Secure by design
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Follow the existing code style
- Write comprehensive tests
- Update documentation as needed
- Create small, focused pull requests
- Follow the project's architecture
For questions or feedback, please open an issue on the GitHub repository.
- React Documentation
- Kotlin Documentation
- Ktor Documentation
- Rust Documentation
- xterm.js Documentation
- WebSocket API
- WebTransport API
Waylon Terminal - Empowering developers with a modern, high-performance web terminal experience.
β If you find this project useful, please give it a star!
