{"id":19516811,"url":"https://github.com/timesurgelabs/ottodocs","last_synced_at":"2025-04-15T21:25:34.408Z","repository":{"id":155502475,"uuid":"615773668","full_name":"TimeSurgeLabs/ottodocs","owner":"TimeSurgeLabs","description":"CLI tool for AI generated coding help","archived":false,"fork":false,"pushed_at":"2024-02-19T03:00:49.000Z","size":6020,"stargazers_count":3,"open_issues_count":6,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T01:34:13.096Z","etag":null,"topics":["ai","chatgpt","documentation","go","golang","gpt-3","gpt-4"],"latest_commit_sha":null,"homepage":"https://ottodocs.timesurgelabs.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TimeSurgeLabs.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}},"created_at":"2023-03-18T16:33:25.000Z","updated_at":"2024-10-04T02:15:07.000Z","dependencies_parsed_at":"2024-01-21T04:39:29.479Z","dependency_job_id":"3efa951a-8d3f-4e9b-97fa-84329150bc1d","html_url":"https://github.com/TimeSurgeLabs/ottodocs","commit_stats":null,"previous_names":["timesurgelabs/ottodocs","chand1012/ottodocs"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeSurgeLabs%2Fottodocs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeSurgeLabs%2Fottodocs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeSurgeLabs%2Fottodocs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeSurgeLabs%2Fottodocs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TimeSurgeLabs","download_url":"https://codeload.github.com/TimeSurgeLabs/ottodocs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249155787,"owners_count":21221660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ai","chatgpt","documentation","go","golang","gpt-3","gpt-4"],"created_at":"2024-11-11T00:00:54.561Z","updated_at":"2025-04-15T21:25:34.379Z","avatar_url":"https://github.com/TimeSurgeLabs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OttoDocs 🦦\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n\nOttodocs is a command-line tool built in Go that utilizes OpenAI's ChatGPT API to generate commit messages, pull requests, answers to questions, and even shell commands based on input prompts and code context. It helps developers automate various parts of their development workflow using AI. The tool requires an [OpenAI API key](https://platform.openai.com/account/api-keys) to function.\n\n## Installation\n\nThere are two methods to install OttoDocs:\n\n1. **Precompiled binaries:** Download the precompiled binaries from the [GitHub releases tab](https://github.com/TimeSurgeLabs/ottodocs/releases).\n2. **Build from source:** Clone the repo and build the binary by running the following commands:\n\n### Installing Precompiled Binaries\n\nSimply download the binary for your platform from the [GitHub releases tab](https://github.com/TimeSurgeLabs/ottodocs/releases) and place it in your `$PATH` .\n\n### Building From Source\n\nOttoDocs utilizes the `just` command runner for building and running tasks, making maintaining the project easier. If you do not have `just` installed, see [here](https://just.systems/man/en/chapter_5.html) for installation methods. Ottodocs requires [Go 1.20+](https://go.dev/dl/) to build.\n\n```sh\ngit clone https://github.com/TimeSurgeLabs/ottodocs.git\ncd ottodocs\njust build # will build to bin/otto\n# or\njust install # will build \u0026 copy to $GOPATH/bin. \n```\n\nIf you want to build for all supported platforms, you can run the following command:\n\n```sh\njust crossbuild\n```\n\nThis will build and compress binaries for all supported platforms and place them in the `dist` directory.\n\n## Getting Started\n\nFirst, you need to create an OpenAI API Key. If you do not already have an OpenAI account, you can create a new one and get some free credits to try it out. Once you have an account, you can create an API key by going to the [API Keys tab](https://platform.openai.com/account/api-keys) in your account settings.\n\nOnce you have an API key, you can log in to ottodocs by running the following command:\n\n```sh\notto config --apikey $OPENAI_API_KEY\n```\n\nYou can set the model to use by running:\n\n```sh\notto config --model $MODEL_NAME\n```\n\nYou can add a GitHub Personal Access Token for opening PRs by running:\n\n```sh\notto config --token $GITHUB_TOKEN # Optional. Only needed for opening PRs and reading Issues\n```\n\nMake sure that your access token has the `repo` scope.\n\nOnce that is complete, you can start running commands!\n\n## Usage\n\nMore detailed usage can be found in the [documentation](https://ottodocs.chand1012.dev/docs/usage/otto).\n\n### Chat\n\n![Made with VHS](https://vhs.charm.sh/vhs-7lC4zu09dmW4TZFOyQtCKI.gif)\n\nTo Chat with ChatGPT from the commandline, use chat.\n\n```\notto chat\n```\n\n### Code Generation\n\n![Made with VHS](https://vhs.charm.sh/vhs-5A6u3ITYSIp2qd1T7XdYEM.gif)\n\nOtto can generate code and save it directly to your project! To do this, you can run the following command:\n\n```sh\notto edit \u003cpath to file\u003e -g \"Write me a Python function that returns the sum of two numbers\"\n```\n\nYou can also give Otto additional context to help it generate better code:\n\n```sh\notto edit \u003cpath to file\u003e -g \"Write me a Python function that returns the sum of two numbers\" -c hello_world.py\n```\n\nOr you can have it use as much of the repo as possible as context:\n\n```sh\notto edit \u003cpath to file\u003e -g \"Write me a Python function that returns the sum of two numbers\" -r\n```\n\n### Documentation\n\n```sh\notto docs \u003cpath to repo or file\u003e\n```\n\nOr for a single file, you can run:\n\n```sh\notto doc -f \u003cpath to file\u003e\n```\n\n### Ask\n\nAsk a question about a repo:\n\n```sh\notto ask . -q \"What does LoadFile do differently than ReadFile?\"\n```\n\n### Commit Messages\n\nGenerate a commit message:\n\n![Made with VHS](https://vhs.charm.sh/vhs-4Uti5pLyUQ85pueoJH5IQ.gif)\n\n```sh\notto commit # optionally add --push to push to remote\n```\n\n### Pull Request\n\nGenerate a pull request:\n\n```sh\n# make sure you are creating the PR on the correct base branch\notto pr -b main # optionally add --publish to publish the Pull Request\n```\n\n### Release Notes\n\nGenerate release notes:\n\n```sh\notto release # optionally add --publish to publish the release\n```\n\n### Command Ask\n\nAsk it about commands:\n\n```sh\notto cmd -q \"what is the command to add a remote?\"\n```\n\n## Usage\n\nFor detailed usage instructions, please refer to the [documentation](https://ottodocs.chand1012.dev/docs/usage/otto).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimesurgelabs%2Fottodocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimesurgelabs%2Fottodocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimesurgelabs%2Fottodocs/lists"}