{"id":42141334,"url":"https://github.com/fastcat/gdev","last_synced_at":"2026-03-13T22:06:54.404Z","repository":{"id":321438301,"uuid":"971010482","full_name":"fastcat/gdev","owner":"fastcat","description":"DevEx toolkit","archived":false,"fork":false,"pushed_at":"2026-03-09T22:40:34.000Z","size":2431,"stargazers_count":7,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-10T04:46:51.205Z","etag":null,"topics":["containers","devex","go","k3s","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fastcat.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":".github/CODEOWNERS","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-04-22T21:56:09.000Z","updated_at":"2026-03-09T22:40:38.000Z","dependencies_parsed_at":"2026-01-06T15:09:53.831Z","dependency_job_id":null,"html_url":"https://github.com/fastcat/gdev","commit_stats":null,"previous_names":["fastcat/gdev"],"tags_count":308,"template":false,"template_full_name":null,"purl":"pkg:github/fastcat/gdev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastcat%2Fgdev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastcat%2Fgdev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastcat%2Fgdev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastcat%2Fgdev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fastcat","download_url":"https://codeload.github.com/fastcat/gdev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastcat%2Fgdev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30477314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T20:45:58.186Z","status":"ssl_error","status_checked_at":"2026-03-13T20:45:20.133Z","response_time":60,"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":["containers","devex","go","k3s","kubernetes"],"created_at":"2026-01-26T17:13:32.614Z","updated_at":"2026-03-13T22:06:54.399Z","avatar_url":"https://github.com/fastcat.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gdev\n\n`gdev` is a toolkit for building an application for your team to help automate\nand simplify your developer experience.\n\nWhile `gdev` contains various runnable examples, the real use case for it is to\ncreate your own application, built using its components, that is setup for your\nteam's development stack.\n\n`gdev` understands \u0026 has components to help with:\n\n- Setting up a new developer system (\"bootstrap\")\n- Having a \"stack\" you run composed of infrastructure and application services\n- Only running a subset of those services depending on what you are doing at any\n  given moment\n- Selecting whether to run each service from an artifact (container image,\n  etc.), local source code, or in a debugger\n- Building (e.g. compiling) services before starting them when running from\n  local source code.\n- Useful helper tools to support the above\n\nTypically you would create your own `xdev` tools that pulls in `gdev` and the\naddons your stack needs. Your `main()` would configure those addons, and any\ncustom ones, and then call the `gdev/cmd.Main()` to run the app. Several\nexamples of how to build such apps are available under `examples`, including\n`examples/gdev` which has (nearly) all addons enabled, but only has\ninfrastructure, not app, services defined.\n\n## Infrastructure\n\n`gdev` provides building blocks for several common pieces of infrastructure for\nrunning your stack:\n\n- Docker\n- Containerd\n- Kubernetes\n- K3S as the Kubernetes environment\n  - Using either containerd or Docker as the backend\n- A generic process manager daemon for running \u0026 monitoring local processes\n- Databases and other \"infrastructure\" services to support your app\n- Recipes for how to compile your code before running it when running from local\n  source (instead of pre-built containers)\n  - And APIs for you to provide custom recipes\n\nYou can also configure your own infrastructure services. All the infrastructure\nservices `gdev` provides are implemented using exported APIs, access to `gdev`\ninternals is not required.\n\n## Your Services\n\nWhen you create your application using `gdev`, you configure the stack of your\napplications you want to run. `gdev` provides helpers to make this easy,\nespecially for common scenarios.\n\nAs initial examples, `gdev` knows how to build some simple project types:\n\n- Go\n  - using `go build ./...`, understanding how to just build select\n    sub-directories\n  - using `mage` or `go tool mage`\n- NodeJS\n  - using `npm run build`\n  - using `rush` (\u003chttps://rushjs.io\u003e)\n- _More to come soon_\n\nMore will be added, and like the infrastructure services, these capabilities are\nimplemented using only exported APIs, so you can also add your own custom build\npatterns.\n\n## Helper Tools\n\n### `GOBUILDCACHE`\n\n`gdev` contains a set of addons to provide a `GOBUILDCACHE` implementation with\npluggable remote backends. Included are backends for HTTP, GCS, S3, and SFTP.\nYou can also provide your own backends by registering implementations of some\ninterfaces.\n\n### Diags\n\nA \"diags\" addon is available to help collect information from your users on\ndemand to diagnose problems with their development environment. A baseline set\nof collectors is provided, along with an API for you to provide additional\ncollectors.\n\nThe result is a `.tgz` of the various files \u0026 collected data. Where this goes is\nup to you. The addon comes with code to simply store it locally in a temp file\nthat the user can send manually, but an API is provided so you could, for\nexample, upload it to a storage bucket or other cloud destination to simplify\nthe workflow.\n\n## Custom Commands\n\nYour development environment probably benefits from some helper automation for\ncommon tasks. `gdev` makes it easy to bundle these by allowing you to add any\ncustom commands you want to it. Need a DB cleanup tool to reset things between\nruns? Just write some Go code for it and wire it up.\n\n## Bloat\n\nWhile `gdev` contains helper code for working with many systems, including them\nall can cause major binary bloat. When building your `gdev`-based command, the\n`addon` pattern means that your tool (once compiled) will only include the\ndependencies needed for the components you use. Don't use Kubernetes in your\nstack? No worries, your binary won't be bloated by its large client SDK. Addons\nwith large dependencies are broken out into separate modules, so your build also\nwon't have to download those unused modules.\n\n## Addons\n\nThe full list of addons you can enable when building your `xdev` tool is in the\n[addons README](https://github.com/fastcat/gdev/tree/main/addons)\n\n## Usage\n\nThe general idea of how you use an `xdev` tool built with `gdev` is:\n\n1. You download \u0026 install an initial version of `xdev`\n2. You run `xdev bootstrap` to configure your machine (once)\n\nThen each development cycle:\n\n1. You use `xdev _FIXME_` to choose which services you are runing/debugging\n2. You run `xdev start` to start the stack\n3. You do your work\n4. You run `xdev stop` to stop the stack\n\n_This will be fleshed out with more capabilities soon._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastcat%2Fgdev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffastcat%2Fgdev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastcat%2Fgdev/lists"}