{"id":13611813,"url":"https://github.com/sgeisler/cargo-remote","last_synced_at":"2025-04-04T15:07:46.353Z","repository":{"id":47322758,"uuid":"116311774","full_name":"sgeisler/cargo-remote","owner":"sgeisler","description":"cargo subcommand to compile rust projects remotely","archived":false,"fork":false,"pushed_at":"2024-06-12T09:41:43.000Z","size":51,"stargazers_count":195,"open_issues_count":13,"forks_count":48,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-28T14:06:17.055Z","etag":null,"topics":["build","cargo","remote","remote-execution","rust"],"latest_commit_sha":null,"homepage":null,"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/sgeisler.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":"2018-01-04T21:58:56.000Z","updated_at":"2025-03-13T11:44:54.000Z","dependencies_parsed_at":"2024-08-01T19:45:35.642Z","dependency_job_id":"bbbd37e5-528f-4f6a-9326-26ba1060f8be","html_url":"https://github.com/sgeisler/cargo-remote","commit_stats":{"total_commits":61,"total_committers":13,"mean_commits":"4.6923076923076925","dds":0.7540983606557377,"last_synced_commit":"a7680240a11795a1b3f554e9d4fcdd6a6d201fc2"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgeisler%2Fcargo-remote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgeisler%2Fcargo-remote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgeisler%2Fcargo-remote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgeisler%2Fcargo-remote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sgeisler","download_url":"https://codeload.github.com/sgeisler/cargo-remote/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198450,"owners_count":20900080,"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","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":["build","cargo","remote","remote-execution","rust"],"created_at":"2024-08-01T19:02:10.350Z","updated_at":"2025-04-04T15:07:46.333Z","avatar_url":"https://github.com/sgeisler.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Cargo Remote\n\n***Use with caution, I didn't test this software well and it is a really hacky\n(at least for now). If you want to test it please create a VM or at least a separate\nuser on your build host***\n\n## Why I built it\nOne big annoyance when working on rust projects on my notebook are the compile\ntimes. Since I'm using rust nightly for some of my projects I have to recompile\nrather often. Currently there seem to be no good remote-build integrations for\nrust, so I decided to build one my own.\n\n## Planned capabilities\nThis first version is very simple (could have been a bash script), but I intend to\nenhance it to a point where it detects compatibility between local and remote\nversions, allows (nearly) all cargo commands and maybe even load distribution\nover multiple machines.\n\n## Usage\nFor now only `cargo remote [FLAGS] [OPTIONS] \u003ccommand\u003e` works: it copies the\ncurrent project to a temporary directory (`~/remote-builds/\u003cproject_name\u003e`) on\nthe remote server, calls `cargo \u003ccommand\u003e` remotely and optionally (`-c`) copies\nback the resulting target folder. This assumes that server and client are running\nthe same rust version and have the same processor architecture. On the client `ssh`\nand `rsync` need to be installed.\n\nIf you want to pass remote flags you have to end the options/flags section using\n`--`. E.g. to build in release mode and copy back the result use:\n```bash\ncargo remote -c -- build --release\n```\n\n### Configuration\nYou can place a config file called `.cargo-remote.toml` in the same directory as your\n`Cargo.toml` or at `~/.config/cargo-remote/cargo-remote.toml`. There you can define a\ndefault remote build host and user. It can be overridden by the `-r` flag.\n\nExample config file:\n```toml\n[[remote]]\nname = \"myRemote\" # Not needed for a single remote\nhost = \"myUser@myServer\" # Could also be a ssh config entry\nssh_port = 42 # defaults to 22\ntemp_dir = \"~/rust\" # Default is \"~/remote-builds\"\nenv = \"~/.profile\" # Default is \"/etc/profile\"\n```\n\n### Flags and options\n\n```\nUSAGE:\n    cargo remote [FLAGS] [OPTIONS] \u003ccommand\u003e [remote options]...\n\nFLAGS:\n        --help               Prints help information\n    -h, --transfer-hidden    Transfer hidden files and directories to the build server\n        --no-copy-lock       don't transfer the Cargo.lock file back to the local machine\n    -V, --version            Prints version information\n\nOPTIONS:\n    -b, --build-env \u003cbuild_env\u003e              Set remote environment variables. RUST_BACKTRACE, CC, LIB, etc.  [default:\n                                             RUST_BACKTRACE=1]\n    -c, --copy-back \u003ccopy_back\u003e              Transfer the target folder or specific file from that folder back to the\n                                             local machine\n    -e, --env \u003cenv\u003e                          Environment profile. default_value = /etc/profile\n    -H, --remote-host \u003chost\u003e                 Remote ssh build server with user or the name of the ssh entry\n        --manifest-path \u003cmanifest_path\u003e      Path to the manifest to execute [default: Cargo.toml]\n    -r, --remote \u003cname\u003e                      The name of the remote specified in the config\n    -d, --rustup-default \u003crustup_default\u003e    Rustup default (stable|beta|nightly) [default: stable]\n    -p, --remote-ssh-port \u003cssh_port\u003e         The ssh port to communicate with the build server\n    -t, --remote-temp-dir \u003ctemp_dir\u003e         The directory where cargo builds the project\n\nARGS:\n    \u003ccommand\u003e              cargo command that will be executed remotely\n    \u003cremote options\u003e...    cargo options and flags that will be applied remotely\n```\n\n\n## How to install\n```bash\ngit clone https://github.com/sgeisler/cargo-remote\ncargo install --path cargo-remote/\n```\n\n### MacOS Problems\nIt was reported that the `rsync` version shipped with MacOS doesn't support the progress flag and thus fails when\n`cargo-remote` tries to use it. You can install a newer version by running\n```bash\nbrew install rsync\n```\nSee also [#10](https://github.com/sgeisler/cargo-remote/issues/10).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgeisler%2Fcargo-remote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsgeisler%2Fcargo-remote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgeisler%2Fcargo-remote/lists"}