Skip to content
zhaojh329Public

About

πŸ› Access your device from anywhere via the web.

Topics

Resources

Contributing

Stars

4.0k stars

Watchers

97 watching

Forks

Latest commit

Β 

History

738 Commits

Folders and files

Repository files navigation

rtty (δΈ­ζ–‡) - Access your device from anywhere via the web

This project is officially supported by GL.iNet.

license PRs Welcome Issue Welcome Release Version Build Status Downloads visitors

Project website Β· Installation & usage guide

Architecture

flowchart TB
s["rttys server"]
u1["User (Web Browser)"] --> s
u2["User (Web Browser)"] --> s
u3["User (Web Browser)"] --> s
s --> c1["rtty (Linux Device)"]
s --> c2["rtty (Linux Device)"]
s --> c3["rtty (Linux Device)"]
Loading

Remote terminal in the browser File upload and download Access to a device's web interface

Overview

rtty is a remote access solution composed of device clients and the rttys server. This repository contains the C client; rttys provides the web interface and relays connections to devices. Open a terminal, transfer files, and access device services through a central server.

Client Implementations:

  • C Client: Ultra-lightweight, designed for embedded Linux and resource-constrained devices.
  • Go Client: Easy cross-platform compilation, suitable for rapid integration and deployment.

The server is implemented in Go, with a modern frontend built using Vue.

Both browsers and device clients must be able to reach the server. Clients initiate connections to it, so devices behind NAT do not need public IP addresses or inbound port forwarding. Access devices through your browser and identify them by device ID and group.

Use rtty to maintain OpenWrt routers, troubleshoot embedded Linux gateways, or manage distributed Linux devices remotely.

Go client repository: https://github.com/zhaojh329/rtty-go

Key Features

πŸš€ Multi-language Client Options

  • C Client:

    • Ultra-lightweight, designed for embedded Linux and resource-constrained devices
    • Multiple SSL backends (OpenSSL, mbedtls, CyaSSl/wolfssl)
    • mTLS support for mutual authentication
  • Go Client:

    • Easy cross-platform compilation, suitable for rapid integration and deployment
    • Dependencies managed by the Go toolchain for straightforward builds and deployment
    • Connects to the same rttys server as the C client

πŸ” Security

  • TLS encryption for connections between device clients and rttys
  • Optional mutual TLS (mTLS) for certificate-based client authentication

🌐 Advanced Remote Management

  • Batch command execution across multiple devices
  • Device identification and organization using IDs and groups
  • HTTP proxy support for accessing device web interfaces
  • TCP port forwarding for accessing TCP services through connected devices

πŸ“ File Management

  • Upload and download files through the web interface

πŸ’» Modern Terminal Experience

  • Full-featured terminal powered by Xterm.js
  • Browser-based access from anywhere
  • Virtual keyboard support for touch devices
  • Window splitting for multi-session and multitasking
  • Serial terminal forwarding support

⚑ Deployment & Compatibility

  • Simple deployment: configure the server and connect your devices to get started
  • Manage devices, access terminals, and transfer files through the web interface
  • Clients for Linux and OpenWrt environments

Production Users

Trusted by leading technology companies:

Client Dependencies

C Client Dependencies

  • Required:
    • libev - High-performance event loop library
    • inih - Lightweight INI parser for loading rtty config file
  • Optional (for SSL support):

Go Client Dependencies

  • Go module dependencies are managed by the Go toolchain.

⭐ Star History

Star History Chart

🀝 Contributing

Help us make rtty even better!

See the CONTRIBUTING.md file for detailed guidelines on how to contribute to this project.

❀️ Donation

About

πŸ› Access your device from anywhere via the web.

Topics

Resources

Contributing

Stars

4.0k stars

Watchers

97 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages