{"id":44565636,"url":"https://github.com/jmreicha/cfgctl","last_synced_at":"2026-02-20T21:01:09.722Z","repository":{"id":275968404,"uuid":"926093590","full_name":"jmreicha/cfgctl","owner":"jmreicha","description":"A tool for managing configuration files","archived":false,"fork":false,"pushed_at":"2026-02-16T21:07:59.000Z","size":567,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-17T04:25:30.391Z","etag":null,"topics":["aws","cli","config","kubeconfig"],"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/jmreicha.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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-02-02T14:42:01.000Z","updated_at":"2026-02-16T21:05:57.000Z","dependencies_parsed_at":"2025-03-16T02:27:10.101Z","dependency_job_id":"bb9ca0fe-6316-4a22-b09e-499f16a84a35","html_url":"https://github.com/jmreicha/cfgctl","commit_stats":null,"previous_names":["jmreicha/lazycfg"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/jmreicha/cfgctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmreicha%2Fcfgctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmreicha%2Fcfgctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmreicha%2Fcfgctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmreicha%2Fcfgctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmreicha","download_url":"https://codeload.github.com/jmreicha/cfgctl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmreicha%2Fcfgctl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29664402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T19:49:36.704Z","status":"ssl_error","status_checked_at":"2026-02-20T19:44:05.372Z","response_time":59,"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":["aws","cli","config","kubeconfig"],"created_at":"2026-02-14T00:31:09.320Z","updated_at":"2026-02-20T21:01:09.713Z","avatar_url":"https://github.com/jmreicha.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cfgctl\n\nA command line tool to simplify the creation and management of complicated configurations.\n\n## Why?\n\nImagine you are a new hire at a company and you need to set up your local\nenvironment, but the setup process is complicated and involves multiple steps,\nand everybody is busy. You need to install various tools, configure them, set up\nyour environment variables, etc. You also need to get connected to you cloud\nenvironments, set Kubernetes configuration, and deal with other complicated\nconfigs.\n\nThis setup process can be time-consuming and error-prone. Additionally, you may\nnot understand (or care about) security implications or know about advanced\nconfiguration which you may want but don't know exist.\n\n`cfgctl` aims to simplify all of this setup by providing a simple command line\ninterface to handle this for you so you can focus on more important things.\n\n## Getting Started\n\n### Prerequisites\n\nThis project requires the following tools:\n\n- **Go** 1.23+ - [Install Go](https://go.dev/doc/install)\n- **Task** - [Install Task](https://taskfile.dev/installation/)\n- **golangci-lint** - Go linter\n- **pre-commit** - Pre-commit hook framework\n- **bd (beads)** - Issue tracker for git\n- **common-repo** - Repository configuration management\n- **prek** (optional) - Pre-commit hook management tool\n- **mcp-cli** (optional) - MCP server interface\n- **wt (worktrunk)** (optional) - Git worktree management\n\n### Installation\n\n#### Homebrew\n\n```bash\nbrew tap jmreicha/tap\nbrew install --cask cfgctl\n```\n\n1. Clone the repository:\n\n```bash\ngit clone git@github.com:jmreicha/cfgctl.git\ncd cfgctl\n```\n\n2. Bootstrap the development environment:\n\n```bash\n# One command to install everything\ntask bootstrap\n```\n\nThis will:\n\n- Check for required tools (go, golangci-lint, bd, pre-commit)\n- Auto-install missing tools (uses Homebrew on macOS)\n- Install pre-commit hooks (via prek or pre-commit)\n- Download and verify Go dependencies\n\n### Usage\n\nAWS provider example:\n\n```bash\n# Generate AWS config with SSO (auto-triggers login if needed)\ncfgctl generate aws --aws-sso-region us-west-2 --aws-sso-url https://\u003cid\u003e.awsapps.com/start\n\n# Overwrite existing config\ncfgctl generate aws --aws-sso-region us-west-2 --aws-sso-url https://\u003cid\u003e.awsapps.com/start --force\n\n# Filter to specific roles\ncfgctl generate aws --aws-sso-region us-west-2 --aws-sso-url https://\u003cid\u003e.awsapps.com/start --aws-roles Admin,ReadOnly\n\n# Preview changes without writing\ncfgctl generate aws --dry-run\n```\n\nSSH provider example:\n\n```bash\n# List available providers\ncfgctl list\n\n# Preview SSH changes\ncfgctl generate ssh --dry-run\n\n# Generate SSH config\ncfgctl generate ssh\n\n# Overwrite existing config\ncfgctl generate ssh --force\n\n# Validate config\ncfgctl validate\n```\n\n### Working with Beads\n\nThis project uses [beads](https://github.com/steveyegge/beads) for local issue tracking. Beads is a git-backed, distributed issue tracker optimized for AI agents.\n\n**Essential commands:**\n\n```bash\n# View ready work (no blockers)\nbd ready\n\n# Create a new issue\nbd create \"Task title\" -p 1 -d \"Description\"\n\n# Show issue details\nbd show \u003cissue-id\u003e\n\n# Update issue status\nbd update \u003cissue-id\u003e --status in_progress\n\n# Close completed issue\nbd close \u003cissue-id\u003e\n\n# Sync before pushing\nbd sync\n```\n\n### Available Tasks\n\nView all available tasks with:\n\n```bash\ntask --list\n```\n\nCommon tasks:\n\n```bash\ntask check-tools     # Check if required CLI tools are installed\ntask install-tools   # Install missing tools and pre-commit hooks\ntask bootstrap       # Bootstrap and set up dependencies and tools\ntask build           # Build the binary\ntask fmt             # Format Go code\ntask lint            # Run linters\ntask test            # Run tests\ntask check           # Run fmt, lint, and test\ntask clean           # Clean build artifacts\n```\n\n### Autonomous Iteration\n\nFor autonomous development, use the iteration loop to work through beads issues:\n\n```bash\n# Run with default settings (picks the first open issue)\ntask iterate\n\n# Custom max iterations\ntask iterate -- --max-iterations 10\n\n# Work on specific issue\ntask iterate -- --issue-id \u003cissue-id\u003e\n\n# With environment variable\nMAX_ITERATIONS=25 task iterate\n\n# Use different AI agent\nAI_AGENT='claude' task iterate\n\n# Adjust timeout (default 30 minutes)\nOPENCODE_TIMEOUT=3600 task iterate\n```\n\n### Development Workflow\n\n2. Create or claim an issue\n3. Create a feature branch: `git checkout -b feature/your-feature`\n4. Make your changes\n5. Run checks: `task check` (runs fmt, lint, and test)\n6. Commit with conventional commit format: `git commit -m \"feat: your feature\"`\n7. Push feature branch: `git push -u origin feature/your-feature`\n8. Create pull request: `gh pr create --title \"feat: your feature\" --body \"Description\"`\n9. Address review feedback and push updates to the PR\n\n### Releases\n\nReleases are automated on pushes to `main` with semantic-release and GoReleaser. The workflow uses `.releaserc.yaml` and installs the semantic-release Node.js packages at runtime.\n\nRequired secrets:\n\n- `GITHUB_TOKEN` (provided automatically by GitHub Actions)\n\nOptional secrets (only if configured in `.goreleaser.yml`):\n\n- `CI_GITHUB_TOKEN` for Homebrew tap publishing\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmreicha%2Fcfgctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmreicha%2Fcfgctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmreicha%2Fcfgctl/lists"}