{"id":14012518,"url":"https://github.com/d3witt/viking","last_synced_at":"2026-01-14T21:52:11.985Z","repository":{"id":250586608,"uuid":"834852237","full_name":"d3witt/viking","owner":"d3witt","description":"Simple way to manage your remote machines and SSH keys","archived":false,"fork":false,"pushed_at":"2024-09-30T20:15:04.000Z","size":235,"stargazers_count":753,"open_issues_count":3,"forks_count":9,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-25T07:49:23.905Z","etag":null,"topics":["bare-metal","cli","deploy","deployment","remote-access-tool","servers","ssh","ssh-key","ssh-keys","ssh-tunnel","vm"],"latest_commit_sha":null,"homepage":"","language":"Go","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/d3witt.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}},"created_at":"2024-07-28T15:01:39.000Z","updated_at":"2025-06-26T00:08:21.000Z","dependencies_parsed_at":"2024-09-18T15:43:22.046Z","dependency_job_id":"eb0fb5ce-44cc-4412-88e1-dd3c95987fff","html_url":"https://github.com/d3witt/viking","commit_stats":null,"previous_names":["d3witt/viking"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/d3witt/viking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3witt%2Fviking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3witt%2Fviking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3witt%2Fviking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3witt%2Fviking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d3witt","download_url":"https://codeload.github.com/d3witt/viking/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3witt%2Fviking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28436229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T21:32:52.117Z","status":"ssl_error","status_checked_at":"2026-01-14T21:32:33.442Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["bare-metal","cli","deploy","deployment","remote-access-tool","servers","ssh","ssh-key","ssh-keys","ssh-tunnel","vm"],"created_at":"2024-08-10T23:00:51.053Z","updated_at":"2026-01-14T21:52:11.965Z","avatar_url":"https://github.com/d3witt.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Viking ⛵️\n[![Go Report Card](https://goreportcard.com/badge/github.com/d3witt/viking)](https://goreportcard.com/report/github.com/d3witt/viking)\n[![Go Reference](https://pkg.go.dev/badge/github.com/d3witt/viking.svg)](https://pkg.go.dev/github.com/d3witt/viking)\n![GitHub release](https://img.shields.io/github/v/release/d3witt/viking)\n\n\n### Simple way to manage your remote machines\n\nBare metal servers are awesome. They let you pick where to run your software and how to deploy it. You get full control to make the most of the server's resources. No limits, no compromises. That's real freedom.\n\nViking makes it easier to work with them.\n\n```\nNAME:\n   viking - Manage your SSH keys and remote machines\n\nUSAGE:\n   viking [global options] command [command options]\n\nVERSION:\n   v1.0\n\nCOMMANDS:\n    exec      Execute shell command on machine\n    copy, cp  Copy files/folders between local and remote machine\n    key       Manage SSH keys\n    machine   Manage your machines\n    config    Get config directory path\n    help, h   Shows a list of commands or help for one command\n\nGLOBAL OPTIONS:\n   --help, -h     show help\n   --version, -v  print the version\n```\n\n## 🚀 Installation\n\nSee [releases](https://github.com/d3witt/viking/releases) for pre-built binaries.\n\nOn Unix:\n\n```\nenv CGO_ENABLED=0 go install -ldflags=\"-s -w\" github.com/d3witt/viking@latest\n```\n\nOn Windows cmd:\n\n```\nset CGO_ENABLED=0\ngo install -ldflags=\"-s -w\" github.com/d3witt/viking@latest\n```\n\nOn Windows powershell:\n\n```\n$env:CGO_ENABLED = '0'\ngo install -ldflags=\"-s -w\" github.com/d3witt/viking@latest\n```\n\n## 📄 Usage\n\n#### 🛰️ Add machine:\n\n```\n$ viking machine add --name deathstar --key starkey 168.112.216.50 root@61.22.128.69:3000 73.30.62.32:3001\nMachine deathstar added.\n```\n\n\u003e [!NOTE]\n\u003e The key flag is not required. If a key is not specified, SSH Agent will be used to connect to the server.\n\n#### 📡 Exec command (in parallel on all machines):\n\n```\n$ viking exec deathstar echo 1234\n168.112.216.50: 1234\n61.22.128.69: 1234\n73.30.62.32: 1234\n```\n\n#### 📺 Connect to the machine:\n\n```\n$ viking exec --tty deathstar /bin/bash\nroot@deathstar:~$\n```\n\n#### 🗂️ Copy files/directories (in parallel to/from all machines):\n\n```\n$ viking cp /tmp/file.txt deathstar:/tmp/\nSuccess: 3, Errors: 0\n```\n\n#### 🔑 Add SSH key from a file\n\n```\n$ viking key add --name starkey --passphrase dart ./id_rsa_star\nKey starkey added.\n```\n\n#### 🆕 Generate SSH Key\n\n```\n$ viking key generate --name starkey2\nKey starkey2 added.\n```\n\n#### 📋 Copy public SSH Key\n\n```\n$ viking key copy starkey2\nPublic key copied to your clipboard.\n```\n\n#### ⚙️ Custom config directory\n\nViking saves data locally. Set `VIKING_CONFIG_DIR` env variable for a custom directory. Use `viking config` to check the current config folder.\n\n## 🤝 Missing a Feature?\n\nFeel free to open a new issue, or contact me.\n\n## 📘 License\n\nViking is provided under the [MIT License](https://github.com/d3witt/viking/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3witt%2Fviking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd3witt%2Fviking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3witt%2Fviking/lists"}