{"id":31554641,"url":"https://github.com/bravo68web/conn-pty","last_synced_at":"2026-04-02T02:51:10.058Z","repository":{"id":317025726,"uuid":"1060522522","full_name":"BRAVO68WEB/conn-pty","owner":"BRAVO68WEB","description":"Conn-Pty: Web-SSH made Easy","archived":false,"fork":false,"pushed_at":"2025-09-28T09:43:22.000Z","size":488,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-28T11:37:38.207Z","etag":null,"topics":["bun","docker","oss","rust","self-hosted","selfhosted","ssh","ssh-client","wasm"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BRAVO68WEB.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-20T04:27:30.000Z","updated_at":"2025-09-28T09:42:18.000Z","dependencies_parsed_at":"2025-09-28T11:37:54.146Z","dependency_job_id":"f1a6ecf3-d2fd-46f6-8e83-814832c69141","html_url":"https://github.com/BRAVO68WEB/conn-pty","commit_stats":null,"previous_names":["bravo68web/conn-pty"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/BRAVO68WEB/conn-pty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BRAVO68WEB%2Fconn-pty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BRAVO68WEB%2Fconn-pty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BRAVO68WEB%2Fconn-pty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BRAVO68WEB%2Fconn-pty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BRAVO68WEB","download_url":"https://codeload.github.com/BRAVO68WEB/conn-pty/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BRAVO68WEB%2Fconn-pty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278373518,"owners_count":25976150,"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","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bun","docker","oss","rust","self-hosted","selfhosted","ssh","ssh-client","wasm"],"created_at":"2025-10-04T21:11:47.078Z","updated_at":"2025-10-04T21:11:52.217Z","avatar_url":"https://github.com/BRAVO68WEB.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Conn‑PTY Logo](assets/logo.png)\n\n# 🚀 Conn‑PTY\n\nA modern, WASM‑powered SSH console with real‑time WebSocket transport, a slick React UI, and a Bun‑based API. Manage servers, credentials, and sessions — all from your browser. 🧑‍💻✨\n\n## 🌟 Highlights\n- ⚙️ WASM SSH client with raw WebSocket fallback\n- 🖥️ Beautiful console UI using xterm.js with custom brand theme\n- 🔌 Bun API using Hono, with secure session activation and ssh2 bridge\n- 🧩 Monorepo with Turborepo for consistent builds\n\n## 🧭 Architecture \u0026 Flow\nThe high‑level flow from your browser to the SSH server:\n\n![Process Graph](assets/arch.png)\n\n1. 🌐 Browser loads the Console app (Vite dev or Nginx prod)\n2. 🧠 Console’s Terminal initializes the WASM SshClient and connects via `ws(s):///ws/ssh?session_id=...`\n3. 🔌 API upgrades the WebSocket and activates the session, building SSH config\n4. 🔐 API bridges WebSocket messages to ssh2 and streams terminal I/O\n5. ⌨️ User input, resizing, and status/errors flow bidirectionally in real time\n\n## 🚀 Self‑Hosting\nTo host Conn‑PTY yourself:\n\n```yaml\nservices:\n  api:\n    image: ghcr.io/bravo68web/conn-pty:latest\n    environment:\n      - NODE_ENV=production\n      - OIDC_ISSUER\n      - OIDC_CLIENT_ID\n      - OIDC_CLIENT_SECRET\n      - OIDC_REDIRECT_URI\n    restart: unless-stopped\n    volumes:\n      - db:/app/data\n\nvolumes:\n  db:\n    driver: local\n```\n\n## 📦 Packages\n- packages/api — Bun/Hono API, WebSocket SSH handler → ./packages/api\n- packages/console — React/Vite UI, xterm, WASM client integration → ./packages/console\n- packages/ssh-client-wasm — Rust → WASM SshClient (via wasm‑pack) → ./packages/ssh-client-wasm\n\n## 🛠️ Development\nPrereqs: Bun, Node, Rust (for WASM), wasm‑pack.\n\n- Start API (dev):\n  - `cd packages/api \u0026\u0026 bun run dev` → http://localhost:3000\n- Start Console (dev):\n  - `cd packages/console \u0026\u0026 bun run dev` → http://localhost:8080\n- Console dev proxies:\n  - REST: `/api` → `http://localhost:3000`\n  - WebSocket: `/ws/ssh` → `ws://localhost:3000`\n\n## ⚙️ Configuration\nKey environment variables (API):\n- `OIDC_ISSUER`, `OIDC_CLIENT_ID`, `OIDC_CLIENT_SECRET`, `OIDC_REDIRECT_URI` for authentication\n\n## 🤝 Contributing\n- Fork, branch, and open PRs\n- Keep commits scoped and descriptive\n- Write secure code (never commit secrets)\n\n## 📝 License\nMIT — free to use, modify, and distribute.\n\nMade with ❤️ by [@bravo68web](https://github.com/bravo68web)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbravo68web%2Fconn-pty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbravo68web%2Fconn-pty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbravo68web%2Fconn-pty/lists"}