{"id":29182650,"url":"https://github.com/javy99/termview","last_synced_at":"2025-07-01T20:07:05.884Z","repository":{"id":301313334,"uuid":"1008632009","full_name":"javy99/termview","owner":"javy99","description":"🖥️ termview is a Go-powered tool that lets you run and share any terminal app (like Bash, Python, Go, etc.) in your browser using PTY and WebSockets. Perfect for demos, teaching, or remote debugging.","archived":false,"fork":false,"pushed_at":"2025-06-26T08:31:31.000Z","size":6020,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-26T08:33:31.142Z","etag":null,"topics":["cli","golang","pty","remote-access","repl","terminal","webapp","websocket","xtermjs"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/javy99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-25T21:10:53.000Z","updated_at":"2025-06-26T08:31:35.000Z","dependencies_parsed_at":"2025-06-26T08:36:00.388Z","dependency_job_id":"c64a2a95-9f18-4d0a-9adc-e9c42c83eae5","html_url":"https://github.com/javy99/termview","commit_stats":null,"previous_names":["javy99/termview"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/javy99/termview","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javy99%2Ftermview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javy99%2Ftermview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javy99%2Ftermview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javy99%2Ftermview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javy99","download_url":"https://codeload.github.com/javy99/termview/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javy99%2Ftermview/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263029212,"owners_count":23402354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","golang","pty","remote-access","repl","terminal","webapp","websocket","xtermjs"],"created_at":"2025-07-01T20:07:05.163Z","updated_at":"2025-07-01T20:07:05.870Z","avatar_url":"https://github.com/javy99.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🖥️ termview\n\n![Go](https://img.shields.io/badge/Go-1.24-blue)\n![License](https://img.shields.io/badge/license-MIT-green)\n\n\u003e Share your terminal in the browser using Go, PTY, and WebSockets — works with any CLI app like Bash, Python, Go, etc.\n\n---\n\n## 📥 Installation\n\nYou can either **download a prebuilt binary** or **build from source**.\n\n### Option 1: Download from Releases\n\nGo to the [Releases page](https://github.com/javy99/termview/releases) and download the right binary for your OS:\n\n| OS       | Download File     |\n|----------|-------------------|\n| Linux    | `termview-linux`  |\n| macOS    | `termview-mac`    |\n| Windows  | `termview.exe`    |\n\n\u003e ✅ Make the binary executable (Linux/macOS):\n\u003e ```bash\n\u003e chmod +x termview-linux\n\u003e ./termview-linux bash\n\u003e ```\n\nOr to build cross-platform binaries manually:\n\n```bash\n# Linux\nGOOS=linux GOARCH=amd64 go build -o termview-linux\n\n# macOS\nGOOS=darwin GOARCH=amd64 go build -o termview-mac\n\n# Windows\nGOOS=windows GOARCH=amd64 go build -o termview.exe\n```\n\n---\n\n### Option 2: Build from Source (Requires Go)\n\n```bash\ngit clone https://github.com/javy99/termview.git\ncd termview\ngo build -o termview\n```\n---\n\n## 🚀 Quick Start\n\n\n### 1. Build the binary\n\n```bash\ngo build -o termview\n```\n\n### 2. Run any terminal-based app or script\n\n```bash\n# Share Bash\n./termview bash\n\n# Share a Python REPL\n./termview python3\n\n# Share a Python script\n./termview python3 ./scripts/hello.py\n\n# Run a Go program\n./termview go run myapp.go\n\n# Share any binary or CLI tool\n./termview ./my-cli-tool\n```\n\n✅ You can run anything that works in a terminal — Bash, Python, Node.js, REPLs, scripts, compiled apps, and more!\n\n### 3. Open in browser\n\nVisit: http://localhost:8080\nUse your terminal app live from the browser!\n\n## 📦 What termview Does\n\ntermview lets you share any terminal-based application over the web.\n  - Run any CLI command or REPL (e.g. bash, python3, go run main.go)\n  - View and interact with it inside your web browser\n  - Works across devices (even mobile browsers)\n  - Ideal for teaching, debugging, demos, or remote terminal sessions\n\n## 🔧 Tech Stack\n\n| Component       | What It Does                                                |\n|----------------|-------------------------------------------------------------|\n| **Go**         | Backend logic and WebSocket server                          |\n| **PTY**        | Creates a fake terminal so apps like `bash` behave normally |\n| **xterm.js**   | Browser-based terminal emulator                             |\n| **WebSockets** | Two-way live connection between browser and Go server       |\n| **FileServer** | Serves frontend assets (`index.html`, JS, CSS)              |\n\n\n## 🔄 Architecture Diagram\n\n```text\n+--------------------------+\n|     Your Web Browser     |\n|  (xterm.js terminal UI)  |\n+------------+-------------+\n             |\n             | WebSocket (keyboard ↔ output)\n             v\n+------------+-------------+\n|    Go WebSocket Server   |\n|     (termview backend)   |\n+------------+-------------+\n             |\n             | PTY (fake terminal device)\n             v\n+--------------------------+\n|   CLI App (bash, python) |\n+--------------------------+\n```\n\n## 📁 Project Structure\n```text\ntermview/\n├── main.go                  # App entry point\n├── server.go                # Server setup and flags\n├── internal/\n│   └── terminal/\n│       └── handler.go       # WebSocket + PTY handling logic\n├── static/\n│   └── index.html           # Frontend terminal UI with xterm.js\n└── README.md\n```\n\n## 📌 Use Cases\n  - Live coding interviews\n  - Teaching Python/Bash/Go remotely\n  - Remote debugging\n  - Web-based REPL\n  - Sharing CLI-only tools\n\n## 📜 License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n\n## 🤝 Contributing\n\nContributions, issues, and feature requests are welcome!  \nFeel free to open an issue or pull request.\n\n---\n\n## 🛠️ TODO\n\n- [ ] Add password protection\n- [ ] Support remote session recording\n- [ ] Docker support\n- [ ] Multiple user sessions","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavy99%2Ftermview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavy99%2Ftermview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavy99%2Ftermview/lists"}