{"id":14155444,"url":"https://github.com/chuanqisun/iter","last_synced_at":"2025-08-14T19:21:06.536Z","repository":{"id":163253616,"uuid":"638621290","full_name":"chuanqisun/iter","owner":"chuanqisun","description":"Prompt Engineer's Playground","archived":false,"fork":false,"pushed_at":"2025-08-06T00:04:32.000Z","size":1229,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-06T02:25:30.784Z","etag":null,"topics":["devtool","gpt","openai","openai-api","playground","sandbox"],"latest_commit_sha":null,"homepage":"https://chuanqisun.github.io/iter/","language":"TypeScript","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/chuanqisun.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}},"created_at":"2023-05-09T18:36:06.000Z","updated_at":"2025-08-06T00:04:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"d02de415-5441-4818-b6b5-af7e02ab6d0e","html_url":"https://github.com/chuanqisun/iter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chuanqisun/iter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuanqisun%2Fiter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuanqisun%2Fiter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuanqisun%2Fiter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuanqisun%2Fiter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chuanqisun","download_url":"https://codeload.github.com/chuanqisun/iter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuanqisun%2Fiter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270469780,"owners_count":24589247,"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","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"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":["devtool","gpt","openai","openai-api","playground","sandbox"],"created_at":"2024-08-17T08:03:18.882Z","updated_at":"2025-08-14T19:21:06.526Z","avatar_url":"https://github.com/chuanqisun.png","language":"TypeScript","funding_links":[],"categories":["openai"],"sub_categories":[],"readme":"# Iter\n\nA minimalist frontend for Gen AI Chat models, optimized for rapid prompt iteration.\n\n- **🔒 Privacy first**: Credentials are stored in your browser. All requests directly sent to API with no middleman. Absolutely no tracking.\n- **⚡ API endpoint and model hot-swap**: Switch between different APIs and models without losing any chat progress\n- **🦉 Adapts to OS/Browser default theme**: Dark theme for happy night owls\n- **💅 Markdown parser**: Built-in syntax highlight and copy button for code blocks\n- **📋 Smart paste**: HTML pastes as markdown, images as input, and files as attachments\n- **🧭 Artifacts**: Live edit and preview code blocks for SVG, HTML, Mermaid, TypeScript, and React\n- **💻 Interpreter**: Process uploaded files with TypeScript, with access to NPM registry, a virtual File System, and an LLM prompt API.\n- **🖱️ Cursor chat**: Precisely edit the selected text\n- **📸 Vision input**: Handle visual inputs with multi-modal models\n- **🎙️ Speech input**: Use microphone to input text that can be mixed with typed message\n- **📋 Document input**: Interpret PDF and text files without conversion\n\n## Screenshots\n\nCreate a runnable program from text\n![Two screenshots of the app, one showing gpt generated code for a todo app, another showing the todo app running live](./designs/screenshots/artifact.png)\n\nRecreate the UI of Airbnb with a single screenshot\n![Two screenshots of the app, one showing gpt generated code based on user uploaded screen, another showing the code running live](./designs/screenshots/vision.png)\n\n## Supported model providers\n\n- OpenAI\\*\n  - ✅ GPT-5\n  - ✅ GPT-5-mini\n  - ✅ GPT-5-nano\n  - ✅ codex-mini\n  - ✅ o4-mini\n  - ✅ o3-pro\n  - ✅ o3\n  - ✅ o3-mini\n  - ✅ GPT-4.5-preview\n  - ✅ GPT-4.1\n  - ✅ GPT-4.1-mini\n  - ✅ GPT-4.1-nano\n  - ✅ GPT-4o\n  - ✅ GPT-4o-mini\n- Anthropic\n  - ✅ Claude Opus 4.1\n  - ✅ Claude Opus 4\n  - ✅ Claude Sonnet 4\n  - ✅ Claude 3.7 Sonnet\n  - ✅ Claude 3.5 Sonnet\n  - ✅ Claude 3.5 Haiku\n- Google Generative AI\n  - ✅ Gemini 2.5 Pro\n  - ✅ Gemini 2.5 Flash\n  - ✅ Gemini 2.5 Flash Preview\n  - ✅ Gemini 2.5 Flash Lite\n  - ✅ Gemini 2.0 Flash\n  - ✅ Gemini 2.0 Flash Lite\n  - ✅ Gemini 2.0 Flash Thinking\n- xAI\\*\\*\n  - ✅ Grok 4\n  - ✅ Grok 3\n  - ✅ Grok 3 Fast\n  - ✅ Grok 3 Mini\n  - ✅ Grok 3 Mini Fast\n- OpenRouter\n  - All chat models\n\n\\*See detailed support matrix for [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/responses?tabs=python-secure#responses-api)  \n\\*\\*xAI models do not support PDF document\n\n## Keyboard shortcuts\n\nMac users, please use \u003ckbd\u003e⌘\u003c/kbd\u003e instead of \u003ckbd\u003eCtrl\u003c/kbd\u003e\n\n| Action               | Shortcut                                                        |\n| -------------------- | --------------------------------------------------------------- |\n| Send message         | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eEnter\u003c/kbd\u003e (in any textarea)            |\n| Abort action         | \u003ckbd\u003eEscape\u003c/kbd\u003e (when streaming response)                     |\n| Dictate              | \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eSpace\u003c/kbd\u003e (hold to talk)              |\n| Open response editor | \u003ckbd\u003eEnter\u003c/kbd\u003e or double click (when focusing response block) |\n| Open artifact editor | \u003ckbd\u003eEnter\u003c/kbd\u003e or double click (when focusing artifact block) |\n| Toggle cursor chat   | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eK\u003c/kbd\u003e (in artifact or response editor) |\n| Rerun artifact       | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eEnter\u003c/kbd\u003e (in artifact editor)         |\n| Exit editor          | \u003ckbd\u003eEscape\u003c/kbd\u003e (in artifact or response editor)              |\n| Select up/down       | \u003ckbd\u003e↑\u003c/kbd\u003e / \u003ckbd\u003e↓\u003c/kbd\u003e                                     |\n| Create backup        | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e                                  |\n| Restore backup       | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eO\u003c/kbd\u003e                                  |\n| Export               | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eE\u003c/kbd\u003e               |\n| Import               | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eO\u003c/kbd\u003e               |\n\n## Directives\n\nDirectives force the LLM to generate code that performs specific tasks. The code will take effect after manually run in the editor.\n\n### `Run` directive\n\nInclude a `run` block in the user message to force the LLM to generate code and output files.\n\n````\n```run\n\u003cdescribe what the code should do in natural language, you can also include what types of files to output\u003e\n```\n````\n\nThe run block can take optional directives to expose additional APIs to the generated code\n\n**`llm`**: Generate code that can prompt the active LLM model.\n\n````\n```run llm\n\u003cdescribe how the code should use LLM to perform tasks, e.g. summarize, extract, generate content\u003e\n```\n````\n\n### `Edit` directive\n\nInclude an `edit` block in the user message to force the LLM to generate code that edits the nearest assistant message. Other messages will be hidden.\n\n````\n```edit\n\u003ceditorial goals or instructions\u003e\n```\n````\n\n## Attachments\n\nYou can copy/paste or upload files into each message in one of the following formats:\n\n- **Embedded**: LLM can see the image, PDF, or text content. If using `run` directive, LLM can write code that accesses the content as a file.\n- **External**: LLM can only see the metadata of the file (name, size, type, etc.). If using `run` directive, LLM can write code that accesses the content as a file without reading the content.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchuanqisun%2Fiter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchuanqisun%2Fiter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchuanqisun%2Fiter/lists"}