{"id":26058915,"url":"https://github.com/zackiles/gopilot","last_synced_at":"2026-07-06T18:31:28.821Z","repository":{"id":270257264,"uuid":"909782531","full_name":"zackiles/gopilot","owner":"zackiles","description":"The AI swiss army knife for DevOps, Release, and Software Engineers to create agentic pipeline and workflow automations.","archived":false,"fork":false,"pushed_at":"2025-01-02T10:13:39.000Z","size":50,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-29T00:26:16.637Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/zackiles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":null,"dco":null,"cla":null}},"created_at":"2024-12-29T18:57:09.000Z","updated_at":"2025-01-03T05:05:06.000Z","dependencies_parsed_at":"2025-10-14T04:15:55.179Z","dependency_job_id":"87f5e43c-f9f0-4eba-82bd-3e77cae8826a","html_url":"https://github.com/zackiles/gopilot","commit_stats":null,"previous_names":["zackiles/gopilot"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/zackiles/gopilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackiles%2Fgopilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackiles%2Fgopilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackiles%2Fgopilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackiles%2Fgopilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zackiles","download_url":"https://codeload.github.com/zackiles/gopilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackiles%2Fgopilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35202785,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-03-08T12:40:57.856Z","updated_at":"2026-07-06T18:31:28.150Z","avatar_url":"https://github.com/zackiles.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GoPilot: A Unified No-Frills LLM CLI in Go\n\nGoPilot is the AI tool for Devops and Engineering teams. Seamlessly integerate with your codebases, release pipelines and team workflows to automate your typical workflows using the power of AI. GoPilot is like a DevOps engineer always on hand, being able to generate code, write documentation, configure environments, and even deploy your code. Comprised of a comprehensive suite of agentic \"actions\" that can be composed, extended, and triggered from anywhere, you can think of GoPilot as providing a suite of workflows like Github Actions, except with AI!\n\nGoPilot supports a wide range of AI providers, allowing for seamless integration and quick results across different models, all with minimal configuration. Its simplicity and flexibility make it a perfect choice for developers seeking efficient AI integration without all the bells and whistles.\n\n## Why GoPilot?\n\nThe idea of GoPilot was formed at my time in large engineering teams like at HashiCorp, where myself and teamates would continually look to automate away toil be desiging and refining highly-determinsitic prompts to solve day-to-day tasks on engineering teams. Managing and using those prompts was tedius, even though the results of years tweaking them produced great results. We would've easily adopted a product to do this, but the market consits of mostly large frameworks and tools that are either: not specific to DevOps automations, not minimal enough to fit nicely in a pipeline or deployed to the edge, and not optimized in a way that produces highly deterministic and traceable results as it required for most DevOps tasks. Some light inspiration was drawn from [Aider](https://github.com/Aider-AI/aider) which can be thought of as the human and application-development focused version of GoPilot. GoPilot was carefully designed to work outside of a human-in-the-loop, and it's speciality is infrastructure, engineering standards, and solving toil.\n\n### Quick Install\n\nTo install the CLI, run the following command in your terminal:\n\n```bash\ncurl -sSL https://github.com/zacharyiles/gopilot/raw/main/install.sh | bash\n```\n\nThis script will:\n- Detect your OS and architecture\n- Download the appropriate binary from the latest release\n- Verify the SHA256 checksum\n- Install it to your system's appropriate location\n\n### Windows Installation Note\n\nFor Windows users, the install script requires one of the following:\n- Git Bash (recommended)\n- WSL (Windows Subsystem for Linux)\n- Cygwin\n- MSYS2\n\nTo install using Git Bash (recommended):\n1. Open Git Bash\n2. Run the installation command:\n   ```bash\n   curl -sSL https://github.com/zacharyiles/gopilot/raw/main/install.sh | bash\n   ```\n3. If the installation directory is not in your PATH, you may need to add it manually:\n   - The default installation location is `%USERPROFILE%\\AppData\\Local\\Microsoft\\WindowsApps`\n   - You can add this to your PATH through System Properties \u003e Advanced \u003e Environment Variables\n\nAlternatively, Windows users can perform a manual installation by downloading the appropriate .exe file from the releases page.\n\n## Usage\n\nInteract with AI models via the CLI using a prompt. Chat history is maintained by default and stored on disk. Structured prompts or text-based files are automatically detected and handled accordingly.\n\nTo run a basic prompt:\n\n```bash\ngopilot \"Write a short poem about AI.\"\n```\n\nFor structured prompts:\n\n```bash\ngopilot '{\"message\": \"Write a short poem about AI\"}'\n```\n\nUsing file input:\n\n```bash\ngopilot /path/to/prompt.md\n```\n\n### Options:\n\nFlags must be passed **after** the prompt. For example, you cannot use the command like `gopilot -n \"What's the weather today?\"`. Instead, it should be:\n\n```bash\ngopilot \"What's the weather today?\" -n\n```\n\nHere are the available flags:\n\n- `--stream` or `-s`: Stream the response compatible with Unix pipelines.\n- `--new` or `-n`: Erases previous chat history and starts a new one for this message.\n- `--one-shot` or `-o`: Disables chat history for this message. History is not passed as context to the LLM and is not saved.\n- `--with-context` or `-w`: Pass a string or one or more paths to text-based files (comma-separated). The contents will be extracted and used as additional context for the model. This is useful for tasks like analyzing or making changes to code files.\n- `--config` or `-c`: Specify a configuration file path. This overrides other configuration methods.\n- `--version` or `-v`: Show version information\n- `--action` or `-a`: Specify an action plugin to process inputs and outputs (e.g., --action=edit-code)\n\n### Output:\n\nThe tool will return the response from the model.\n\nExample:\n\n```bash\n$ gopilot \"What's the weather today?\"\n```\n\nResponse:\n\n```\nThe weather today is sunny with a high of 25 degrees.\n```\n\nFor structured response:\n\n```bash\n$ gopilot '{\"message\": \"What's the weather today?\"}'\n```\n\nResponse:\n\n```json\n{\n  \"message\": \"What's the weather today?\",\n  \"response\": {\n    \"forecast\": \"sunny\",\n    \"temperature\": \"25 degrees\"\n  }\n}\n```\n\n## Actions\n\nActions are the core of GoPilot. They represent discrete, composable, agentic workflows. Actions leverage the full GoPilot framework to accomplish a set of very specific AI-driven tasks, such as updating a README after a new commit to main, or reviewing a new PR, or generating a new client SDK after an API chanegs. Actions are purpose built to solve typical grunt work and tasks on engineering and Devops teams, but supercharge them with the power of AI. Actions are meant to be used in pipelines, automations, or as part of a local development workflow. Actions are meant to be highly deterministic and utilize structured inputs and outputs and are optimized to not require human intervention or triggering.\n\nNOTE: This project is still in early development and many planned actions are not yet implemented.\n\n### edit-code\nThe `edit-code` action optimizes the interaction for code editing tasks. It:\n- Formats the AI's instructions to focus on code modifications\n- Returns only the relevant changed sections of code\n- Adds helpful comments explaining the changes\n\nExample usage:\n```bash\ngopilot \"Update the error handling in main.go\" --action=edit-code --with-context=main.go\n```\n\n## Configuration\n\nGoPilot uses configuration values to determine how it interacts with AI providers and their models. These configuration values can be set in several ways, allowing flexibility for different workflows and use cases.\n\n### Configuration Options\n\nThe following configuration options are supported:\n\n- **`PROVIDER`**: Specifies the AI provider to use. Supported values include:\n  - `openai`\n  - `cohere-ai`\n  - `@huggingface/inference`\n  - `langchain`\n  - `openrouter`\n  - `anthropic`\n  \n- **`API_KEY`**: The API key for the selected provider. You must supply this for authentication when using the providers.\n  \n- **`MODEL`**: The model to use with the selected provider. Refer to the provider's documentation for available models. For example, OpenAI's `text-davinci-003`.\n\n### Setting Configuration Values\n\nConfiguration values can be set in one of the following ways:\n\n#### 1. **Environment Variables**\n   - Define configuration values directly in your shell or in a `.env` file located in the same directory where GoPilot is being executed. Values from the `.env` file are loaded automatically.\n\n#### 2. **Configuration Files**\n   - Create a JSON or YAML file with the following names: `gopilot.config.json` or `gopilot.config.yml`. Place the configuration file in the directory from which you run the GoPilot CLI, as this is where GoPilot will look for the configuration. Example of a JSON configuration file:\n\n   ```json\n   {\n     \"PROVIDER\": \"openai\",\n     \"API_KEY\": \"your-api-key\",\n     \"MODEL\": \"text-davinci-003\"\n   }\n   ```\n\n#### 3. **Command-Line Arguments**\n   - You can specify a configuration file path directly using the `--config` or `-c` flag when running the CLI. This method takes precedence over the environment variables and configuration files.\n\n   Example usage:\n\n   ```bash\n   gopilot --config /path/to/gopilot.config.json\n   ```\n\nEach configuration method is optional, and values provided through later methods will override any earlier settings.\n\n## Supported Models\n\n- [openai](https://platform.openai.com/docs)\n- [langchain](https://docs.langchain.com/)\n- [openai-api](https://github.com/KartikTalwar/openai-api)\n- [@huggingface/inference](https://huggingface.co/docs/api-inference/)\n- [anthropic](https://console.anthropic.com/docs)\n- [cohere-ai](https://docs.cohere.ai/)\n- [openrouter](https://github.com/openrouter-ai/openrouter)\n\n## Development\n\n### Release Process\n\nGoPilot uses GitHub Actions to automatically build and release binaries for multiple platforms when a new tag is pushed. To create a new release:\n\n1. Tag the commit: `git tag -a v1.0.0 -m \"Release v1.0.0\"`\n2. Push the tag: `git push origin v1.0.0`\n\nThe GitHub Action will automatically:\n- Build binaries for Windows, macOS, and Linux (both amd64 and arm64)\n- Generate SHA256 checksums for each binary\n- Create a GitHub release with all artifacts\n- Generate release notes\n\n### Open Questions\n\n1. How should complex JSON inputs (e.g., examples for classification) be handled in a CLI-friendly way?\n2. Should the CLI support multiple configuration files for different providers or workflows?\n3. How will the CLI gracefully handle rate-limiting or API errors across different providers?\n\n## Building from Source\n\nTo build GoPilot from source:\n\n```bash\ngit clone https://github.com/zacharyiles/gopilot\ncd gopilot\ngo build -o gopilot ./cmd/main.go\n```\n\nFor a release build with optimizations:\n```bash\ngo build -trimpath -ldflags=\"-s -w\" -o gopilot ./cmd/main.go\n```\n\n## Manual Installation\n\n1. Visit the [releases page](https://github.com/zacharyiles/gopilot/releases)\n2. Download the appropriate binary for your system:\n   - `gopilot-darwin-amd64` for Intel macOS\n   - `gopilot-darwin-arm64` for Apple Silicon macOS\n   - `gopilot-linux-amd64` for 64-bit Linux\n   - `gopilot-linux-arm64` for ARM64 Linux\n   - `gopilot-windows-amd64.exe` for 64-bit Windows\n   - `gopilot-windows-arm64.exe` for ARM64 Windows\n3. Verify the checksum (recommended):\n   ```bash\n   sha256sum -c gopilot-\u003cos\u003e-\u003carch\u003e.sha256\n   ```\n4. Make the binary executable (Linux/macOS):\n   ```bash\n   chmod +x gopilot-\u003cos\u003e-\u003carch\u003e\n   ```\n5. Move to a location in your PATH (Linux/macOS):\n   ```bash\n   sudo mv gopilot-\u003cos\u003e-\u003carch\u003e /usr/local/bin/gopilot\n   ```\n## Contribution\n\nContributions are welcome. Please open an issue or pull request for any feature requests, bug fixes, or improvements.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzackiles%2Fgopilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzackiles%2Fgopilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzackiles%2Fgopilot/lists"}