{"id":17044764,"url":"https://github.com/keredson/mwrsync","last_synced_at":"2026-04-20T09:02:03.906Z","repository":{"id":119197225,"uuid":"610468887","full_name":"keredson/mwrsync","owner":"keredson","description":"Micropython WebREPL based  file sync tool.","archived":false,"fork":false,"pushed_at":"2023-03-13T20:34:39.000Z","size":28,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-05T03:36:31.064Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keredson.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}},"created_at":"2023-03-06T20:47:41.000Z","updated_at":"2023-04-30T02:55:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"62ee296a-84ce-4f84-8c39-a2fcc71325f0","html_url":"https://github.com/keredson/mwrsync","commit_stats":{"total_commits":7,"total_committers":1,"mean_commits":7.0,"dds":0.0,"last_synced_commit":"bd1b3449957395dbe043ce3ce82d0f240cd31249"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/keredson/mwrsync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fmwrsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fmwrsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fmwrsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fmwrsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keredson","download_url":"https://codeload.github.com/keredson/mwrsync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fmwrsync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32040353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"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":"2024-10-14T09:35:25.180Z","updated_at":"2026-04-20T09:02:03.882Z","avatar_url":"https://github.com/keredson.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mwrsync\nMicropython WebREPL based file sync tool.\n\nThis tool will sync your Micropython project directory to your Micropython device over WiFi.  This is much faster than serial, and requires no additional code on the device (since it uses Micropython's built-in WebREPL).\n\nInstall\n-------\n```\npip install mwrsync\n```\n\nOn your device, [enable WebREPL](https://docs.micropython.org/en/latest/esp8266/tutorial/repl.html?highlight=webrepl#webrepl-a-prompt-over-wifi) by running `import webrepl_setup` or adding this to your `boot.py`:\n```\nimport webrepl\nwebrepl.start(password='secret')\n```\n\nUsage\n-----\n```\nmwrsync \u003cdirectory\u003e \u003chost\u003e[:\u003cport\u003e] [--port \u003cint\u003e] [-p|--password \u003cvalue\u003e] [--dry_run] [-v|--verbose]\n```\n\nExample: \n```\n$ mwrsync esp32/ 10.0.0.128 -v\nPassword: \nRemote WebREPL version: (1, 19, 1)\ncopying: test.py\nSent 5 of 5 bytes\n```\n`--dry-run` will compute changes but not modify the files on the device.  `--verbose` will tell you what it's doing.\n\n\nIgnoring Files\n--------------\nAdd a file `.mwrsyncignore` to the directory you're syncing.  It follows `.gitignore` syntax.  It will neither copy or delete files that match.\n\n**WARNING:** If you set up WebREPL with `import webrepl_setup`, don't forget to add `webrepl_cfg.py` to `.mwrsyncignore` (or copy it to your project directory). Otherwise you'll disable WebREPL on your next reset.\n\nSpeed\n-----\nOn an ESP32 this will hash files at about 272kb/s (on the device).  It will transfer changed files at about 110kb/s.  Most of the time a sync takes me about 4 seconds.\n\nHow It Works\n------------\nThis tool will compute a SHA1 hash of your local files, a SHA1 hash of any files on your device, and copy or remove files until the two match.  It only ever modifies files on the device, never locally.\n\nSecurity\n--------\nWebREPL sends everything over clear-text (including the password 😓).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeredson%2Fmwrsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeredson%2Fmwrsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeredson%2Fmwrsync/lists"}