This guide will walk you through using the CodeHero Admin Panel to manage your AI-powered development projects.
- Dashboard
- Managing Projects
- Working with Tickets
- Console View
- Execution History
- Kill Switch Commands
- Web Terminal
- Claude Assistant
- AI Project Manager
- Settings
- System Updates
- Tips & Best Practices
- Troubleshooting
The Dashboard is your main control center. It shows:
- System Status: Whether Claude daemon is running
- Quick Stats: Active projects, open tickets, sessions today
- Recent Activity: Latest ticket updates and completions
The Projects page shows all your development projects. Each project card displays:
- Project name and description
- Working directory path
- Number of open tickets
- Quick action buttons
Click "New Project" to create a project:
- Name: A descriptive name for your project
- Working Directory: The full path where Claude will work (e.g.,
/home/claude/my-app) - Description: Brief description of what the project is about
Click on any project to see its details and all associated tickets.
Tickets are the core of CodeHero. Each ticket represents a task for Claude to complete.
- Go to a Project and click "+ New Ticket"
- Fill in the form:
- Title: Short description of the task
- Description: Detailed instructions for Claude
- Type: Category of work (see below)
- Priority: low, medium, high, critical
- Sequence: Execution order (optional)
- Dependencies: Other tickets that must complete first (optional)
Color-coded categories to organize your work:
| Type | Color | Use For |
|---|---|---|
| 🟣 feature | Purple | New functionality |
| 🔴 bug | Red | Fix broken behavior |
| 🟠 debug | Orange | Investigation, troubleshooting |
| 🟣 rnd | Violet | Research & Development |
| ⚪ task | Gray | General work (default) |
| 🔵 improvement | Cyan | Refactoring, optimization |
| 🟢 docs | Green | Documentation |
Tip: Use the right type to help you filter and track different kinds of work.
Priority affects processing order when no sequence is set:
| Priority | When to Use |
|---|---|
| critical | Urgent, blocks other work |
| high | Important, do soon |
| medium | Normal priority (default) |
| low | Nice to have, do when time permits |
Control the exact order tickets are processed:
- Sequence Number: Assign a number (1, 2, 3...) to define execution order
- Tickets with sequence numbers run before tickets without
- Lower numbers run first: sequence 1 → 2 → 3 → (no sequence by priority)
Example:
Ticket A: sequence_order = 1 → Runs first
Ticket B: sequence_order = 2 → Runs second
Ticket C: sequence_order = 3 → Runs third
Ticket D: no sequence → Runs after all sequenced tickets
Make tickets wait for other tickets to complete:
- When creating/editing a ticket, select Dependencies
- Choose which tickets must be done first
- Daemon will skip dependent tickets until dependencies are
doneorawaiting_input
Example:
"Shopping Cart" depends on "Product Catalog"
→ Cart ticket won't start until Catalog is complete
Tip: Dependencies work with awaiting_input by default - so if you're reviewing a ticket, dependent tickets can still run.
Control how much freedom Claude has when working on tickets:
| Mode | Description |
|---|---|
| Autonomous | Full access, no permission prompts. Claude works uninterrupted. |
| Semi-Autonomous | Smart sandbox (recommended). Auto-approves safe operations, asks for risky ones, blocks dangerous ones. |
| Supervised | Claude asks permission before every write/edit/bash operation. |
The smart middle ground between full access and constant prompts:
✅ Auto-Approved (No prompts):
- File create/edit/delete within project folder
- Running tests (
npm test,pytest,phpunit) - Build commands (
npm run build,composer install) - Linting and formatting
- Git read operations (
git status,git log,git diff)
- Installing packages (
npm install <package>,pip install,composer require) - Git write operations (
git commit,git push,git checkout) - Database migrations (
php artisan migrate) - Network requests (
curl,wgetto external URLs)
🚫 Blocked (Cannot execute):
- System commands (
sudo,apt,systemctl) - Modifying
.gitfolder (backup protection) - Accessing system paths (
/etc,/opt/codehero,~/.ssh) - Dangerous commands (
rm -rf /,chmod 777)
"Approve Similar" Feature:
When a permission prompt appears, click "Approve All Similar" to auto-approve future similar operations. For example, approving npm install express will auto-approve all future npm install commands.
- Per Project: Set default when creating project
- Per Ticket: Override project default when creating ticket
- Change Later: Edit ticket settings anytime
Break complex tasks into smaller pieces:
- Create a main (parent) ticket
- Create sub-tickets and set Parent Ticket
- Sub-tickets inherit the project
- Parent tracks overall progress
How it works:
- Sub-tickets run in their sequence order
- Parent completes when all children complete
- Use for large features with multiple steps
Jump a ticket to the front of the queue:
- Open the ticket detail page
- Click "
▶️ Start Now" button - Ticket gets
is_forced = TRUEandstatus = open - Daemon will process it next (after current ticket finishes)
Note: If clicking Start Now on a sub-ticket, the parent ticket starts instead.
Failed tickets can automatically retry:
- Each ticket has
retry_count(starts at 0) andmax_retries(default 3) - When a ticket fails: retry_count increments
- If retry_count < max_retries: ticket resets to
openand tries again - If retry_count >= max_retries: ticket stays
failed
Configure per ticket:
- Increase max_retries for flaky tasks
- Set to 0 to disable auto-retry
Tickets flow through these statuses:
| Status | Description |
|---|---|
open |
Waiting to be processed |
in_progress |
Claude is currently working on it |
awaiting_input |
Claude needs your response |
done |
Successfully completed |
failed |
Something went wrong (may auto-retry) |
skipped |
Manually skipped |
timeout |
Exceeded max duration |
From the ticket detail page:
| Button | What it does |
|---|---|
| Jump to front of queue | |
| 🔄 Retry | Retry a failed ticket |
| ⏭️ Skip | Skip this ticket |
| 🗑️ Delete | Permanently delete ticket |
| ⏹ Stop | Kill switch - stop Claude immediately |
Visual overview of project progress:
- Go to Project → Click "📈 Progress" or the progress icon on the project card
- See:
- Overall completion percentage
- Ticket counts by status
- Ticket counts by type
- Sequence flow visualization
- AI Assistant for project-specific help
DO:
- Be specific about what you want
- Include file paths when relevant
- Mention the programming language/framework
- Break large tasks into sub-tickets
- Use appropriate ticket types
DON'T:
- Vague instructions like "make it better"
- Multiple unrelated tasks in one ticket
- Assume Claude knows context from other tickets
Good Example:
Title: Add user authentication API
Description:
Create REST API endpoints in /api/auth/:
- POST /api/auth/login - Accept email/password, return JWT
- POST /api/auth/register - Create new user
- GET /api/auth/me - Return current user (requires auth)
Use the existing User model in models/user.py.
Use bcrypt for password hashing.
Bad Example:
Title: Auth
Description: Add login
The Console provides a real-time view of Claude's execution output.
- Live streaming: See Claude's work as it happens
- Scrollable history: Review past output
- Auto-scroll: Stays at bottom for new content
The History page shows all past execution sessions:
- Start and end times
- Duration
- Exit codes
- Associated tickets
When Claude is working on a ticket, you can instantly stop execution using the Kill Switch.
Option 1: Kill Switch Button
- When a ticket is
in_progress, a red ⏹ Stop button appears next to the Send button - Click it to immediately stop Claude's execution
- The ticket will be paused and waiting for your new instructions
Option 2: /stop Command
- Type
/stopin the chat field and click Send - This works exactly like the button - instant stop
Option 3: Via AI Assistant
- You can ask the Claude Assistant to stop a ticket using the kill switch tool
- Example: "Stop ticket PROJ-0001" or "Activate kill switch for ticket 5"
- Claude's process receives SIGTERM and stops immediately
- The ticket status changes to
awaiting_input - A system message confirms the stop
- You can then provide new instructions or corrections
The Web Terminal provides full Linux shell access directly in your browser.
Click Terminal in the navigation menu to open the terminal.
- Real shell access: Full PTY terminal via WebSocket
- Popup support: Click "Open in Popup" for multi-monitor setups
- Full sudo access: Run administrative commands
- 256-color support: Full terminal color support with xterm.js
- The terminal runs as the
claudeuser - Use
sudofor administrative commands - Resize the browser window to adjust terminal size
- Open in popup to keep terminal visible while working
Claude Assistant provides direct interactive access to Claude AI outside of the ticket workflow.
Click Claude Assistant in the navigation menu.
-
AI Model Selection: Choose your preferred model:
- Opus: Most capable, best for complex tasks
- Sonnet (default): Balanced performance and speed
- Haiku: Fastest, good for quick questions
-
Popup Window: Click "Open in Popup" for multi-monitor setups
-
Direct Access: Chat with Claude without creating tickets
- Quick questions about your code
- Getting help with platform issues
- Learning and exploration
- Prototyping ideas before creating tickets
The AI Project Manager helps you design your project before coding by creating a comprehensive blueprint.
- Go to the Projects page
- Click the "Plan with AI" button
- A new Claude Assistant window opens in blueprint mode
- Claude automatically asks about your project requirements:
- Project overview and goals
- Technology stack preferences
- Database requirements
- API endpoints needed
- File structure
After the conversation, Claude provides a complete blueprint including:
- Tech Stack: Recommended technologies
- Database Schema: Tables, relationships, indexes
- API Design: Endpoints with request/response formats
- File Structure: Organized directory layout
- Feature Breakdown: Implementation milestones
- Coding Standards: Naming conventions, best practices
Copy the generated blueprint into your project's description field when creating a new project. This gives Claude all the context it needs when working on tickets.
Access settings by clicking the ⚙️ button in the dashboard header.
Get instant alerts on your phone when Claude needs attention.
-
Create a Telegram Bot
- Open Telegram on your phone and search for @BotFather
- Send
/newbot - Enter a name for your bot (e.g.,
CodeHero Alerts) - Enter a username for your bot (must end in
bot, e.g.,codehero_bot) - BotFather will give you the token - copy it (looks like
7123456789:AAHk5Jxxx...)
-
Start a Chat with Your Bot
- Click the link BotFather gave you, or search for your bot's username
- Press Start or send
/start - Important: Send one more message (e.g., "hello") - this is needed for the next step
-
Get Your Chat ID
- Open this URL in your browser (replace
<TOKEN>with your actual token):https://api.telegram.org/bot<TOKEN>/getUpdates - Look for
"chat":{"id":123456789}- the number is your Chat ID
- Open this URL in your browser (replace
-
Configure in Settings
- Go to Dashboard and click ⚙️ (Settings)
- Paste your Bot Token
- Paste your Chat ID
- Select which notifications you want to receive
- Click Test Notification to verify it works
- If you receive the test message, click Save Settings
| Event | Description |
|---|---|
| ⏳ Awaiting Input | Claude completed a task and needs your review |
| ❌ Task Failed | Something went wrong during execution |
| A ticket appears to be stuck |
You can reply directly to notifications from your phone:
Reply to Give Instructions: Simply reply to any notification with your message. The system will:
- Add your message to the ticket conversation
- Reopen the ticket if it was "awaiting input"
- Claude will start working on your new instructions
Ask Quick Questions:
Start your reply with ? to get a quick status update without reopening the ticket:
?what's the status- Get a summary?τι γίνεται- Works in any language?what went wrong- Quick error info
The system uses Claude Haiku for fast, low-cost answers.
| Your Reply | What Happens |
|---|---|
fix the login bug |
Message added, ticket reopens, Claude works |
?what's wrong |
Get summary, ticket stays as-is |
looks good, continue |
Message added, ticket reopens |
CodeHero checks for updates automatically and shows a green badge when a new version is available.
-
Check for Updates: A green "🚀 vX.Y.Z Available" badge appears in the dashboard header when an update is ready
-
Click the Badge: Opens the update modal showing:
- Current version → New version
- Release notes
- "Install Update" button
-
Install Update: Click to start the upgrade:
- Downloads the new version from GitHub
- Shows real-time console output
- Runs upgrade scripts automatically
- Restarts services
- Auto-reloads page on success
During upgrade, you'll see live output with color-coded status:
| Color | Meaning |
|---|---|
🟢 Green [OK] |
Step completed successfully |
🔵 Blue [INFO] |
Information message |
🟡 Yellow [WARN] |
Warning (non-fatal) |
🔴 Red [ERROR] |
Error occurred |
If an upgrade fails, click "🤖 Ask AI to fix the problem":
- AI analyzes the error log
- Shows the problem and explanation
- Provides fix commands with one-click execution
- Run commands individually or all at once
Example:
Problem: MySQL migration syntax error
Fix:
┌─────────────────────────────────────────┬──────┐
│ mysql -e "ALTER TABLE projects..." │ ▶ Run│
└─────────────────────────────────────────┴──────┘
[▶ Run All Commands]
cd /root
wget https://github.com/fotsakir/codehero/releases/latest/download/codehero-2.83.5.zip
unzip codehero-2.83.5.zip
cd codehero
sudo ./upgrade.shThe upgrade system is modular - each version has its own upgrade script:
upgrades/
├── 2.42.0.sh # Multimedia tools installation
├── 2.61.0.sh # Claude CLI installation
├── 2.63.0.sh # OpenLiteSpeed → Nginx migration
├── 2.65.0.sh # phpMyAdmin setup
└── _always.sh # Permission fixes (runs every time)
When upgrading (e.g., from 2.60.0 to 2.67.0):
- Detects current and target versions
- Finds all scripts between those versions
- Runs them in order: 2.61.0 → 2.63.0 → 2.65.0
- Applies database migrations
- Restarts services
Safe to run multiple times - already-applied upgrades are tracked and skipped.
- Be specific about what you want
- Include file paths when relevant
- Mention the programming language/framework
- Specify any constraints or requirements
Good Example:
Create a REST API endpoint in /home/claude/my-app/api/users.py
that handles GET /users/{id} and returns user data from the
MySQL database. Use the existing db_connection module.
Bad Example:
Make a user API
- One project per codebase
- Use descriptive project names
- Keep working directories organized
- Check the Console for real-time progress
- Review ticket output after completion
- Use History to track patterns and issues
If a ticket seems stuck:
- Check Console for errors
- Use
/stopkill switch if needed - Reopen the ticket to retry
- Check if daemon is running:
systemctl status codehero-daemon - Review daemon logs:
journalctl -u codehero-daemon -f - Verify MySQL is running:
systemctl status mysql
Ensure the claude user has:
- Read/write access to project directories
- Proper ownership of working files
- Documentation: Check
CLAUDE_OPERATIONS.mdfor technical details - Issues: Report bugs at GitHub Issues
- Updates: Check Releases for new versions
CodeHero v2.69.0





