{"id":31723517,"url":"https://github.com/remoteit/desktop","last_synced_at":"2025-10-09T04:56:43.587Z","repository":{"id":37580152,"uuid":"165331267","full_name":"remoteit/desktop","owner":"remoteit","description":"Cross-platform remote.it desktop application built with Electron","archived":false,"fork":false,"pushed_at":"2025-09-30T18:05:20.000Z","size":99174,"stargazers_count":46,"open_issues_count":7,"forks_count":11,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-09-30T19:09:14.808Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":false,"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/remoteit.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":"2019-01-12T00:59:20.000Z","updated_at":"2025-08-27T18:18:17.000Z","dependencies_parsed_at":"2023-10-17T04:43:37.116Z","dependency_job_id":"41cbff1b-958d-4eab-a4f1-a6adba953b9a","html_url":"https://github.com/remoteit/desktop","commit_stats":null,"previous_names":[],"tags_count":431,"template":false,"template_full_name":null,"purl":"pkg:github/remoteit/desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remoteit%2Fdesktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remoteit%2Fdesktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remoteit%2Fdesktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remoteit%2Fdesktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/remoteit","download_url":"https://codeload.github.com/remoteit/desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remoteit%2Fdesktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000691,"owners_count":26082921,"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-09T02:00:07.460Z","response_time":59,"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":[],"created_at":"2025-10-09T04:56:42.597Z","updated_at":"2025-10-09T04:56:43.582Z","avatar_url":"https://github.com/remoteit.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# remote.it Desktop\n\n\u003e Cross-platform remote.it desktop application\n\n## Overview\n\nThe desktop application serves one primary purpose which is to create a Peer-to-Peer connection to a remote.it device. It downloads and installs connectd on the current system and then runs connectd to establish a Peer-to-Peer connection.\n\n## Features\n\n- Peer to peer initiator connections\n- Local area network (LAN) sharing of initiator connections\n- Custom local port and IP address binding for connections\n- Custom connection naming\n- Connection throughput monitoring\n- Quick launch to HTTP(S), SSH or VNC connections\n- Registering your system as a target device (traditional registration)\n- Run target services as system services\n- Jump services to other systems on the network\n- LAN scanning\n- Multi user system handling\n- Remote configuration through web hosted panel on port 29999\n- Out of band network detection\n\n## Platforms\n\n- Windows\n- Mac\n- Linux\n- iOS\n- Android\n\n## Start as root / admin\n\nStart as root / admin to have hosted services persist for all users and continue to run even after the remote.it desktop app is quit\n\n### Windows\n\nJust run as Administrator from the start menu option.\n\n### MacOS\n\nMust be launched from a terminal\n\n```shell\nsudo /Applications/remoteit.app/Contents/MacOS/remoteit\n```\n\n### Linux\n\n```shell\nsudo /opt/remoteit/remoteit --no-sandbox\n```\n\n## Remote view\n\nThe desktop app runs a web service at port 29999 for remote access.\n\n- Setup prompt: If you log in to a device through your browser for remote setup it will by default put you on the device setup screen instead of the device list.\n\n## Troubleshooting\n\nIf things aren't working the best way to clear everything and start over is to use the **Uninstall command line tools** menu in the advanced settings screen.\n\n### CLI tools\n\nThe Desktop installs and depends on the remote.it CLI tools.\nAt startup they are installed here:\n\n```shell\nMac      /Applications/Remoteit.app/Contents/Resources/mac\nLinux    /usr/bin/\nWindows  C:/Program Files/remoteit/resources\n```\n\n### Configuration and log files\n\n```shell\nMac      ~/.remoteit/\nLinux    ~/.remoteit/\nWindows  C:\\Users\\%username%\\AppData\\Local\\remoteit\\\n         C:\\Users\\%username%\\AppData\\Temp\\remoteit.log\n```\n\n### CLI config files\n\n```shell\nMac      /etc/remoteit/\nLinux    /etc/remoteit/\nWindows  C:\\ProgramData\\remoteit\\\n```\n\n### Windows installer log\n\n```shell\nWindows  C:\\Users\\%username%\\AppData\\Local\\temp\\remoteit.log\n```\n\n## Development\n\n### Setup\n\nGet a copy of the .env file\nplace the .env file in the root directory - it will be copied into the sub projects at start\n\nTo use the fontawesome fonts:\n[Installation Instructions](https://fontawesome.com/how-to-use/on-the-web/setup/using-package-managers#installing-pro)\n\n```shell\nnpm config set \"@fortawesome:registry\" https://npm.fontawesome.com/\nnpm config set \"//npm.fontawesome.com/:_authToken\" [FONT_AWESOME_TOKEN]\n```\n\n### Installation\n\n```shell\nnvm install\nnvm use\nnpm install\n```\n\nStart web app\n\n```shell\nnpm start\n```\n\n### Electron\n\nInstall electron\n\n```shell\nnpm run install-electron\n```\n\nWith web app running start electron app\n\n```shell\nnpm run electron\n```\n\nCommand+option+I to open with dev tools.\n\n### Mobile\n\nTo use the live reloading you will have to set your development app's network IP Address in an environment variable in your profile:\n\n```shell\nexport CAPACITOR_DESKTOP_LIVE_RELOAD=\"http://192.168.0.154:3003/\"\n```\n\nThen you can run the web app and mobile app at the same time. Start mobile app.\n\n```shell\nnpm run ios\n```\n\nand for Android you need you will need a key.properties file in the android directory. Please get it from another developer. Then start the android app.\n\n```shell\nnpm run android\n```\n\n## Branding\n\nThe build is set up to be able to handle a `BRAND` environment variable.\n\nthe `/brand` directory contains possible brand options. See `/brand/remoteit` as and example of what brand files are needed if you want to create a new brand.\n\n## Testing\n\nTests are written using Jest.\n\n```shell\nnpm run test\n```\n\nor\n\n```shell\nnpm run test-watch\n```\n\n## Building\n\nThe build is now handled by github actions. The build artifacts are uploaded to the github releases page.\n\n### Test build electron\n\nIf you want to build the app locally on your machine you can do so with the following commands:\n\n```shell\ncd electron\nnpm run build-local\n```\n\n### Generating Assets\n\n```shell\nnpx @capacitor/assets generate --iconBackgroundColor '#034b9d' --splashBackgroundColor '#034b9d' --android --ios\n```\n\nFor electron app icon\n\n```shell\n./electron/scripts/icns-creator brands/[brand-name]/assets/app-icon.png\nmv -f ./iconbuilder.iconset/* ./electron/src/icons\nmv -f iconbuilder.icns ./electron/src/icons/icon.icns\nrm -rf iconbuilder.iconset\n```\n\n### Generating Electron Assets for a New Brand\n\nTo create electron assets for a new brand (e.g., cachengo):\n\n1. Create the required directory structure:\n```shell\nmkdir -p brands/[brand-name]/electron/icons\nmkdir -p brands/[brand-name]/electron/images\n```\n\n2. Generate all the icon sizes using the icns-creator script:\n```shell\n./electron/scripts/icns-creator path/to/brand-icon.png\nmv -f ./iconbuilder.iconset/* ./brands/[brand-name]/electron/icons/\nmv -f iconbuilder.icns ./brands/[brand-name]/electron/icons/icon.icns\nrm -rf iconbuilder.iconset\n```\n\n3. Create the system tray icons and other specific assets for the images directory.\n   You can copy and modify existing ones from another brand as a starting point:\n```shell\ncp -R brands/remoteit/electron/images/* ./brands/[brand-name]/electron/images/\n```\n   Then replace these images with your own custom versions while keeping the same filenames.\n\n### Release iOS\n\n```shell\nnpm run build-mobile\nnpm run open-ios\n```\n\nIn XCode:\n\n1. Select \"Any iOS Device\"\n2. Select \"Product\" \u003e \"Archive\"\n3. Select \"Distribute App\"\n\n### Release Android\n\n```shell\nnpm run build-mobile\nnpm run open-android\n```\n\nTo build the signed android app you will need to place the following files\n\n- `/android/key.properties`\n- `/android/androiduploadkey.jks`\n\nIn android studio:\n\n- build \u003e Generate signed bundle\n- select aab\n\nUpload to google play console\n\nTest the build locally:\n\n```shell\nadb install -r ./android/app/build/outputs/apk/release/app-release.apk\n```\n\n### Packaging\n\nIn order to be able to build on your local machine:\n\n- Sign into apple id site: `https://appleid.apple.com` with `appledeveloper@remote.it`\n- In the Security section, click the 'Generate password...' button to generate an in app password.\n- Add the in app password to your `electron/src/backend/.env` file:\n  `APPLE_ID_PASSWORD=\u003cinapp-password\u003e`\n  You may or may not have to also add it to your keychain.\n\nIf it's not working check that the developer account is signed into XCode and the certificates for the dev account are downloaded.\n\nMore info can be found in this setup guide: [Notarizing on Mac OS](https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/)\n\n#### Packaging in GitHub Actions\n\nTo update the certificates when they expire you will also need to update the /ios/App/ExportOptions.plist provisioningProfiles to the new provisioning profile.\n\n#### Packaging for linux snaps\n\nTo test install a snap package:\n\n```shell\nsudo snap install my-snap-name_0.1_amd64.snap --dangerous --devmode\n```\n\nTo install and uninstall a deb package:\n\n```shell\nsudo dpkg -i /home/jamie/Code/desktop/dist/remoteit-amd64-installer.deb\nsudo dpkg -r remoteit-desktop\n```\n\n### Windows full app signing\n\n- Windows machine or VM\n- [Windows SDK installed](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)\n- [SafeNet Authentication Client](https://support.comodo.com/index.php?/Knowledgebase/Article/View/1211/106/safenet-download-for-ev-codesigning-certificates)\n- The physical USB drive EV Code Signing Certificate\n- Token password for the certificate\n- Optionally add the signtool to your path:\n  - Find the path to the signtool.exe by searching in \"\\Program Files (x86)\"\n  - example location: `/c/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64/signtool`\n  - Open the Environment Variables control panel\n  - Find the 'Path' variable\n  - Add the signtool directory\n\n#### Set the sign tool to auto respond to the password prompt:\n\nWith an EV signing cert you cannot automate the token password, but you can set the sign tool to remember the password for the logged in session: https://stackoverflow.com/questions/17927895/automate-extended-validation-ev-code-signing\n\n#### To sign the application follow these steps:\n\n1. Insert USB Certificate\n2. `npm run build`\n3. Enter the token password for the certificate if prompted (once per login)\n4. After build is completed copy these four files to the main build directory:\n\n- latest.yml\n- remoteit-installer.exe\n- remoteit-installer.exe.blockmap\n\nYou should now have a fully signed windows app suite with installer, and uninstaller that can be auto-updated.\n\n_Note if you run into signing errors \"SignTool Error: The file is being used by another process.\" disable Windows Defender_\n_Also it's good to run the signtool command once in console so that the signtool will keep the password in memory for the build_\n\n### Windows partial manual signing\n\nTo sign the application follow these steps:\n\n1. Insert USB Certificate\n2. Copy the unsigned windows desktop exe to the Windows machine\n3. Open command prompt\n4. Run sign command:\n\n```cmd\nsigntool sign /a \\Users\\\u003cUSER\u003e\\Desktop\\remoteit-desktop.exe\n```\n\n5. A token password prompt should appear from SafeNet\n6. Enter the token password for the certificate\n\nThe application should now be signed. It will not support auto-updating.\n\n## Update process\n\nCheck dependencies\n`npx depcheck`\n\nCheck and update dependencies\n`ncu -i`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremoteit%2Fdesktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremoteit%2Fdesktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremoteit%2Fdesktop/lists"}