{"id":37768427,"url":"https://github.com/yeetrun/yeet","last_synced_at":"2026-03-27T04:08:46.818Z","repository":{"id":331024364,"uuid":"1124267358","full_name":"yeetrun/yeet","owner":"yeetrun","description":"Remote-first service runner with a CLI and daemon for deploying and managing workloads.","archived":false,"fork":false,"pushed_at":"2026-03-23T03:46:11.000Z","size":600,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-24T00:03:30.158Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://yeetrun.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yeetrun.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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-28T17:27:21.000Z","updated_at":"2026-03-23T21:39:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yeetrun/yeet","commit_stats":null,"previous_names":["shayne/yeet","yeetrun/yeet"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/yeetrun/yeet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yeetrun%2Fyeet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yeetrun%2Fyeet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yeetrun%2Fyeet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yeetrun%2Fyeet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yeetrun","download_url":"https://codeload.github.com/yeetrun/yeet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yeetrun%2Fyeet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31018555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T03:51:26.850Z","status":"ssl_error","status_checked_at":"2026-03-27T03:51:09.693Z","response_time":164,"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":["containerization","containers","deployment","devops","go","linux","networking","remote-management","service-manager","ssh","tailscale"],"created_at":"2026-01-16T14:49:44.137Z","updated_at":"2026-03-27T04:08:46.793Z","avatar_url":"https://github.com/yeetrun.png","language":"Go","readme":"# yeet\n\nA personal homelab service manager built around Tailscale RPC. See the [Architecture](https://yeetrun.com/docs/concepts/architecture) page for how the pieces fit together.\n\n## Read This First\n\nThis repository is **personal infrastructure tooling** for how I run my homelab. It is not intended for a general audience, likely will not work for you as-is, and may rely on assumptions, configs, and workflows that only exist in my environment. Use it only as a reference or starting point.\n\n## Install yeet (release binary)\n\n```bash\ncurl -fsSL https://yeetrun.com/install.sh | sh\n```\n\nNightly build:\n\n```bash\ncurl -fsSL https://yeetrun.com/install.sh | sh -s -- --nightly\n```\n\n## Toolchain Setup (Recommended: mise)\n\nIf you already have Go in your `PATH`, you can skip mise and use the Go commands elsewhere in this README. If not, the quickest path is to use mise to install the toolchain and run the bootstrap task.\n\n1) Install mise (use a package manager like Homebrew/apt/dnf/pacman, or run the installer script):\n\n```bash\ncurl https://mise.run | sh\n```\n\n2) Activate mise in your shell (zsh example — swap for bash/fish as needed):\n\n```bash\necho 'eval \"$(mise activate zsh)\"' \u003e\u003e ~/.zshrc\n```\n\n3) From the repo root, install tools (Go 1.25.5) + bootstrap a host:\n\n```bash\nmise install\nmise run init-host -- root@\u003chost\u003e\n```\n\n## High-Level Overview\n\nyeet is a lightweight client + server setup for deploying and managing services on remote Linux machines. The primary use case is running Docker images on a host over Tailscale with a tiny workflow (`yeet run \u003csvc\u003e \u003cimage\u003e`).\n\n- Run Docker images or Compose stacks on a remote host\n- Push locally-built images into an internal registry when you need them\n- Manage service lifecycle (start/stop/restart/logs/status)\n- Push updates over Tailscale RPC\n- Support a few networking modes used in my lab (e.g., Tailscale, macvlan)\n\n## Docker Quickstart (Most Common Path: Compose)\n\nHost terminology: `yeet init root@\u003chost\u003e` uses the SSH **machine host**. `yeet run \u003csvc\u003e@\u003chost\u003e` (and `CATCH_HOST`) uses the **catch host** (Tailscale/tsnet hostname).\n\n```bash\nyeet init root@\u003chost\u003e\nyeet run \u003csvc\u003e ./compose.yml\nyeet ssh\n```\n\nNote: from a repo checkout, `yeet init` builds and uploads `catch`. Released yeet binaries (or `--from-github`) download the latest stable release; add `--nightly` for nightly builds.\n\nNote: `yeet run` for compose does not pull new images by default. To refresh images, use `yeet run --pull \u003csvc\u003e ./compose.yml` or `yeet docker update \u003csvc\u003e`.\nNote: Docker hosts must enable the containerd snapshotter so pushed images show up locally (see Installation in the docs).\n\nOther common variants (in order of use):\n\n```bash\nyeet run \u003csvc\u003e ./Dockerfile\nyeet run \u003csvc\u003e ./bin/\u003csvc\u003e -- --app-flag value\n```\n\nLess common (registry image or pushing a local image):\n\n```bash\nyeet run \u003csvc\u003e nginx:latest\nyeet docker push \u003csvc\u003e \u003clocal-image\u003e:\u003ctag\u003e --run\n```\n\n## Tailscale OAuth Setup\n\nIf you use `--net=ts` for service networking, configure an OAuth client secret\non the catch host:\n\n```bash\nyeet tailscale --setup\n# or\nyeet tailscale --setup --client-secret=tskey-client-...\n```\n\nThe interactive flow links you to the admin console steps for creating a tag\nand trust credential, then writes the secret to the catch host for you.\n\n## Documentation\n\nThe docs site is the user manual and the source of truth for behavior and workflows:\n\n- [Quick Start](https://yeetrun.com/docs/getting-started/quick-start)\n- [Workflows](https://yeetrun.com/docs/operations/workflows) (Docker-first walkthroughs)\n- [Installation](https://yeetrun.com/docs/getting-started/installation)\n- [Architecture](https://yeetrun.com/docs/concepts/architecture)\n- [CLI Overview](https://yeetrun.com/docs/cli/cli-overview)\n- [yeet CLI](https://yeetrun.com/docs/cli/yeet-cli)\n- [catch CLI](https://yeetrun.com/docs/cli/catch-cli)\n- [Networking](https://yeetrun.com/docs/concepts/networking)\n- [Tailscale](https://yeetrun.com/docs/concepts/tailscale)\n- [Service Types](https://yeetrun.com/docs/concepts/service-types)\n- [Configuration \u0026 Prefs](https://yeetrun.com/docs/concepts/configuration-and-prefs)\n- [Data Layout](https://yeetrun.com/docs/concepts/data-layout)\n- [Troubleshooting](https://yeetrun.com/docs/operations/troubleshooting)\n- [Development](https://yeetrun.com/docs/development)\n- [FAQ](https://yeetrun.com/docs/faq)\n\n## Components\n\n- **yeet**: client CLI used from my workstation (see the [yeet CLI](https://yeetrun.com/docs/cli/yeet-cli) reference)\n- **catch**: service manager daemon running on homelab hosts (see the [catch CLI](https://yeetrun.com/docs/cli/catch-cli) reference)\n\n## How I Run It\n\nIn my homelab, I run `catch` on each host and use `yeet` to push binaries/images, manage versions, and poke at service state over Tailscale. The [Networking](https://yeetrun.com/docs/concepts/networking) and [Configuration \u0026 Prefs](https://yeetrun.com/docs/concepts/configuration-and-prefs) pages describe the host targeting and network modes that make this work in my lab. The workflow is optimized for my machines and my network topology, not for general compatibility.\n\n## Security Notes\n\nCurrently, services managed by `catch` run as root. This is fine for my lab, but it is not a good default for production or multi-tenant setups. See the [FAQ](https://yeetrun.com/docs/faq) for current limitations.\n\n## License\n\nBSD 3-Clause. See `LICENSE`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyeetrun%2Fyeet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyeetrun%2Fyeet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyeetrun%2Fyeet/lists"}