AI Task Orchestration Platform
English | 中文
An AI task orchestration platform — manage, dispatch, and execute AI-assisted development tasks through a visual Kanban board.
Integrates terminal, code editor, file tree, live preview, and MCP toolchain into an all-in-one AI development workflow assistant for individual developers.
- Node.js >= 22
- pnpm (recommended)
git clone <repo-url>
cd tower
pnpm install
# Configure environment
cp .env.example .env
# Uses SQLite by default — no extra setup needed
# Initialize database
pnpm db:push
pnpm db:seed
pnpm db:init-fts
# Start dev server
pnpm devOpen http://localhost:3000 in your browser.
pnpm build
pnpm startWorkspace
├── Project
│ └── Task
│ ├── Label
│ ├── Execution
│ └── Message
└── Label (shared)
- Workspace — Top-level container for projects and shared labels
- Project — Linked to a Git repo and/or local path; type is NORMAL or GIT
- Task — Work item displayed as a Kanban card grouped by status
- Drag-and-drop task cards between columns (TODO → IN_PROGRESS → IN_REVIEW → DONE)
- Right-click context menu: change status, launch execution, view details
- Search box for fuzzy matching task titles and descriptions
- Priority levels: LOW / MEDIUM / HIGH / CRITICAL
- Custom labels with color
The task detail page has a terminal panel on the left and a three-tab workspace on the right:
- Browser terminal powered by xterm.js + node-pty
- Full ANSI rendering (colors, progress bars, cursor movement)
- Click "Execute" to launch Claude CLI with live output
- Interactive keyboard input — chat with Claude directly
- Auto-synced terminal dimensions
- Reconnect without losing the session
- Tree view of the worktree directory structure
- Automatic gitignore filtering
- Git status badges (M/A/D)
- Context menu: create file/folder, rename, delete
- Auto-refresh during execution
- Monaco Editor (same engine as VS Code)
- Syntax highlighting: TypeScript, JavaScript, Python, JSON, YAML, CSS, HTML, Markdown, Prisma
- Multi-tab editing with Ctrl+S save
- Dirty dot indicator for unsaved files
- Theme follows dark/light mode
- Diff view of the task branch against the base branch
- Merge confirmation workflow
- Launch a frontend dev server (e.g.
npm run dev) - Embedded iframe preview
- Auto-detected preview URL based on command pattern
- Auto-refresh on file save
- Auto-stops dev server when leaving the page
Create task → Click Execute → TODO auto-transitions to IN_PROGRESS
→ Claude CLI runs in terminal → Completes (exit 0) → IN_REVIEW
→ Manual review → Pass → DONE / Fail → re-execute
- Automatically creates a Git worktree on execution (if baseBranch is set)
- Sends Feishu notification on completion (when configured)
- On failure, task stays IN_PROGRESS for retry
- Selecting a local folder auto-detects Git remote and fills in gitUrl
- Project types: FRONTEND / BACKEND (controls preview availability)
- Git Path Mapping rules: auto-resolve local paths by host + owner
| Category | Options |
|---|---|
| General | Theme (dark/light/system), Language (zh/en), Default terminal app |
| Terminal | WebSocket port, Idle timeout |
| System | Upload limits, Concurrency, Git timeout, Search parameters |
| CLI Profile | CLI command, Args, Environment variables |
| Prompts | Custom agent prompt templates |
| Agent | Agent configuration management |
| Git Rules | Path mapping rules (host/owner → local path) |
Supports Chinese and English. Switch in Settings.
Tower exposes an MCP Server for external AI agents:
{
"mcpServers": {
"tower": {
"command": "npx",
"args": ["tsx", "<project-root>/src/mcp/index.ts"]
}
}
}| Category | Tools |
|---|---|
| Workspace | list_workspaces, create_workspace, update_workspace, delete_workspace |
| Project | list_projects, create_project, update_project, delete_project |
| Task | list_tasks, create_task, update_task, delete_task, move_task |
| Label | list_labels, create_label, delete_label, set_task_labels |
| Search | search (global search across tasks/projects/repos) |
| Terminal | get_task_terminal_output, send_task_terminal_input, get_task_execution_status |
| Knowledge | identify_project |
| Notes/Assets | manage_notes, manage_assets |
pnpm dev # Start dev server (Webpack mode — required for node-pty)
pnpm build # Production build
pnpm test # Run tests (watch mode)
pnpm test:run # Run tests (single run)
pnpm db:push # Sync Prisma schema to database
pnpm db:seed # Seed initial data
pnpm db:studio # Open Prisma Studio (database GUI)
pnpm db:init-fts # Initialize full-text search index
pnpm mcp # Start MCP Server (standalone process)- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Database: SQLite (Prisma ORM)
- Terminal: node-pty + xterm.js + WebSocket
- Editor: Monaco Editor
- Styling: TailwindCSS 4
- Drag & Drop: dnd-kit
- Testing: Vitest
| Variable | Description | Default |
|---|---|---|
| DATABASE_URL | Database connection string | file:./prisma/dev.db (SQLite) |
| PORT | Server port | 3000 |
