An AI Coding Agent orchestration tool that manages multiple AI coding agents (Claude Code, GitHub Copilot CLI, Google Gemini, OpenAI Codex) through a web-based Kanban interface. Each task runs in an isolated Git worktree with real-time log streaming.
- Kanban Board: Visual task management (TODO → In Progress → In Review → Done)
- Project & Epic: Projects group repositories, and Epics enable AI agents to orchestrate tasks across multiple repositories
- Multi-Agent Support: Run tasks with Claude Code, GitHub Copilot CLI, Google Gemini, or OpenAI Codex
- Git Worktree Isolation: Each task gets its own isolated worktree and branch
- Real-time Streaming: Live execution logs via Server-Sent Events (SSE)
- Diff Viewer: Review code changes before merging
- Quick Access: Open worktrees directly in file explorer or terminal
- Responsive Design: Mobile-friendly interface with adaptive navigation
At least one of the following is required:
npx sahai@latestOpen http://localhost:49831 in your browser.
npx sahai@latest --port 8080 # Custom port
npx sahai@latest --host 0.0.0.0 # Bind to all interfaces
npx sahai@latest -H 0.0.0.0 -p 8080 # Short options
npx sahai@latest --help # Show help
npx sahai@latest --version # Show versionSahai includes an MCP (Model Context Protocol) server that allows AI agents like Claude Code to create and manage tasks programmatically.
Endpoint: http://localhost:49381/v1/mcp
Add to your Claude Code MCP settings (~/.claude/settings.json):
{
"mcpServers": {
"sahai": {
"type": "url",
"url": "http://localhost:49381/v1/mcp"
}
}
}| Tool | Description |
|---|---|
create_task |
Create a new task in a repository |
start_task |
Start a task (creates worktree and spawns executor) |
resume_task |
Resume a paused task with optional message |
get_task |
Get details of a specific task |
get_task_logs |
Get execution logs for a specific task |
list_repositories |
List all registered repositories |
| Variable | Default | Description |
|---|---|---|
PORT |
49831 |
Server port |
HOST |
localhost |
Server host |
To contribute to Sahai, you'll need Bun (v1.0.0+).
# Clone the repository
git clone https://github.com/hayashikun/sahai.git
cd sahai
bun install
# Run in development mode (backend + frontend with hot reload)
bun run dev
# Run individually
bun run dev:backend # Hono server on port 49382
bun run dev:frontend # Vite dev server on port 49381sahai/
├── packages/
│ ├── backend/ # Hono + SQLite (Drizzle ORM) API server
│ ├── frontend/ # React + Vite + Jotai + Tailwind CSS
│ └── shared/ # Shared TypeScript types and schemas
└── bin/ # CLI entry point
# Development
bun run dev # Run backend + frontend
bun run dev:backend # Backend only (hot reload)
bun run dev:frontend # Frontend only (Vite)
# Build
bun run build # Build frontend for production
# Code Quality (Biome)
bun run lint # Lint check
bun run format # Format files
bun run check # Lint + format with auto-fix
bun run ci # CI check (run before commits)
# Database (from packages/backend/)
bun run db:generate # Generate migration from schema changes
bun run db:migrate # Apply migrations
bun run db:studio # Open Drizzle Studio| Variable | Default | Description |
|---|---|---|
PORT |
49381 |
Frontend dev server port |
API_PORT |
49382 |
Backend API server port |
VITE_API_BASE_URL |
http://localhost:49382 |
API URL for frontend |
Apache-2.0