gazacode
v2.0.2
Published
GAZACODE — a beautiful multi-provider AI chat CLI with Skills & MCP (OpenAI, Gemini, Anthropic, OpenRouter, OpenCode Zen)
Downloads
419
Maintainers
Readme
GAZACODE
A beautiful multi-provider AI chat CLI for your terminal — with file actions, browser control, task planning, and a green aesthetic.
GAZACODE is a coding assistant that runs in your terminal, supports multiple AI providers, can create and edit files on your machine, and breaks complex tasks into a visible plan with progress tracking.
Features
- 5 AI Providers out of the box — OpenAI, Google Gemini, Anthropic Claude, OpenRouter, OpenCode Zen
- Always the latest models —
gpt-5.5,claude-opus-4-8,gemini-2.5-pro, and 100+ more - Real file operations — the AI can
read,write,touch,search, andmkdirfiles - Headless browser control — navigate, click, type, screenshot, snapshot any URL
- Smart task planning — multi-step requests are broken into a visible ⬜/✅ checklist
- Auto-saved sessions — pick up where you left off, with full conversation history
- Settings page —
/settingsopens a dedicated screen for provider, model, and API key - RTL support — Arabic text is wrapped in Unicode bidi controls for proper display
- Multi-language — built-in support for file ops in 8+ languages
Quick start
1. Install
npm install2. Run
npm startOn first run, you'll be taken to the connect screen to add an API key for at least one provider.
3. Develop
npm run dev # Run with hot reload via tsx
npm run build # Compile TypeScript to dist/
npm run typecheck # Type check without emitSupported providers
| Provider | Default model | Get API key |
|---------------|---------------------|-----------------------------------------------------|
| OpenAI | gpt-5.5 | platform.openai.com |
| Anthropic | claude-sonnet-4-6 | console.anthropic.com |
| Google Gemini | gemini-2.5-pro | aistudio.google.com |
| OpenRouter | nvidia/nemotron-3-super-120b-a12b:free | openrouter.ai/keys |
| OpenCode Zen | opencode/big-pickle | opencode.ai/auth |
In-chat commands
| Command | Description |
|-------------------|-------------------------------------------------|
| /settings | Open the settings page |
| /provider | Switch to a different provider |
| /model [name] | Switch model (or pick from list) |
| /folder [path] | Set working folder (defaults to cwd if no arg)|
| /read <path> | Load a file into conversation |
| /search <regex> | Search file contents |
| /write <path> <text> | Write text to a file |
| /touch <path> | Create an empty file |
| /mkdir <path> | Create a directory |
| /run <skill> | Run a registered skill (e.g., screenshot) |
| /browser <cmd> | navigate / click / type / screenshot |
| /retry | Regenerate the last response |
| /undo | Remove the last exchange |
| /copy | Copy the last response to clipboard |
| /export [file] | Save conversation as Markdown |
| /system [text\|reset] | View or set the system prompt |
| /newchat | Start a fresh conversation |
| /clear | Clear the screen and reset conversation |
| /keys | Manage stored API keys |
| /disconnect | Go back to the connect screen |
| /history | Show current model and turn counts |
| /help | Show all commands |
| /exit | Quit GAZACODE |
CLI commands
gazacode # Start the app
gazacode connect # Open the connect screen
gazacode config # Show config and stored providers
gazacode disconnect # Clear all stored API keys
gazacode reset # Erase everything and start over
gazacode help # Show helpHow the AI works
GAZACODE uses a strict system prompt that forces the AI to:
- Plan first — For multi-file requests, the AI outputs a
## Planwith numbered steps. These appear as ⬜ checkboxes in the box BEFORE any work starts. - One step at a time — Each step produces a
✅status line that the user sees in chat. The checklist updates in real time. - Hide the code — All
FILE:blocks are silently saved to disk. The chat only shows brief status messages. The user never sees raw code in the conversation. - Test before declaring done — For websites, the AI opens the result in a headless browser and takes a screenshot.
Example of a clean AI response (what the user sees in chat):
## Plan
1. Create index.html
2. Create style.css
3. Create script.js
✅ Create index.html(Meanwhile, the FILE: index.html block is silently saved to disk, the file is created, and the checklist in the box shows ⬜ Create style.css and ⬜ Create script.js as the next steps.)
Project structure
gazacode/
├── src/
│ ├── chat.ts # Main chat session, render loop, system prompt
│ ├── config.ts # Persistent config (API keys, last model, session)
│ ├── index.ts # CLI entry point
│ ├── mcp/ # Model Context Protocol (browser control)
│ ├── providers/ # AI provider implementations
│ │ ├── openai.ts
│ │ ├── anthropic.ts
│ │ ├── gemini.ts
│ │ ├── openrouter.ts
│ │ ├── zen.ts
│ │ ├── index.ts
│ │ └── types.ts
│ ├── skills/ # Built-in skills (screenshot, echo, ...)
│ ├── types.d.ts
│ └── ui/ # UI components (banner, picker, settings, ...)
├── package.json
├── tsconfig.json
└── .gitignoreConfiguration
All configuration is stored in ~/.opengaza/:
config.json— API keys, last model per provider, first-run flagsession.json— current session (messages, provider, model, work folder)
These files are user-specific and should never be committed. They are in .gitignore.
Requirements
- Node.js 18+
- A working internet connection
- An API key from at least one supported provider
License
MIT — © GAZA
