{"id":23236963,"url":"https://github.com/omasakun/remote-stylus","last_synced_at":"2026-05-09T06:36:15.547Z","repository":{"id":241883697,"uuid":"808107193","full_name":"omasakun/remote-stylus","owner":"omasakun","description":"Turn your iPad into a drawing tablet for your PC.","archived":false,"fork":false,"pushed_at":"2024-05-30T16:22:36.000Z","size":265,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-12T00:08:54.004Z","etag":null,"topics":["esp-idf","esp32","remote-desktop","rust","tauri"],"latest_commit_sha":null,"homepage":"https://remote-stylus.o137.net/","language":"Rust","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/omasakun.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}},"created_at":"2024-05-30T11:56:32.000Z","updated_at":"2025-04-29T23:41:20.000Z","dependencies_parsed_at":"2025-02-12T04:32:14.189Z","dependency_job_id":null,"html_url":"https://github.com/omasakun/remote-stylus","commit_stats":null,"previous_names":["omasakun/remote-stylus"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/omasakun/remote-stylus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omasakun%2Fremote-stylus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omasakun%2Fremote-stylus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omasakun%2Fremote-stylus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omasakun%2Fremote-stylus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omasakun","download_url":"https://codeload.github.com/omasakun/remote-stylus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omasakun%2Fremote-stylus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32809965,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"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":["esp-idf","esp32","remote-desktop","rust","tauri"],"created_at":"2024-12-19T04:13:21.051Z","updated_at":"2026-05-09T06:36:15.515Z","avatar_url":"https://github.com/omasakun.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eRemote Stylus\u003c/h1\u003e\n  \u003cp\u003eTurn your iPad into a drawing tablet for your PC\u003c/p\u003e\n  \u003cp\u003eiPad をペンタブレットとして使いたい\u003c/p\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\nThis project also includes a HID bridge to allow full keyboard input from a physical bluetooth keyboard to the iPad!\n\n```\nPC at Home\n  |\n  |\n  | Internet\n  | (WebRTC)\n  |\n  |\niPad --------- ESP32 --------- Keyboard\n        BLE          Bluetooth\n```\n\n## Host App\n\nThe host app is a [Tauri](https://tauri.app/) app that runs on the PC. It captures the screen and sends it to the iPad using WebRTC, and receives the touch input from the iPad and emulates it on the PC.\n\nSee [host/README.md](host) for more information.\n\n## Client App\n\nThe client web app is a [Astro](https://astro.build/) + [React](https://react.dev/) app that runs on the iPad, hosted on Cloudflare Pages. It receives the screen capture from the PC and sends the touch, pen, and keyboard input to the PC.\n\nSee [client/README.md](client) for more information.\n\n## HID Bridge\n\niPad does not allow browser app to access full keyboard input (e.g. `Alt+Tab` or `F11`), which is required for a comfortable remote desktop experience. To work around this limitation, this project uses a cheap [ESP32](https://en.wikipedia.org/wiki/ESP32) microcontroller to bridge the HID input from a physical bluetooth keyboard to the iPad.\n\nSee [bridge/README.md](bridge) for more information.\n\n## Signaling Server\n\nThe WebRTC signaling server is implemented as a simple [cloudflare worker](https://developers.cloudflare.com/workers/) with [D1 database](https://developers.cloudflare.com/d1/) that exchanges the WebRTC offer and answer between the iPad and the PC.\n\nSee [signaling/README.md](signaling) for more information.\n\n## Host-HTTP (Work in Progress)\n\nThe host server that uses websocket instead of WebRTC to communicate with the iPad. This is useful for the case where the PC is behind a NAT and cannot establish a direct WebRTC connection with the iPad.\n\nSee [host-http/README.md](host-http) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomasakun%2Fremote-stylus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomasakun%2Fremote-stylus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomasakun%2Fremote-stylus/lists"}