{"id":33926947,"url":"https://github.com/kingananas20/ev3-runner","last_synced_at":"2026-04-01T19:19:09.099Z","repository":{"id":321840654,"uuid":"1087321558","full_name":"kingananas20/ev3-runner","owner":"kingananas20","description":"A command-line tool to upload and run binaries on LEGO EV3 robots running ev3dev over TCP.","archived":false,"fork":false,"pushed_at":"2025-12-02T19:01:42.000Z","size":1963,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-28T00:57:59.950Z","etag":null,"topics":["cli","ev3","rust","tcp"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kingananas20.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-31T18:03:17.000Z","updated_at":"2026-03-08T08:13:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kingananas20/ev3-runner","commit_stats":null,"previous_names":["kingananas20/ev3-runner"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/kingananas20/ev3-runner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingananas20%2Fev3-runner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingananas20%2Fev3-runner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingananas20%2Fev3-runner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingananas20%2Fev3-runner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kingananas20","download_url":"https://codeload.github.com/kingananas20/ev3-runner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingananas20%2Fev3-runner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291119,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cli","ev3","rust","tcp"],"created_at":"2025-12-12T10:37:35.665Z","updated_at":"2026-04-01T19:19:09.091Z","avatar_url":"https://github.com/kingananas20.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ev3-runner\n\nA command-line tool to upload and run binaries on LEGO EV3 robots running ev3dev over TCP.\n\n## Features\n\n- 🚀 Fast binary uploads with hash-based deduplication\n- 🔒 Password-protected connections\n- 📦 Automatic file permission handling\n- 🔄 Upload-only or upload-and-run modes\n- 📡 Real-time output streaming from executed programs\n\n## Installation\n\n### From crates.io\n\n```bash\ncargo install ev3-runner\n```\n\n### From source\n\n```bash\ngit clone https://github.com/kingananas20/ev3-runner\ncd ev3-runner\ncargo install --path .\n```\n\n### Pre-built EV3 Binary\n\nPre-compiled binaries for the EV3 (ARMv5TE architecture) are available in the [latest GitHub release](https://github.com/kingananas20/ev3-runner/releases/latest).\n\nDownload the `ev3-runner` binary from the release page and transfer it to your EV3 robot.\n\n## Usage\n\n### Server Mode (on EV3)\n\nRun the server on your EV3 robot:\n\n```bash\nev3-runner server\n```\n\nWith custom port and password:\n\n```bash\nev3-runner server --server-port 8080 --password mysecret\n```\n\n### Client Mode (on your computer)\n\nUpload a file:\n\n```bash\nev3-runner client upload ./my-program\n```\n\nUpload and run a file:\n\n```bash\nev3-runner client run ./my-program\n```\n\nWith custom options:\n\n```bash\nev3-runner client run ./my-program \\\n  --remote-path /home/robot/my-program \\\n  --host 192.168.1.100:6767 \\\n  --password mysecret\n```\n\n### Options\n\n#### Server Options\n\n- `-p, --server-port \u003cPORT\u003e` - Port to listen on (default: 6767)\n- `-p, --password \u003cPASSWORD\u003e` - Server password (default: maker)\n- `-v` - Increase verbosity (can be repeated: `-v`, `-vv`, `-vvv`)\n\n#### Client Options\n\n- `-r, --remote-path \u003cPATH\u003e` - Target path on the server (default: same as local filename)\n- `--host \u003cHOST\u003e` - Server address in `addr:port` format (default: 127.0.0.1:6767)\n- `-p, --password \u003cPASSWORD\u003e` - Connection password (default: maker)\n- `-v` - Increase verbosity (can be repeated: `-v`, `-vv`, `-vvv`)\n\n## How It Works\n\n1. **Client** calculates a hash of the local file\n2. **Client** sends file metadata (path, size, hash) and password to **Server**\n3. **Server** verifies the password\n4. **Server** checks if the file already exists with the same hash\n5. If hashes don't match, **Client** uploads the file\n6. If in \"run\" mode, **Server** executes the binary and streams output back to **Client**\n\nThis hash-based approach avoids unnecessary uploads when the file hasn't changed, making iterative development faster.\n\n## Example Workflow\n\n1. Start the server on your EV3:\n   ```bash\n   ./ev3-runner server --password mypassword\n   ```\n\n2. From your development machine, upload and run your program:\n   ```bash\n   ev3-runner client run ./target/armv5te-unknown-linux-musleabi/release/my-robot-program \\\n     --host 192.168.1.100:6767 \\\n     --password mypassword\n   ```\n\n3. Watch the output stream in real-time from your EV3!\n\n## Building for EV3\n\nTo cross-compile your Rust programs for the EV3:\n\n```bash\nrustup target add armv5te-unknown-linux-musleabi\ncargo build --release --target armv5te-unknown-linux-musleabi\n```\n\n## Security Note\n\nThe password is hashed using SHA-256 before transmission. However, this tool is designed for development workflows and should not be used in security-critical environments. Always use it on trusted networks.\n\n## License\n\nMIT\n\n## Repository\n\n[https://github.com/kingananas20/ev3-runner](https://github.com/kingananas20/ev3-runner)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingananas20%2Fev3-runner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkingananas20%2Fev3-runner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingananas20%2Fev3-runner/lists"}