{"data":{"slug":"kristoferlund-duet-gpt","name":"duet-gpt","tagline":"A conversational semi-autonomous developer assistant. AI pair programming without the copypasta.","github_url":"https://github.com/kristoferlund/duet-gpt","owner":"kristoferlund","repo":"duet-gpt","owner_avatar_url":"https://avatars.githubusercontent.com/u/9698363?v=4","primary_language":"TypeScript","stars":167,"forks":13,"topics":["agent","ai","assistant","cli","gpt","gpt-4","llm","openai"],"archived":false,"github_pushed_at":"2023-06-19T13:12:11+00:00","maintenance_label":"Dormant","url":"https://www.graphcanon.com/tools/kristoferlund-duet-gpt","markdown_url":"https://www.graphcanon.com/tools/kristoferlund-duet-gpt.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/kristoferlund-duet-gpt","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=kristoferlund-duet-gpt","description":"A conversational semi-autonomous developer assistant. AI pair programming without the copypasta.","homepage_url":null,"license":"MIT","open_issues":1,"watchers":4,"ai_summary":null,"readme_excerpt":"# DuetGPT\n\n**🎉 News:** DuetGPT no longer uses langchain but instead [OpenAI functions](https://openai.com/blog/function-calling-and-other-api-updates). This means a significant improvement in reliability and performance.\n\nDuetGPT is an experimental AI powered CLI tool and semi-autonomous agent that helps developers with coding tasks and file system tasks. The developer describes tasks to the AI who then issues commands or follow-up questions for clarification. After approval by the developer, **DuetGPT automatically executes the commands issued by the AI.**\n\nDuetGPT also does really well as a general bash helper.\n\nWorks with OpenAI models:\n\n- gpt-3.5-turbo-0613 (does not produce any great code though)\n- gpt-4-0613\n\nExample tasks:\n\n- Refactor index.js: add inline comments, improve variable naming.\n- Write a bash script that lists all cars in the database.\n- Find all files in current directory and subdirectories that contain the word \"DuetGPT\"\n- Write a PR description based on the commit messages in the PR.\n\nDuetGPT builds on OpenAI's GPT-4 language model and uses its conversational capabilities to engage in a two-way conversation with the developer. It uses the newly released feature of the OpenAI API that allows the AI to make [function calls](https://openai.com/blog/function-calling-and-other-api-updates).\n\n### ⚠️ DuetGPT has no guardrails! Make sure you understand the commands given by the AI before executing them. ⚠️\n\nHere is a 30 second demo, use DuetGPT to build a Node.js app that draws a mandelbrot fractal using ASCII characters to the console:\n\nhttps://github.com/kristoferlund/duet-gpt/assets/9698363/147bdf9d-28df-4421-9297-05abfeb53142\n\n## Setup\n\nInstall the DuetGPT CLI tool globally using npm:\n\n```bash\nnpm install -g duet-gpt\n```\n\n## Usage\n\nTo start DuetGPT, run the following command:\n\n```bash\nduet-gpt\n```\n\nYou will be prompted to enter your OpenAI API key. You can find your API key on the [OpenAI dashboard](https://platform.openai.com/account/api-keys).\n\n```bash\n     _            _              _\n    | |          | |            | |\n  __| |_   _  ___| |_ __ _ _ __ | |_\n / _` | | | |/ _ \\ __/ _` | '_ \\| __|\n| (_| | |_| |  __/ || (_| | |_) | |_\n \\__,_|\\__,_|\\___|\\__\\__, | .__/ \\__|\n                      __/ | |\n                     |___/|_|\n\n┌  DuetGPT\n│\n◆  Please enter your OpenAI API key:\n│  sk-XXX…\n└\n```\n\n## Setup for development\n\n1. Clone the repository.\n\n2. Install dependencies:\n\n```bash\nnpm install\n```\n\n3. Run DuetGPT using yarn:\n\n```bash\nnpm start\n```\n\n## Sample interaction\n\nFor the purposes of illustrating how interactions work, I chose a super simple task. Let's say you want to add `.yarn/cache` to `.gitignore`. Here is how to ask DuetGPT to help you with that:\n\n```\n     _            _              _\n    | |          | |            | |\n  __| |_   _  ___| |_ __ _ _ __ | |_\n / _` | | | |/ _ \\ __/ _` | '_ \\| __|\n| (_| | |_| |  __/ || (_| | |_) | |_\n \\__,_|\\__,_|\\___|\\__\\__, | .__/ \\__|\n                      __/ | |\n                     |___/|_|\n\n┌  DuetGPT\n│\n◇  LLM and memory started\n│\n┌ 🤖 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\n│                                                                                                                            │\n│                                                                                                                            │\n│    My mission is to collaborate with you as a developer by providing specific bash or file modification commands to help   │\n│    you complete your development-related tasks, while effectively engaging in two-way interactions.                        │\n│                                                                                                                            │\n│                                                                                                                            │\n└───────────────────────────────────────────────────────","github_created_at":"2023-05-25T08:27:01+00:00","created_at":"2026-07-11T10:46:57.456067+00:00","updated_at":"2026-07-11T10:47:01.632713+00:00","categories":[{"slug":"ai-agents","name":"AI Agents","url":"https://www.graphcanon.com/categories/ai-agents","markdown_url":"https://www.graphcanon.com/categories/ai-agents.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/ai-agents"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"},{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"}],"tags":[{"slug":"assistant","name":"assistant"},{"slug":"llm","name":"llm"},{"slug":"ai","name":"ai"},{"slug":"gpt-4","name":"gpt-4"},{"slug":"gpt","name":"gpt"},{"slug":"openai","name":"openai"},{"slug":"agent","name":"agent"},{"slug":"cli","name":"cli"}],"trust":{"provenance":{"is_fork":false,"github_id":645245078,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-11T10:46:58.085Z","maintenance":{"label":"Dormant","score":18,"methodology":"github_public_v1","releases_90d":0,"days_since_push":1117,"last_release_at":null},"security_summary":{"status":"findings","scanner":"osv@v1","low_count":49,"high_count":0,"last_scan_at":"2026-07-11T10:46:58.875Z","medium_count":0,"scan_profile":"deps","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-07-11T10:46:58.491Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-07-11T10:46:58.491Z"},"has_cli":{"value":true,"source":"package.json:bin|scripts","observed_at":"2026-07-11T10:46:58.491Z"},"languages":{"value":["typescript","javascript"],"source":"github.language+package.json","observed_at":"2026-07-11T10:46:58.491Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-07-11T10:46:58.491Z"}}}}