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