Tiknix Workbench

The Workbench is an AI-powered task management system that integrates Claude Code for automated development workflows. It provides a web-based interface for creating, monitoring, and managing tasks that Claude can execute autonomously.

Features

  • Task Management: Create, edit, and track development tasks
  • Claude Integration: Tasks are executed by Claude Code in isolated tmux sessions
  • Team Collaboration: Share tasks with team members using role-based access
  • Live Progress: Real-time turn-based progress tracking with snapshots
  • MCP Tools: Custom tools for task status updates and queries

Quick Start

1. Create a Task

Navigate to /workbench and click Create Task:

  • Title: Brief description of the task
  • Description: Detailed requirements and context
  • Task Type: feature, bugfix, refactor, research, or other
  • Priority: low, medium, high, or critical

2. Run the Task

Click Run with Claude to execute. Claude will:
1. Read the task description
2. Plan the implementation
3. Execute using available MCP tools
4. Update progress in real-time

3. Monitor Progress

The task view shows:
  • Status: pending, in_progress, waiting, completed, failed
  • Turn Counter: Which iteration Claude is on
  • Live Snapshots: Screenshots of current work
  • Task Logs: Detailed execution history

Installation

Prerequisites

  • PHP 8.1+ with PHP-FPM
  • Nginx with SSE support
  • tmux for session management
  • Claude Code CLI installed
  • SQLite or MySQL database

Step 1: Database Setup

Run the schema to create workbench tables:

-- From sql/schema.sql, the workbench tables include:
-- workbenchtask, tasklog, tasksnapshot, taskcomment
-- team, teammember, teaminvitation

sqlite3 database/tiknix.db < sql/schema.sql

Step 2: Nginx Configuration for SSE

The MCP server uses Server-Sent Events for streaming. Configure Nginx to disable buffering:

# /etc/nginx/sites-available/tiknix.conf

server {
listen 443 ssl;
http2 on;
server_name your-domain.com;

ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;

root /path/to/tiknix/public;
index index.php;

# MCP endpoints - SSE requires no buffering
location /mcp {
fastcgi_pass 127.0.0.1:9083;
include /etc/nginx/fastcgi.conf;

fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param REQUEST_URI $request_uri;

# CRITICAL: Disable buffering for SSE
fastcgi_buffering off;
fastcgi_read_timeout 300s;
gzip off;
}

# Static files
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1d;
add_header Cache-Control "public, immutable";
try_files $uri =404;
}

# PHP-FPM for everything else
location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9083;
fastcgi_index index.php;
include /etc/nginx/fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

# Security
location ~ /\.(git|env|htaccess) {
deny all;
}
}

Key SSE settings:
  • fastcgi_buffering off - Streams responses immediately
  • fastcgi_read_timeout 300s - Long timeout for streaming
  • gzip off - Compression breaks SSE

Step 3: tmux Setup

tmux is used to run Claude Code sessions in the background. Install it:

# Ubuntu/Debian
sudo apt install tmux

# macOS
brew install tmux

The Workbench creates sessions named:
  • tiknix-{username}-task-{id} for personal tasks
  • tiknix-team-{team}-task-{id} for team tasks

Step 4: Claude Code Installation

Install Claude Code CLI:

# Install via npm
npm install -g @anthropic-ai/claude-code

# Or download directly
curl -fsSL https://claude.ai/install.sh | sh

# Verify installation
claude --version

Configure your API key:

# Set your Anthropic API key
export ANTHROPIC_API_KEY="sk-ant-..."

# Or add to ~/.bashrc / ~/.zshrc
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc

Step 5: Configure the MCP Server

Register your Tiknix MCP server in Claude's config:

# Add the MCP server
claude mcp add tiknix https://your-domain.com/mcp/message --transport sse

Or edit ~/.claude.json directly:

{
  "mcpServers": {
    "tiknix": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://your-domain.com/mcp/message"],
      "transport": "sse"
    }
  }
}

Architecture

Task Execution Flow

1. User creates task in Workbench UI
                |
2. Click "Run with Claude"
                |
3. ClaudeRunner spawns tmux session
                |
4. claude-worker.php executes Claude Code CLI
                |
5. Claude reads task via MCP tools
                |
6. Claude executes, updates progress
                |
7. Workbench UI polls for updates
                |
8. Task completes, session ends

Key Components

ComponentLocationPurpose
------------------------------
Workbench controllercontrols/Workbench.phpUI routes and actions
ClaudeRunnerlib/ClaudeRunner.phpManages tmux sessions
PromptBuilderlib/PromptBuilder.phpGenerates task prompts
TaskAccessControllib/TaskAccessControl.phpPermission handling
claude-worker.phpcli/claude-worker.phpCLI execution script

MCP Tools

The workbench provides these MCP tools:

ToolPurpose
---------------
list_tasksList available tasks
get_taskGet task details
update_taskUpdate task status/progress
complete_taskMark task as completed
add_task_logAdd log entry
ask_questionRequest user input

Teams

Creating a Team

1. Navigate to /teams 2. Click Create Team 3. Add team members with roles:
  • Owner: Full control, can delete team
  • Admin: Manage members and tasks
  • Member: Create and run tasks
  • Viewer: Read-only access

Team Tasks

Tasks can be assigned to teams for collaborative work:

1. Create task in Workbench
2. Select team from dropdown
3. Team members can view/run based on role


Troubleshooting

Claude session not starting

Check tmux is installed and accessible:

which tmux
tmux -V

Check the claude-worker log:

tail -f /path/to/tiknix/log/claude-worker.log

SSE not streaming

Verify Nginx config has buffering disabled:

nginx -t
sudo nginx -s reload

Test SSE endpoint directly:

curl -N https://your-domain.com/mcp/sse

MCP tools not appearing

Check tool registration:

curl -X POST https://your-domain.com/mcp/message \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Task stuck in "running"

Kill orphaned tmux sessions:

# List sessions
tmux list-sessions | grep tiknix

# Kill specific session
tmux kill-session -t tiknix-username-task-123


API Reference

Task Endpoints

MethodEndpointDescription
-------------------------------
GET/workbenchList tasks
GET/workbench/view?id={id}View task
GET/workbench/createCreate form
POST/workbench/createSave task
GET/workbench/edit?id={id}Edit form
POST/workbench/editUpdate task
POST/workbench/runRun with Claude
POST/workbench/stopStop execution
DELETE/workbench/delete?id={id}Delete task

Task Status Values

StatusDescription
---------------------
pendingTask created, not started
in_progressClaude actively working
waitingWaiting for user input
completedSuccessfully finished
failedExecution failed
cancelledManually stopped

Version History

  • v1.5 - Initial workbench release with Claude Code integration
  • Removed Swoole dependency (pure PHP-FPM)
  • Added team collaboration features
  • Added live snapshot capture