[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81217":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":13,"stars7d":14,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":14,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":21,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":15,"starSnapshotCount":15,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},81217,"NearsecTogether","TheRealFame\u002FNearsecTogether","TheRealFame","NearsecTogether is a low-latency, open-source platform that allows you to play local co-op games over the internet with your friends.","http:\u002F\u002Fnearsec.cutefame.net\u002F",null,"JavaScript",27,1,3,0,4,44.8,"GNU General Public License v3.0",false,"main",true,[],"2026-06-12 04:01:32","\u003Cp align=\"left\">\n  \u003Cimg src=\"assets\u002FNearsecTogether.png\" width=\"160\" height=\"140\">\n\u003Ch1>NearsecTogether\u003C\u002Fh1>\n\n[English](README.md) | [Español](README.es.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Português](README.pt.md) | [日本語](README.ja.md)\n## Screenshots -- Dashboard, Viewer Page, Arcade\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fnearsec-client-home.png\" alt=\"Nearsec Host\" width=\"45%\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fnearsec-host.png\" alt=\"Nearsec Host\" width=\"45%\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fnearsec-viewer.png\" alt=\"Nearsec Viewer\" width=\"45%\">\n  \u003Cimg src=\"assets\u002Fscreenshots\u002Fnearsec-arcade.png\" alt=\"Nearsec Arcade\" width=\"45%\">\n\u003C\u002Fdiv>\n\n## Project Description\nNearsecTogether is a low-latency, open-source platform that allows you to play local co-op games over the internet with your friends. By leveraging WebRTC for UDP-first streaming and built-in browser hardware encoders, NearsecTogether provides near-imperceptible latency that rivals commercial cloud gaming platforms — tailored specifically for self-hosted instances.\n\nUnlike traditional cloud gaming solutions that relied on massive data center pipes and custom QUIC\u002FVP9 hardware encoders, NearsecTogether is optimized to work elegantly over a standard home internet connection.\n\n## Technology Stack\n- **The Transport**: WebRTC handles jitter buffering and NAT traversal automatically.\n- **The Distributor**: To prevent overloading your home network upload bandwidth when streaming to multiple people, you can pair this with an SFU (Selective Forwarding Unit) or use the built-in port forwarding and tunneling options.\n- **The Encoder**: The software accesses your system's hardware encoding (NVENC, VAAPI) via the WebRTC API to deliver optimized H.264 or VP8\u002FVP9 streams based on your connection quality.\n\n---\n\n## Platform Support\n\n| Feature | Linux | Windows | macOS |\n|---------|:-----:|:-------:|:-----:|\n| **WebRTC Streaming** | ✅ | ✅ | ✅ |\n| **Gamepad Support** | ✅ Full | ⚠️ Conditional¹ | ❌ None |\n| **Keyboard\u002FMouse Input** | ✅ Full | ⚠️ Limited | ✅ Full |\n| **Motion Controls** | ✅ | ❌ | ❌ |\n| **Multi-Controller** | ✅ | ⚠️ Limited | ❌ |\n| **Audio Playback** | ✅ | ✅ | ✅ |\n| **Display Capture** | ✅ | ✅ | ✅ |\n| **Stability** | **Production** | **Experimental** | **Experimental** |\n\n¹ Windows gamepad requires [ViGEmBus driver](https:\u002F\u002Fgithub.com\u002Fnefarius\u002FViGEmBus\u002Freleases)\n\n## Documentation\nAll technical setup, usage guides, and advanced logic explanations have been moved to the `\u002Fsrc\u002Fdocs\u002F` directory. You can also view these directly within the application's Host Dashboard by clicking the Book icon.\n\n* [Getting Started](src\u002Fdocs\u002FGETTING_STARTED.md)\n* [Host Usage](src\u002Fdocs\u002FHOST_USAGE.md)\n* [API & Setup](src\u002Fdocs\u002FAPI_AND_SETUP.md)\n* [Advanced Logic Architecture](src\u002Fdocs\u002FADVANCED_LOGIC.md)\n---\n\n## Getting Started\n\n### What `.\u002Fstart` handles automatically\n- Runs `npm install` if `node_modules` is missing — including Electron.\n- Loads the `uinput` kernel module on Linux (via `sudo modprobe uinput`).\n- Falls back to headless `node server.js` mode if Electron isn't installed.\n\n### What you must set up yourself\n\n| Dependency | Required for | Install |\n|---|---|---|\n| **Node.js** (v18+) | Everything | [nodejs.org](https:\u002F\u002Fnodejs.org) or `nvm` |\n| **Python 3** + `python-uinput` | Controller input virtualization | `sudo .\u002Flinux_setup.sh` (Linux only, one-time) |\n| **uinput kernel module** | Controller input virtualization | Included in `linux_setup.sh` |\n\n> **Controllers won't work without the Python setup.** The app will still launch and stream fine — viewers just won't be able to send gamepad or keyboard input to the host. Run `sudo .\u002Flinux_setup.sh` once after cloning to enable it.\n\n> **For Windows\u002FmacOS setup**, see [PLATFORM_SETUP.md](PLATFORM_SETUP.md) for detailed instructions, requirements, and known limitations for each platform.\n\n### Step-by-step\n\n**Linux (recommended — fully supported)**\n```bash\n# 1. One-time system setup (installs python-uinput, udev rules, uinput)\nsudo .\u002Flinux_setup.sh\n\n# 2. Every subsequent launch\n.\u002Fstart\n```\n\n**Windows \u002F macOS** *(experimental — see [PLATFORM_SETUP.md](PLATFORM_SETUP.md))*\n```bash\n# For detailed setup instructions, troubleshooting, and known limitations:\n# → Read: PLATFORM_SETUP.md\n\n.\u002Fstart\n```\n\nNode.js must already be installed. The script will exit with `Node.js missing` if it isn't found.\n\n### Sharing with friends\n1. Click **Start Sharing** in the host interface to begin capture.\n2. Choose a tunnel provider (cloudflared recommended — free, no account needed) or set up port forwarding on TCP 3000.\n3. Share the provided link and PIN with your friends. That's it.\n\n---\n\n## Security\n- **PIN rate limiting** — the WebSocket server locks out IPs after repeated failed PIN attempts.\n- **Version parity checks** — viewers are warned immediately if their client version differs from the host.\n- **Input isolation** — strict per-viewer permissions prevent clients from sending unauthorized keyboard inputs or overriding gamepad slots they don't own.\n\n---\n\n## Troubleshooting\n\n### Controllers not working\nRun `sudo .\u002Flinux_setup.sh` if you haven't already. Check that `\u002Fdev\u002Fuinput` exists and is writable. The terminal will log `[uinput] sidecar started` on a successful launch.\n\n### No audio in the stream\nOn Wayland\u002FPipeWire, audio capture is handled through the screen-share portal dialog. When the share dialog appears, make sure **\"Share audio\"** is ticked. If audio still doesn't appear after sharing, the app will automatically attempt a PipeWire loopback fallback and log the result.\n\n### WebRTC handshake failing \u002F GPU errors\nIf you see `vulkan_swap_chain.cc Swapchain is suboptimal` or similar GPU crashes in the terminal, your graphics drivers are rejecting Electron's hardware acceleration flags.\n\n1. Open `electron-main.js`.\n2. Find the `app.commandLine.appendSwitch('enable-features', ...)` block.\n3. Remove flags one by one (e.g. `VaapiVideoEncoder`, `VaapiVideoDecoder`) until the stream stabilizes.\n4. If you had to remove them, the app falls back to software encoding (VP8\u002FVP9) — higher CPU usage but stable.\n\n### Rebuilding Electron from scratch\nIf `npm install` fails to pull the correct Electron binary for your architecture:\n```bash\nrm -rf node_modules package-lock.json\nnpm cache clean --force\nnpm install\n```\nOn unusual architectures you may need to build Electron from source via `electron\u002Fbuild-tools`, but this is very rarely needed.\n\n---\n\n## Current Progress\n- Core Host UI with integrated WebRTC capture controls.\n- Port forwarding, Cloudflared, and automatic tunneling integration.\n- Controller input virtualization via `uinput` for seamless Steam Input bypassing.\n- Complete PipeWire audio loopback and Voice-over-IP isolation.\n- Mobile touch UI with virtual joystick and optional gyro aiming.\n- Arcade Mode — list your session publicly on Nearsec Arcade for others to discover and join.\n\n---\n\n\n*This project used LLMs for code generation.*\n","NearsecTogether 是一个低延迟的开源平台，允许用户通过互联网与朋友一起玩本地合作游戏。该项目利用WebRTC实现UDP优先流传输，并结合浏览器内置硬件编码器，提供几乎无感知的延迟体验，媲美商业云游戏平台。它特别适合于自托管实例，能够在标准家庭网络连接上优雅运行而无需依赖大型数据中心或定制硬件。此外，NearsecTogether支持多种操作系统上的WebRTC流媒体、键盘鼠标输入及音频播放等功能，尤其适用于那些希望在不牺牲游戏体验的前提下远程共享游戏乐趣的玩家和开发者。",2,"2026-06-11 04:03:57","CREATED_QUERY"]