A modern chat interface powered by the Claude Agent SDK
Seamless AI conversations with real-time streaming, session management, and specialized sub-agents. Built with React, TypeScript, and Bun for blazing-fast performance.
- 🌟 Overview
- ✨ Features
- 🚀 Installation
- 📖 Quick Start
- 🎮 Usage
- 🛠️ Development
- 📚 Architecture
- 🔧 Configuration
- 🐛 Troubleshooting
- 🤝 Contributing
- 📄 License
Agent Girl is a desktop-first chat interface that brings the power of Anthropic's Claude Agent SDK to your local machine. Unlike web-based alternatives, Agent Girl runs entirely on your computer with full file system access, persistent sessions, and no data leaving your machine except API calls to Claude.
Perfect for:
- 🔧 Developers needing AI assistance with code
- 📁 Power users who want file system access
- 🔒 Privacy-conscious individuals (all data stored locally)
- ⚡ Anyone seeking blazing-fast AI interactions
- Claude Sonnet 4.5 - Anthropic's most intelligent model
- Specialized Sub-Agents - Researcher, code reviewer, debugger, test writer, documenter
- Full Tool Access - Read, write, edit files, search code, run commands
- MCP Integration - Model Context Protocol for extensibility
- WebSocket-Based - Instant responses as Claude types
- Live Updates - See tool use in real-time
- Nested Visualization - Sub-agent tools displayed under parent tasks
- SQLite Persistence - All conversations saved locally
- Session Isolation - Each chat has its own working directory
- Auto-Titles - Sessions named from first message
- Full History - Never lose a conversation
- Clean Interface - Built with Radix UI components
- Dark Mode - Easy on the eyes
- Virtual Scrolling - Smooth performance with long conversations
- Syntax Highlighting - Beautiful code blocks
- Smooth Animations - Powered by Framer Motion
- Anthropic - Direct Claude API access
- Z.AI - Alternative provider with GLM models + web search
- Easy Switching - Change providers via dropdown
- Hot Reload - Instant updates during development
- TypeScript - Full type safety
- Bun Runtime - Ultra-fast builds and execution
- Zero Config - SQLite just works
Works on macOS, Linux, and Windows (Git Bash/WSL):
curl -fsSL https://raw.githubusercontent.com/KenKaiii/agent-girl/master/install.sh | bashWhat it does:
- ✅ Auto-detects your OS and architecture
- ✅ Downloads the correct release for your platform
- ✅ Installs to platform-specific location
- ✅ Creates global command (macOS/Linux)
- ✅ Sets up API key configuration
- ✅ macOS: Apple-signed & notarized (no warnings)
Supported Platforms:
- macOS (Intel + Apple Silicon)
- Linux (x64 + ARM64)
- Windows x64 (via Git Bash/WSL)
For native Windows PowerShell:
iwr -useb https://raw.githubusercontent.com/KenKaiii/agent-girl/master/install.ps1 | iexProvides better Windows integration with automatic PATH setup.
macOS:
Windows:
Browse all releases: https://github.com/KenKaiii/agent-girl/releases
Before first run, add your Anthropic API key:
# macOS/Linux
nano ~/Applications/agent-girl-app/.env
# Windows
notepad %USERPROFILE%\Documents\agent-girl-app\.envReplace sk-ant-your-key-here with your actual key from console.anthropic.com.
macOS:
agent-girlWindows:
- Double-click agent-girl.exein the install directory
From Finder/Explorer:
- Navigate to install directory
- Double-click the agent-girlexecutable
The app starts at http://localhost:3001 and opens automatically in your browser.
- Click "New Chat" to create a session
- Select a working directory (or use default)
- Choose your model (Claude Sonnet 4.5 recommended)
- Start your conversation!
Create a Session:
- Click "New Chat" in sidebar
- Choose working directory for file operations
- Sessions are isolated - files stay organized
Rename Session:
- Click pencil icon → Enter new name → Press Enter
Delete Session:
- Click trash icon → Confirm deletion (permanent)
Anthropic Models:
- Claude Sonnet 4.5 ⭐ - Best for complex tasks
- Direct API access to latest Claude models
Z.AI Models:
- GLM 4.6 - Alternative with web search MCP
- Great for research tasks
Switch anytime via header dropdown.
Claude can spawn specialized agents using the Task tool:
| Agent | Purpose | 
|---|---|
| researcher | Information gathering and analysis | 
| code-reviewer | Bug detection, security, best practices | 
| debugger | Systematic bug hunting | 
| test-writer | Comprehensive test suite creation | 
| documenter | Clear docs and examples | 
Sub-agent activity displays nested under parent tasks for clarity.
Each session has an isolated working directory:
- Default: ~/Documents/agent-girl-app/{session-id}/
- Custom: Choose any directory when creating
- Safety: File operations scoped to this directory only
- Bun v1.0.0+
- macOS, Linux, or WSL (Windows Subsystem for Linux)
- Node.js 18+ (optional, for compatibility testing)
# Clone repository
git clone https://github.com/KenKaiii/agent-girl.git
cd agent-girl
# Install dependencies
bun install
# Create environment file
cat > .env << EOF
API_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-your-key-here
EOF
# Start development server
bun run devDevelopment server runs at http://localhost:3001 with hot reload.
Build for your current platform:
# Single platform build
./build-release.sh
# All platforms (macOS ARM64, Intel, Windows, Linux)
./build-release-all.shBinaries output to ./release/.
# Run all tests
bun test
# Watch mode
bun test --watchFrontend:
- React 18 + TypeScript
- Radix UI (accessible components)
- Tailwind CSS 4 (utility-first styling)
- Framer Motion (animations)
- React Virtual (performance)
- React Markdown (message rendering)
Backend:
- Bun runtime (high performance)
- Claude Agent SDK (AI interactions)
- SQLite (session persistence)
- WebSocket (real-time streaming)
- MCP (Model Context Protocol)
agent-girl/
├── client/                 # React frontend
│   ├── components/
│   │   ├── chat/          # ChatContainer, MessageList, ChatInput
│   │   ├── message/       # Message renderers
│   │   ├── sidebar/       # Session sidebar
│   │   └── header/        # Header, model selector, about modal
│   ├── hooks/             # useWebSocket, useSessionAPI
│   ├── config/            # Model/provider configuration
│   └── index.tsx          # App entry point
├── server/
│   ├── server.ts          # Main server, WebSocket, SDK integration
│   ├── database.ts        # Session & message persistence
│   ├── providers.ts       # Multi-provider config
│   ├── agents.ts          # Custom agent registry
│   ├── mcpServers.ts      # MCP server config
│   └── systemPrompt.ts    # Dynamic system prompts
├── .github/workflows/     # CI/CD for releases
├── build-release.sh       # Build script (single platform)
├── build-release-all.sh   # Build script (all platforms)
└── install.sh             # One-line installer
Create .env in app directory:
# Anthropic (Claude models)
ANTHROPIC_API_KEY=sk-ant-your-key-here
# Z.AI (GLM models, optional)
ZAI_API_KEY=your-zai-key-hereCustom Agents:
Edit server/agents.ts:
export const AGENT_REGISTRY: Record<string, AgentDefinition> = {
  'my-agent': {
    description: 'Brief description for agent list',
    prompt: 'Detailed instructions...',
    tools: ['Read', 'Write', 'Grep'], // Optional tool restrictions
    model: 'sonnet', // Optional model override
  },
};MCP Servers:
Configure per-provider in server/mcpServers.ts:
export const MCP_SERVERS_BY_PROVIDER: Record<ProviderType, Record<string, McpServerConfig>> = {
  'my-provider': {
    'my-mcp-server': {
      type: 'http',
      url: 'https://api.example.com/mcp',
      headers: { 'Authorization': `Bearer ${process.env.API_KEY}` },
    },
  },
};System Prompt:
Customize Claude's behavior in server/systemPrompt.ts.
# macOS/Linux
lsof -ti:3001 | xargs kill -9
# Windows
netstat -ano | findstr :3001
taskkill /PID <PID> /F- Verify .envexists in app directory
- Check key format: sk-ant-...for Anthropic
- Restart app after changing .env
# macOS/Linux
rm -rf ~/Documents/agent-girl-app/
# Development
rm -rf data/ && mkdir dataFirst run:
- Right-click agent-girl→ "Open"
- Click "Open" in security dialog
Or via System Preferences:
- System Preferences → Security & Privacy
- Click "Open Anyway"
Note: Official releases are Apple-notarized and shouldn't show warnings.
Contributions welcome! Here's how:
- Fork the repository
- Create a feature branch: git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly: bun test
- Commit: git commit -m 'Add amazing feature'
- Push: git push origin feature/amazing-feature
- Open a Pull Request
- TypeScript - Use strict typing
- Code Style - Follow existing patterns
- Testing - Add tests for new features
- Documentation - Update README and comments
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
What this means:
- ✅ Free to use - Personal or commercial
- ✅ Modify freely - Adapt to your needs
- ✅ Distribute - Share with others
- ⚠️ Share modifications - If you run as a service, you must share your source code
- ⚠️ Keep license - Derivatives must also be AGPL-3.0
See the LICENSE file for full terms.
TL;DR: You can use, modify, and distribute Agent Girl freely, but if you modify it and run it as a public service, you must share your source code under the same license.
Created by KenKai
Built with:
- Anthropic Claude Agent SDK - AI capabilities
- Bun - Lightning-fast runtime
- React - UI framework
- Radix UI - Accessible components
- Tailwind CSS - Utility-first styling
- Framer Motion - Smooth animations
Special thanks to:
- Anthropic team for the Claude Agent SDK
- Open source community for amazing tools
- GitHub Issues: Report bugs
- GitHub Discussions: Ask questions
- YouTube: @kenkaidoesai
- Skool Community: skool.com/kenkai
Built with ❤️ using Claude Agent SDK
Copyright © 2025 KenKai • Licensed under AGPL-3.0