From 5ce409f7eaef65f7d3881938a94c13defce530cd Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Fri, 24 Oct 2025 12:40:55 +0200 Subject: [PATCH 01/42] docs: add TUI documentation index page - Create docs/tui/ directory structure - Add comprehensive TUI overview and index page - Document TUI features: multi-terminal support, teams, parallel execution - Add comparison table: TUI vs CLI use cases - Include system requirements and supported terminals - Document keyboard shortcuts and commands reference - Add architecture overview and component structure - Include quick start guide and documentation navigation --- docs/tui/tui_index.md | 209 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 docs/tui/tui_index.md diff --git a/docs/tui/tui_index.md b/docs/tui/tui_index.md new file mode 100644 index 00000000..40882193 --- /dev/null +++ b/docs/tui/tui_index.md @@ -0,0 +1,209 @@ +# CAI Terminal User Interface (TUI) + +The CAI TUI provides a modern, terminal-based interface for interacting with CAI agents, enabling powerful multi-agent workflows, parallel execution, and advanced security testing capabilities. + +![CAI TUI Interface](../media/cai-tui-main.png) + +## Overview + +The TUI is built on [Textual](https://textual.textualize.io/), offering: + +- **πŸ–₯️ Multi-Terminal Support**: Work with up to 4 agents simultaneously in split-screen layouts +- **πŸ‘₯ Preconfigured Teams**: One-click deployment of specialized agent teams for security assessments +- **⚑ Parallel Execution**: Execute multiple agents in parallel with independent conversations +- **πŸ“Š Real-Time Stats**: Monitor costs, tokens, and agent performance +- **🎯 Smart Agent Selection**: Built-in agent recommendation system +- **πŸ”§ MCP Integration**: Connect to external tools via Model Context Protocol +- **πŸ’Ύ Session Management**: Save and restore conversations across sessions + +## When to Use the TUI vs CLI + +| Feature | TUI | CLI | +|---------|-----|-----| +| **Visual feedback** | βœ… Rich UI with colors and layouts | ⚠️ Basic text output | +| **Multi-agent workflows** | βœ… Visual split-screen | ❌ Sequential only | +| **Agent teams** | βœ… One-click preconfigured teams | ❌ Manual setup | +| **Real-time monitoring** | βœ… Stats sidebar | ⚠️ Limited | +| **Session management** | βœ… Visual queue and history | ⚠️ Command-based | +| **Scripting/Automation** | ❌ Interactive only | βœ… Full scripting support | +| **Resource usage** | ⚠️ Higher (UI overhead) | βœ… Minimal | + +**Use TUI for**: Interactive security testing, bug bounty hunting, team-based analysis, exploratory testing + +**Use CLI for**: Automation, scripting, CI/CD integration, headless environments + +## Quick Start + +Launch the TUI: + +```bash +cai --tui +``` + +Basic workflow: + +1. Configure your `ALIAS_API_KEY` in **Sidebar β†’ Keys** +2. Select a model (recommended: `alias1`) from the terminal header dropdown +3. Choose an agent or use `selection_agent` for recommendations +4. Type your prompt and press **Enter** + +See the [Getting Started Guide](getting-started.md) for detailed instructions. + +## System Requirements + +- **Python**: 3.9 or higher +- **Terminal**: Modern terminal with 256+ color support +- **Minimum window size**: 120x40 characters (recommended) +- **API Key**: Valid `ALIAS_API_KEY` (get one from [Alias Robotics](https://aliasrobotics.com)) + +### Supported Terminals + +- βœ… iTerm2 (macOS) +- βœ… Terminal.app (macOS) +- βœ… GNOME Terminal (Linux) +- βœ… Konsole (Linux) +- βœ… Windows Terminal (Windows) +- βœ… Alacritty (all platforms) +- ⚠️ tmux/screen (limited color support) + +## Key Features + +### πŸ–₯️ Multiple Terminals + +Work with multiple agents simultaneously in responsive layouts: + +- **1 terminal**: Full-screen mode +- **2 terminals**: Horizontal split +- **3 terminals**: 2+1 grid layout +- **4+ terminals**: 2x2 grid with scroll + +Each terminal maintains its own: +- Independent agent and model selection +- Isolated conversation history +- Separate execution context + +Learn more: [Terminals Management](terminals-management.md) + +### πŸ‘₯ Preconfigured Teams + +Access specialized agent teams from the sidebar: + +- **Team: 2 Red + 2 Bug**: Offensive testing + bug hunting +- **Team: 2 Red + 2 Blue**: Dual-perspective security analysis +- **Team: Red + Blue + Retester + Bug**: Comprehensive assessment workflow + +Learn more: [Teams and Parallel Execution](teams-and-parallel-execution.md) + +### 🎯 Smart Agent Selection + +Use the `selection_agent` to get intelligent agent recommendations based on your task: + +``` +/agent selection_agent +``` + +Or simply select it from the agent dropdown. + +Learn more: [Commands Reference](commands-reference.md) + +### πŸ“Š Sidebar Features + +The collapsible sidebar (`Ctrl+S`) provides: + +- **Teams**: One-click team deployment +- **Queue**: Visual prompt queue management +- **Stats**: Real-time session statistics and costs +- **Keys**: Manage API keys for multiple providers + +Learn more: [Sidebar Features](sidebar-features.md) + +## Documentation Structure + +### For New Users +1. [Getting Started](getting-started.md) - First steps and basic usage +2. [User Interface](user-interface.md) - Understanding the layout +3. [Keyboard Shortcuts](keyboard-shortcuts.md) - Essential shortcuts + +### For Regular Users +4. [Commands Reference](commands-reference.md) - Complete command list +5. [Terminals Management](terminals-management.md) - Working with multiple terminals +6. [Sidebar Features](sidebar-features.md) - Sidebar tabs and capabilities + +### For Advanced Users +7. [Teams and Parallel Execution](teams-and-parallel-execution.md) - Multi-agent workflows +8. [Configuration](configuration.md) - Environment variables and settings +9. [Advanced Features](advanced-features.md) - MCP, Meta Agent, and more + +### Support Resources +10. [Troubleshooting](troubleshooting.md) - Common issues and solutions +11. [FAQ](faq.md) - Frequently asked questions + +## Quick Reference + +### Essential Keyboard Shortcuts + +| Shortcut | Action | +|----------|--------| +| `Ctrl+S` | Toggle sidebar | +| `Ctrl+L` | Clear all terminals | +| `Ctrl+Q` | Exit CAI | +| `Ctrl+N` / `Ctrl+B` | Navigate terminals | +| `Ctrl+C` | Cancel current agent | +| `ESC` | Cancel all agents | + +See all shortcuts: [Keyboard Shortcuts Reference](keyboard-shortcuts.md) + +### Most Used Commands + +| Command | Description | +|---------|-------------| +| `/help` | Show help | +| `/agent list` | List all agents | +| `/agent ` | Switch agent | +| `/model ` | Change model | +| `/queue` | Show prompt queue | +| `/cost` | Show costs and tokens | +| `/save ` | Save conversation | +| `/load ` | Load conversation | + +See all commands: [Commands Reference](commands-reference.md) + +## Architecture + +``` +CAI TUI +β”œβ”€β”€ Core Components +β”‚ β”œβ”€β”€ SessionManager - Coordinates all terminals +β”‚ β”œβ”€β”€ TerminalRunner - Manages agent execution per terminal +β”‚ └── AgentExecutor - Handles parallel execution +β”œβ”€β”€ UI Components +β”‚ β”œβ”€β”€ UniversalTerminal - Individual terminal widget +β”‚ β”œβ”€β”€ StableTerminalGrid - Layout manager +β”‚ β”œβ”€β”€ Sidebar - Navigation and features +β”‚ └── InfoStatusBar - Real-time status display +└── Display System + β”œβ”€β”€ DisplayManager - Output routing + β”œβ”€β”€ StreamingDisplay - Real-time streaming + └── AgentDisplay - Agent message formatting +``` + +For technical details, see the [Architecture Overview](../cai_architecture.md). + +## Community and Support + +- **Documentation**: [https://docs.aliasrobotics.com](https://docs.aliasrobotics.com) +- **GitHub Issues**: [https://github.com/aliasrobotics/cai/issues](https://github.com/aliasrobotics/cai/issues) +- **Discord**: [Join our community](https://discord.gg/aliasrobotics) +- **Twitter**: [@aliasrobotics](https://twitter.com/aliasrobotics) + +## What's Next? + +- πŸ“– [Getting Started Guide](getting-started.md) - Learn the basics +- ⌨️ [Keyboard Shortcuts](keyboard-shortcuts.md) - Boost your productivity +- 🎯 [Commands Reference](commands-reference.md) - Master the commands +- πŸ‘₯ [Teams and Parallel Execution](teams-and-parallel-execution.md) - Advanced workflows + +--- + +*Last updated: October 2025 | CAI TUI v0.6+* + From b7f5291c1b3cd56417ccb7d92da633d2fb37945a Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Fri, 24 Oct 2025 13:04:20 +0200 Subject: [PATCH 02/42] docs: add TUI main interface screenshot - Add cai-tui-main.png screenshot to docs/media/ - Screenshot shows TUI interface for documentation --- docs/media/cai-tui-main.png | Bin 0 -> 86396 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/media/cai-tui-main.png diff --git a/docs/media/cai-tui-main.png b/docs/media/cai-tui-main.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9f9a77d0b54863be7a624c2c688d0c13b3cf62 GIT binary patch literal 86396 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

ts*lc=N7=|9=12^28aw-gQ=Z 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 Date: Fri, 24 Oct 2025 13:56:37 +0200 Subject: [PATCH 03/42] docs: add TUI getting started guide - Add comprehensive getting-started.md for TUI - Cover all 9 steps from launch to monitoring costs - Include prerequisites and system requirements - Document API key configuration process - Explain model and agent selection - Provide practical examples for first conversations - Document multi-terminal workflows - Explain team configurations - Add troubleshooting section for common issues - Include next steps and learning paths --- docs/tui/getting-started.md | 362 ++++++++++++++++++++++++++++++++++++ 1 file changed, 362 insertions(+) create mode 100644 docs/tui/getting-started.md diff --git a/docs/tui/getting-started.md b/docs/tui/getting-started.md new file mode 100644 index 00000000..5c37c66a --- /dev/null +++ b/docs/tui/getting-started.md @@ -0,0 +1,362 @@ +# Getting Started with CAI TUI + +This guide will walk you through launching the CAI TUI for the first time and performing your first security assessment. + +## Prerequisites + +Before starting, ensure you have: + +- βœ… CAI installed (see [Installation Guide](../cai_installation.md)) +- βœ… Python 3.9+ installed +- βœ… A valid `ALIAS_API_KEY` from [Alias Robotics](https://aliasrobotics.com) +- βœ… A modern terminal with 256+ color support +- βœ… Minimum terminal window size: 120x40 characters + +## Step 1: Launch the TUI + +Open your terminal and run: + +```bash +cai --tui +``` + +If your `ALIAS_API_KEY` is not configured, you'll see an authentication error. Don't worryβ€”we'll fix this in the next step. + +### Alternative: Launch with Initial Prompt + +You can start the TUI with a prompt ready to go: + +```bash +cai --tui "scan 192.168.1.1 for vulnerabilities" +``` + +### Alternative: Launch with YAML Configuration + +For advanced setups: + +```bash +cai --tui --yaml my-config.yaml +``` + +## Step 2: Configure Your API Key + +The first time you use CAI TUI, you need to configure your API key: + +1. **Open the Sidebar** + - Press `Ctrl+S` to toggle the sidebar (if not already visible) + +2. **Navigate to Keys Tab** + - Click on the **"Keys"** tab in the sidebar + - This shows all configured API keys + +3. **Add Your API Key** + - Click the **"Add New Key"** button + - A dialog will appear with two fields: + - **Key Name**: Enter `ALIAS_API_KEY` + - **Key Value**: Enter your API key (e.g., `ak_live_1234567890abcdef`) + +4. **Save the Key** + - Click the **"Save"** button + - Your key is now securely stored in `~/.cai/.env` + +### Alternative: Using Environment Variables + +You can also set your API key via environment variable: + +```bash +export ALIAS_API_KEY="your_api_key_here" +cai --tui +``` + +Or create a `.env` file in your project directory: + +```env +ALIAS_API_KEY=your_api_key_here +``` + +## Step 3: Select Your Model + +CAI supports multiple AI models. For optimal performance and cost balance, we recommend `alias1`: + +### Option 1: Using the Dropdown (Recommended) + +1. Look at the terminal header (top bar of each terminal) +2. Find the **"model"** dropdown (center-right area) +3. Click on it to see available models +4. Select **`alias1`** + +### Option 2: Using a Command + +Type in the input field at the bottom: + +``` +/model alias1 +``` + +Press **Enter**. + +### Available Models + +| Model | Provider | Best For | Cost | +|-------|----------|----------|------| +| `alias1` | Alias Robotics | **Recommended** - Balanced | Medium | +| `gpt-4o` | OpenAI | Complex reasoning | High | +| `claude-3-5-sonnet-20241022` | Anthropic | Long contexts | High | + +> **πŸ’‘ Tip**: You can change models at any time without losing your conversation history. + +## Step 4: Choose Your Agent + +CAI comes with specialized agents for different security tasks. Here's how to choose: + +### Option 1: Use the Agent Recommendation System + +The easiest way to start: + +1. Click the **agent** dropdown in the terminal header +2. Select **`selection_agent`** +3. Type your task description: `"I need to test a web application for SQL injection"` +4. The agent will recommend the best agent for your task + +Alternatively, use the command: + +``` +/agent selection_agent +``` + +Then describe your task. + +### Option 2: Choose Directly from the Dropdown + +If you know which agent you need: + +1. Click the **agent** dropdown +2. Browse available agents (scroll if needed) +3. Select your desired agent (e.g., `redteam_agent`, `bug_bounter_agent`) + +### Option 3: List All Agents + +To see all available agents with descriptions: + +``` +/agent list +``` + +### Common Agent Types + +| Agent | Purpose | When to Use | +|-------|---------|-------------| +| `redteam_agent` | Offensive security testing | Default for penetration testing | +| `blueteam_agent` | Defensive security analysis | Security posture assessment | +| `bug_bounter_agent` | Bug bounty hunting | Finding high-value vulnerabilities | +| `retester_agent` | Vulnerability retesting | Confirming fixes | +| `selection_agent` | Agent recommendation | **When unsure which agent to use** | + +> **πŸ’‘ Pro Tip**: Start with `selection_agent` if you're new to CAIβ€”it will guide you to the right agent for your task. + +## Step 5: Start Your First Conversation + +Now you're ready to interact with CAI! + +### Example 1: Basic Reconnaissance + +In the input field at the bottom (marked with `CAI>`), type: + +``` +Scan 192.168.1.1 for open ports and services +``` + +Press **Enter**. + +The agent will: +- Process your request +- Use appropriate tools (nmap, etc.) +- Display results in the terminal output area + +### Example 2: Web Application Testing + +Prompt example: + +``` +Test https://example.com for common web vulnerabilities +``` + +Press **Enter**. + +The agent will: +- Process your request +- Use appropriate tools (nmap, etc.) +- Display results in the terminal output area + +### Example 3: Network Analysis + +Prompt example: + +``` +Analyze the network traffic from this pcap file: capture.pcap +``` + +### Understanding the Output + +As the agent works, you'll see: + +1. **Tool Execution**: Messages showing which tools are being launched +2. **Streaming Output**: Real-time results from tools +3. **Agent Reasoning**: The agent's thought process (if `CAI_DEBUG=1`) +4. **Final Response**: Summary and recommendations + +### Queuing Prompts + +If the agent is busy, you can send another promptβ€”it will be **automatically queued**: + +- View the queue: Press `Ctrl+Shift+Q` or use `/queue` +- The next prompt will execute when the current one finishes + +## Step 6: Working with Multiple Terminals + +One of the TUI's most powerful features is multi-terminal support. + +### Adding a New Terminal + +Click the **"Add +"** button in the top of the screen + +Each new terminal: +- Starts with `alias1` model and `redteam_agent` +- Has an independent conversation history +- Can run a different agent and model + +### Navigating Between Terminals + +- **Next terminal**: `Ctrl+N` +- **Previous terminal**: `Ctrl+B` +- **Click directly** on any terminal to focus it + +### Example Workflow: Dual-Perspective Analysis + +1. **Terminal 1**: Keep `redteam_agent` for offensive testing +2. **Terminal 2**: Add a new terminal, switch to `blueteam_agent` +3. Send the same target to both: + - T1: Offensive analysis + - T2: Defensive recommendations +4. Compare results side-by-side + +## Step 7: Using Preconfigured Teams + +For common multi-agent workflows, use **Teams**: + +1. Open the sidebar (`Ctrl+S`) +2. Click the **"Teams"** tab +3. Select a team (e.g., **"#1: 2 red + 2 bug"**) + +This will: +- Automatically open 4 terminals (or reuse existing ones) +- Assign agents according to the team configuration +- Ready to process your prompt in parallel + +**Popular Teams**: +- **2 Red + 2 Bug**: Comprehensive penetration testing + bug hunting +- **2 Red + 2 Blue**: Offensive + defensive analysis +- **Red + Blue + Retester + Bug**: Full security assessment lifecycle + +Learn more: [Teams and Parallel Execution](teams-and-parallel-execution.md) + +## Step 8: Saving Your Work + +To save your conversation for later: + +``` +/save my-assessment.json +``` + +Or in Markdown format: + +``` +/save my-assessment.md +``` + +Files are saved in your current working directory. + +### Loading a Saved Session + +``` +/load my-assessment.json +``` + +This restores the conversation history for the current terminal. + +## Step 9: Monitoring Costs + +CAI tracks your API usage and costs in real-time. + +### View Costs for Current Agent + +``` +/cost +``` + +This shows: +- Total tokens used (input + output) +- Estimated cost in USD +- Breakdown by interaction + +### Check Stats in Sidebar + +Open the sidebar (`Ctrl+S`) and go to **"Stats"** tab to see: +- Session duration +- Total agents used +- Total cost across all terminals + +## Common First-Time Issues + +### Issue: "ALIAS_API_KEY is invalid or not set" + +**Solution**: Follow Step 2 above to configure your API key properly. + +### Issue: Dropdown menus are too narrow + +**Solution**: This is expected behavior in 3+ terminal layouts. The overlay that appears when you click is fully readable. + +### Issue: Agent is not responding + +**Solution**: +- Press `Ctrl+C` to cancel the current agent +- Check your internet connection +- Verify your API key is valid +- Try a different model: `/model alias0` + +### Issue: Terminal output is cluttered + +**Solution**: +- Clear the terminal: `Ctrl+L` or `/clear` +- Reduce debug output: Set `CAI_DEBUG=0` before launching +- Use `/flush` to clear conversation history + +### Issue: I can't see the full interface + +**Solution**: +- Resize your terminal window to at least 120x40 characters +- Try full-screen mode: `F11` (on most terminals) +- Zoom out: `Ctrl+-` (on most terminals) + +## Next Steps + +Congratulations! You've completed the basics of CAI TUI. Here's what to explore next: + +### Learn More Commands +- πŸ“– [Commands Reference](commands-reference.md) - Master all available commands +- ⌨️ [Keyboard Shortcuts](keyboard-shortcuts.md) - Speed up your workflow + +### Explore Advanced Features +- πŸ‘₯ [Teams and Parallel Execution](teams-and-parallel-execution.md) - Multi-agent workflows +- πŸ”§ [MCP Integration](advanced-features.md#mcp-integration) - Connect external tools +- πŸ’Ύ [Session Management](advanced-features.md#session-management) - Advanced save/load + +### Customize Your Setup +- βš™οΈ [Configuration](configuration.md) - Environment variables and settings +- 🎨 [Themes](user-interface.md#themes) - Change color schemes + +### Get Help +- ❓ [FAQ](faq.md) - Common questions +- πŸ”§ [Troubleshooting](troubleshooting.md) - Solve issues +- πŸ’¬ [Community Discord](https://discord.gg/aliasrobotics) - Ask questions + From 29213ed3a8bdde96e977d9cd32dd0630bad72fc4 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Fri, 24 Oct 2025 14:06:44 +0200 Subject: [PATCH 04/42] docs: improve security and update model information in getting-started - Replace private IP 192.168.1.1 with documentation IP 198.51.100.50 (RFC 5737) - Add GPT-5 model to available models table - Add Claude 4-5 model to available models table - Update model descriptions for clarity - Ensure example IPs are safe for public documentation --- docs/tui/getting-started.md | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/docs/tui/getting-started.md b/docs/tui/getting-started.md index 5c37c66a..2609abc2 100644 --- a/docs/tui/getting-started.md +++ b/docs/tui/getting-started.md @@ -9,8 +9,7 @@ Before starting, ensure you have: - βœ… CAI installed (see [Installation Guide](../cai_installation.md)) - βœ… Python 3.9+ installed - βœ… A valid `ALIAS_API_KEY` from [Alias Robotics](https://aliasrobotics.com) -- βœ… A modern terminal with 256+ color support -- βœ… Minimum terminal window size: 120x40 characters + ## Step 1: Launch the TUI @@ -27,7 +26,7 @@ If your `ALIAS_API_KEY` is not configured, you'll see an authentication error. D You can start the TUI with a prompt ready to go: ```bash -cai --tui "scan 192.168.1.1 for vulnerabilities" +cai --tui "scan 198.51.100.50 for vulnerabilities" ``` ### Alternative: Launch with YAML Configuration @@ -99,9 +98,11 @@ Press **Enter**. | Model | Provider | Best For | Cost | |-------|----------|----------|------| -| `alias1` | Alias Robotics | **Recommended** - Balanced | Medium | -| `gpt-4o` | OpenAI | Complex reasoning | High | -| `claude-3-5-sonnet-20241022` | Anthropic | Long contexts | High | +| `alias1` | Alias Robotics | **Recommended** - Balanced performance | Medium | +| `gpt-5` | OpenAI | Latest reasoning and code generation | Very High | +| `gpt-4o` | OpenAI | Complex reasoning and multi-modal | High | +| `claude-4-5` | Anthropic | Advanced reasoning and long contexts | Very High | +| `claude-3-5-sonnet-20241022` | Anthropic | Fast responses with good quality | High | > **πŸ’‘ Tip**: You can change models at any time without losing your conversation history. @@ -163,7 +164,7 @@ Now you're ready to interact with CAI! In the input field at the bottom (marked with `CAI>`), type: ``` -Scan 192.168.1.1 for open ports and services +Scan 198.51.100.50 for open ports and services ``` Press **Enter**. @@ -308,21 +309,12 @@ Open the sidebar (`Ctrl+S`) and go to **"Stats"** tab to see: ## Common First-Time Issues -### Issue: "ALIAS_API_KEY is invalid or not set" - -**Solution**: Follow Step 2 above to configure your API key properly. - -### Issue: Dropdown menus are too narrow - -**Solution**: This is expected behavior in 3+ terminal layouts. The overlay that appears when you click is fully readable. - ### Issue: Agent is not responding **Solution**: - Press `Ctrl+C` to cancel the current agent - Check your internet connection - Verify your API key is valid -- Try a different model: `/model alias0` ### Issue: Terminal output is cluttered From 47e73c1985a397e334b0d9a5254008a683befee3 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Fri, 24 Oct 2025 14:09:42 +0200 Subject: [PATCH 05/42] docs: minimum change --- docs/tui/getting-started.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/tui/getting-started.md b/docs/tui/getting-started.md index 2609abc2..72a6a73f 100644 --- a/docs/tui/getting-started.md +++ b/docs/tui/getting-started.md @@ -345,7 +345,6 @@ Congratulations! You've completed the basics of CAI TUI. Here's what to explore ### Customize Your Setup - βš™οΈ [Configuration](configuration.md) - Environment variables and settings -- 🎨 [Themes](user-interface.md#themes) - Change color schemes ### Get Help - ❓ [FAQ](faq.md) - Common questions From 2e8d5dabc2e18e17d4b6c7516df0833ee0e92d2c Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Fri, 24 Oct 2025 14:12:46 +0200 Subject: [PATCH 06/42] docs: rename getting-started.md to getting_started.md for consistency - Rename docs/tui/getting-started.md to getting_started.md (underscore format) - Update all references in tui_index.md (3 occurrences) - Maintain consistency with other markdown files naming convention --- docs/tui/{getting-started.md => getting_started.md} | 0 docs/tui/tui_index.md | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename docs/tui/{getting-started.md => getting_started.md} (100%) diff --git a/docs/tui/getting-started.md b/docs/tui/getting_started.md similarity index 100% rename from docs/tui/getting-started.md rename to docs/tui/getting_started.md diff --git a/docs/tui/tui_index.md b/docs/tui/tui_index.md index 40882193..a652fa45 100644 --- a/docs/tui/tui_index.md +++ b/docs/tui/tui_index.md @@ -47,7 +47,7 @@ Basic workflow: 3. Choose an agent or use `selection_agent` for recommendations 4. Type your prompt and press **Enter** -See the [Getting Started Guide](getting-started.md) for detailed instructions. +See the [Getting Started Guide](getting_started.md) for detailed instructions. ## System Requirements @@ -120,7 +120,7 @@ Learn more: [Sidebar Features](sidebar-features.md) ## Documentation Structure ### For New Users -1. [Getting Started](getting-started.md) - First steps and basic usage +1. [Getting Started](getting_started.md) - First steps and basic usage 2. [User Interface](user-interface.md) - Understanding the layout 3. [Keyboard Shortcuts](keyboard-shortcuts.md) - Essential shortcuts @@ -198,7 +198,7 @@ For technical details, see the [Architecture Overview](../cai_architecture.md). ## What's Next? -- πŸ“– [Getting Started Guide](getting-started.md) - Learn the basics +- πŸ“– [Getting Started Guide](getting_started.md) - Learn the basics - ⌨️ [Keyboard Shortcuts](keyboard-shortcuts.md) - Boost your productivity - 🎯 [Commands Reference](commands-reference.md) - Master the commands - πŸ‘₯ [Teams and Parallel Execution](teams-and-parallel-execution.md) - Advanced workflows From b98995e9b6115dce120eaded22152901b604dd92 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Fri, 24 Oct 2025 14:17:42 +0200 Subject: [PATCH 07/42] docs: simplify TUI launch section in getting_started - Remove alternative launch methods for cleaner first steps - Remove 'Launch with Initial Prompt' section - Remove 'Launch with YAML Configuration' section - Focus on basic launch command for new users --- docs/tui/getting_started.md | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/docs/tui/getting_started.md b/docs/tui/getting_started.md index 72a6a73f..c0658fd9 100644 --- a/docs/tui/getting_started.md +++ b/docs/tui/getting_started.md @@ -21,21 +21,6 @@ cai --tui If your `ALIAS_API_KEY` is not configured, you'll see an authentication error. Don't worryβ€”we'll fix this in the next step. -### Alternative: Launch with Initial Prompt - -You can start the TUI with a prompt ready to go: - -```bash -cai --tui "scan 198.51.100.50 for vulnerabilities" -``` - -### Alternative: Launch with YAML Configuration - -For advanced setups: - -```bash -cai --tui --yaml my-config.yaml -``` ## Step 2: Configure Your API Key From 456bee795f0d3a103b8df6fd638cd9690d2dd045 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Fri, 24 Oct 2025 14:38:00 +0200 Subject: [PATCH 08/42] docs: prepare TUI docs for PR by managing broken links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace broken documentation links with 🚧 indicators - Add explanatory notes about documentation in development - Convert inline links to plain text references - Keep existing links (getting_started.md, cai_installation.md, cai_architecture.md) - Maintain documentation structure for future expansion --- docs/tui/getting_started.md | 20 +++++++++-------- docs/tui/tui_index.md | 44 +++++++++++++++++++------------------ 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/docs/tui/getting_started.md b/docs/tui/getting_started.md index c0658fd9..a816df02 100644 --- a/docs/tui/getting_started.md +++ b/docs/tui/getting_started.md @@ -244,7 +244,7 @@ This will: - **2 Red + 2 Blue**: Offensive + defensive analysis - **Red + Blue + Retester + Bug**: Full security assessment lifecycle -Learn more: [Teams and Parallel Execution](teams-and-parallel-execution.md) +Learn more about Teams and Parallel Execution in the full TUI documentation. ## Step 8: Saving Your Work @@ -319,20 +319,22 @@ Open the sidebar (`Ctrl+S`) and go to **"Stats"** tab to see: Congratulations! You've completed the basics of CAI TUI. Here's what to explore next: +> **Note**: Additional TUI documentation is currently being developed. Topics marked with 🚧 will be available soon. + ### Learn More Commands -- πŸ“– [Commands Reference](commands-reference.md) - Master all available commands -- ⌨️ [Keyboard Shortcuts](keyboard-shortcuts.md) - Speed up your workflow +- πŸ“– Commands Reference 🚧 - Master all available commands +- ⌨️ Keyboard Shortcuts 🚧 - Speed up your workflow ### Explore Advanced Features -- πŸ‘₯ [Teams and Parallel Execution](teams-and-parallel-execution.md) - Multi-agent workflows -- πŸ”§ [MCP Integration](advanced-features.md#mcp-integration) - Connect external tools -- πŸ’Ύ [Session Management](advanced-features.md#session-management) - Advanced save/load +- πŸ‘₯ Teams and Parallel Execution 🚧 - Multi-agent workflows +- πŸ”§ MCP Integration 🚧 - Connect external tools +- πŸ’Ύ Session Management 🚧 - Advanced save/load ### Customize Your Setup -- βš™οΈ [Configuration](configuration.md) - Environment variables and settings +- βš™οΈ Configuration 🚧 - Environment variables and settings ### Get Help -- ❓ [FAQ](faq.md) - Common questions -- πŸ”§ [Troubleshooting](troubleshooting.md) - Solve issues +- ❓ FAQ 🚧 - Common questions +- πŸ”§ Troubleshooting 🚧 - Solve issues - πŸ’¬ [Community Discord](https://discord.gg/aliasrobotics) - Ask questions diff --git a/docs/tui/tui_index.md b/docs/tui/tui_index.md index a652fa45..2bc169a9 100644 --- a/docs/tui/tui_index.md +++ b/docs/tui/tui_index.md @@ -82,7 +82,7 @@ Each terminal maintains its own: - Isolated conversation history - Separate execution context -Learn more: [Terminals Management](terminals-management.md) +Learn more about terminal management in the full TUI documentation. ### πŸ‘₯ Preconfigured Teams @@ -92,7 +92,7 @@ Access specialized agent teams from the sidebar: - **Team: 2 Red + 2 Blue**: Dual-perspective security analysis - **Team: Red + Blue + Retester + Bug**: Comprehensive assessment workflow -Learn more: [Teams and Parallel Execution](teams-and-parallel-execution.md) +Learn more about Teams and Parallel Execution in the full TUI documentation. ### 🎯 Smart Agent Selection @@ -104,7 +104,7 @@ Use the `selection_agent` to get intelligent agent recommendations based on your Or simply select it from the agent dropdown. -Learn more: [Commands Reference](commands-reference.md) +Learn more about commands in the full TUI documentation. ### πŸ“Š Sidebar Features @@ -115,28 +115,30 @@ The collapsible sidebar (`Ctrl+S`) provides: - **Stats**: Real-time session statistics and costs - **Keys**: Manage API keys for multiple providers -Learn more: [Sidebar Features](sidebar-features.md) +Learn more about sidebar features in the full TUI documentation. ## Documentation Structure +> **Note**: TUI documentation is being actively developed. Topics marked with 🚧 are coming soon. + ### For New Users -1. [Getting Started](getting_started.md) - First steps and basic usage -2. [User Interface](user-interface.md) - Understanding the layout -3. [Keyboard Shortcuts](keyboard-shortcuts.md) - Essential shortcuts +1. [Getting Started](getting_started.md) βœ… - First steps and basic usage +2. User Interface 🚧 - Understanding the layout +3. Keyboard Shortcuts 🚧 - Essential shortcuts ### For Regular Users -4. [Commands Reference](commands-reference.md) - Complete command list -5. [Terminals Management](terminals-management.md) - Working with multiple terminals -6. [Sidebar Features](sidebar-features.md) - Sidebar tabs and capabilities +4. Commands Reference 🚧 - Complete command list +5. Terminals Management 🚧 - Working with multiple terminals +6. Sidebar Features 🚧 - Sidebar tabs and capabilities ### For Advanced Users -7. [Teams and Parallel Execution](teams-and-parallel-execution.md) - Multi-agent workflows -8. [Configuration](configuration.md) - Environment variables and settings -9. [Advanced Features](advanced-features.md) - MCP, Meta Agent, and more +7. Teams and Parallel Execution 🚧 - Multi-agent workflows +8. Configuration 🚧 - Environment variables and settings +9. Advanced Features 🚧 - MCP, Meta Agent, and more ### Support Resources -10. [Troubleshooting](troubleshooting.md) - Common issues and solutions -11. [FAQ](faq.md) - Frequently asked questions +10. Troubleshooting 🚧 - Common issues and solutions +11. FAQ 🚧 - Frequently asked questions ## Quick Reference @@ -151,7 +153,7 @@ Learn more: [Sidebar Features](sidebar-features.md) | `Ctrl+C` | Cancel current agent | | `ESC` | Cancel all agents | -See all shortcuts: [Keyboard Shortcuts Reference](keyboard-shortcuts.md) +See complete keyboard shortcuts reference in the full TUI documentation (coming soon). ### Most Used Commands @@ -166,7 +168,7 @@ See all shortcuts: [Keyboard Shortcuts Reference](keyboard-shortcuts.md) | `/save ` | Save conversation | | `/load ` | Load conversation | -See all commands: [Commands Reference](commands-reference.md) +See complete commands reference in the full TUI documentation (coming soon). ## Architecture @@ -198,10 +200,10 @@ For technical details, see the [Architecture Overview](../cai_architecture.md). ## What's Next? -- πŸ“– [Getting Started Guide](getting_started.md) - Learn the basics -- ⌨️ [Keyboard Shortcuts](keyboard-shortcuts.md) - Boost your productivity -- 🎯 [Commands Reference](commands-reference.md) - Master the commands -- πŸ‘₯ [Teams and Parallel Execution](teams-and-parallel-execution.md) - Advanced workflows +- πŸ“– [Getting Started Guide](getting_started.md) βœ… - Learn the basics +- ⌨️ Keyboard Shortcuts 🚧 - Boost your productivity +- 🎯 Commands Reference 🚧 - Master the commands +- πŸ‘₯ Teams and Parallel Execution 🚧 - Advanced workflows --- From 5b25cd6cf80452d5190071298ac4dbfd572df96d Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 11:56:03 +0100 Subject: [PATCH 09/42] docs: add CAI-Pro exclusive banner to TUI documentation --- docs/tui/getting_started.md | 5 +++++ docs/tui/tui_index.md | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/docs/tui/getting_started.md b/docs/tui/getting_started.md index a816df02..b102d51a 100644 --- a/docs/tui/getting_started.md +++ b/docs/tui/getting_started.md @@ -1,5 +1,10 @@ # Getting Started with CAI TUI +> **⚑ CAI-Pro Exclusive Feature** +> The Terminal User Interface (TUI) is available exclusively in **CAI-Pro**. To access this feature and unlock advanced multi-agent workflows, visit [Alias Robotics](https://aliasrobotics.com) for more information. + +--- + This guide will walk you through launching the CAI TUI for the first time and performing your first security assessment. ## Prerequisites diff --git a/docs/tui/tui_index.md b/docs/tui/tui_index.md index 2bc169a9..ccaa0691 100644 --- a/docs/tui/tui_index.md +++ b/docs/tui/tui_index.md @@ -1,5 +1,10 @@ # CAI Terminal User Interface (TUI) +> **⚑ CAI-Pro Exclusive Feature** +> The Terminal User Interface (TUI) is available exclusively in **CAI-Pro**. To access this feature and unlock advanced multi-agent workflows, visit [Alias Robotics](https://aliasrobotics.com) for more information. + +--- + The CAI TUI provides a modern, terminal-based interface for interacting with CAI agents, enabling powerful multi-agent workflows, parallel execution, and advanced security testing capabilities. ![CAI TUI Interface](../media/cai-tui-main.png) From 16983f2d4497bde13f9dbcdac9d97bcbd5586c5d Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 12:47:02 +0100 Subject: [PATCH 10/42] docs: add comprehensive TUI user interface documentation --- docs/tui/user-interface.md | 420 +++++++++++++++++++++++++++++++++++++ 1 file changed, 420 insertions(+) create mode 100644 docs/tui/user-interface.md diff --git a/docs/tui/user-interface.md b/docs/tui/user-interface.md new file mode 100644 index 00000000..799db4a1 --- /dev/null +++ b/docs/tui/user-interface.md @@ -0,0 +1,420 @@ +# CAI TUI User Interface + +> **⚑ CAI-Pro Exclusive Feature** +> The Terminal User Interface (TUI) is available exclusively in **CAI-Pro**. To access this feature and unlock advanced multi-agent workflows, visit [Alias Robotics](https://aliasrobotics.com) for more information. + +--- + +This guide provides a detailed overview of the CAI TUI interface components and their functions. + +## Interface Overview + +The CAI TUI interface is divided into several key areas: + + +--- + +## Top Bar + +The top bar provides global controls and information: + +- **[≑] Menu Button**: Opens the command palette for quick access to all TUI commands +- **Terminal CTR Help**: Shows current help context and available shortcuts +- **[Β±] Maximize**: Toggles fullscreen mode for the active terminal +- **[Γ—] Close**: Exits the TUI application + +### Command Palette + +Press `Ctrl+P` or click the menu button to open the command palette, which provides: + +- Quick command search and execution +- Fuzzy matching for command names +- Keyboard navigation (arrow keys, Enter) +- Recent commands history +- Command descriptions and shortcuts + +Available commands include: +- `clear` - Clear terminal output +- `save` - Save current session +- `load` - Load previous session +- `export` - Export conversation +- `reset` - Reset agent context +- `help` - Show help information + +--- + +## Sidebar + +The sidebar contains four main tabs accessible via mouse click or keyboard shortcuts (`Alt+1` through `Alt+4`): + +### 1. Teams Tab (`Alt+1`) + +The Teams tab displays preconfigured agent teams for parallel testing scenarios: + +**Team Buttons**: +- Compact labels show team composition (e.g., `#1: 2 red + 2 bug`) +- Click to apply team configuration to all terminals +- Hover to see detailed tooltip with full agent names and terminal assignments + +**Tooltip Information**: +- Team number and composition (e.g., "#2: 1 redteam_agent + 3 bug_bounter_agent") +- Terminal-by-terminal breakdown: + - T1: redteam_agent + - T2: bug_bounter_agent + - T3: bug_bounter_agent + - T4: bug_bounter_agent + +**Available Teams**: +- **Team 1**: 2 Red Team + 2 Bug Bounty agents +- **Team 2**: 1 Red Team + 3 Bug Bounty agents +- **Team 3**: 2 Red Team + 2 Blue Team agents +- **Team 4**: 2 Blue Team + 2 Bug Bounty agents + +When you select a team: +- All terminals are reconfigured automatically +- Agent dropdowns update to reflect new assignments +- Terminal headers show the assigned agent +- Previous conversations are preserved + +### 2. Queue Tab (`Alt+2`) + +The Queue tab manages prompt queuing and broadcast execution: + +**Queue Management**: +- View all queued prompts +- Delete individual prompts +- Clear entire queue +- Execute queue sequentially + +**Broadcast Mode**: +- Toggle broadcast mode on/off +- Send prompts to all terminals simultaneously +- Queue prompts for batch execution +- Monitor execution progress + +**Queue Display**: +``` +[1] Scan target.com for XSS vulnerabilities +[2] Check for SQL injection in login form +[3] Test API endpoints for authorization bypass +``` + + +### 3. Stats Tab (`Alt+3`) + +The Stats tab provides real-time cost tracking and usage statistics: + +**Cost Information**: +- Total session cost (all terminals combined) +- Per-terminal cost breakdown +- Token usage (input/output) +- Model pricing details +- Cost per interaction + +**Usage Metrics**: +- Number of interactions +- Total tokens consumed +- Average cost per turn +- Time elapsed +- Active terminals + +**Example Display**: + +``` +Total Cost: $0.47 +═══════════════════════ +Terminal 1: $0.15 (3 interactions) +Terminal 2: $0.12 (2 interactions) +Terminal 3: $0.10 (2 interactions) +Terminal 4: $0.10 (2 interactions) +Model: alias1 ($0.015/1K in, $0.060/1K out) +Tokens: 1,240 input, 6,850 output +``` + + +**Cost Limits**: +- Set via `CAI_PRICE_LIMIT` environment variable +- Warning when approaching limit +- Automatic pause when limit exceeded + +### 4. Keys Tab (`Alt+4`) + +The Keys tab displays and manages API key status: + +**Key Information**: +- API key provider (OpenAI, Anthropic, etc.) +- Key validity status +- Last validation time +- Rate limit information + +**Key Management**: +- View masked API keys +- Test key validity +- Update keys without restarting +- Environment variable status + +**Example Display**: + + +--- + +## Terminal Components + +Each terminal window consists of several components: + +### Terminal Header + +The header bar above each terminal shows: + +- **Terminal Number**: T1, T2, T3, or T4 +- **Agent Name**: Currently selected agent (e.g., `redteam_agent`) +- **Model Selector**: Dropdown to change LLM model (e.g., `alias1`, `gpt-4o`) +- **Container Icon**: Indicates if agent is running in container mode + +**Agent Dropdown**: +- Click to open agent selection menu +- Shows all available agents +- Hover for agent description +- Keyboard navigation supported + +**Model Dropdown**: +- Click to open model selection menu +- Shows configured models (alias0, alias1, gpt-4o, etc.) +- Displays model aliases and actual names +- Updates immediately upon selection + +### Terminal Output Area + +The main terminal display area shows: + +**Agent Responses**: +- Formatted text with Rich markup support +- Syntax-highlighted code blocks +- Tables and structured data +- Progress indicators for long operations + +**Tool Calls**: +- Tool name and parameters +- Execution status (running, success, error) +- Tool output and results +- Collapsed/expanded view for long outputs + +**System Messages**: +- Agent initialization +- Context resets +- Error messages +- Cost warnings + +**Streaming Display**: +- Real-time token streaming for LLM responses +- Progressive rendering of tool outputs +- Live progress indicators +- Smooth scrolling + +**Example Output**: + + + + +### Terminal States + +Terminals can be in different visual states: + +**Active State**: +- Highlighted border (accent color) +- Ready to receive input +- Cursor visible in input area +- Responds to keyboard shortcuts + +**Inactive State**: +- Dimmed border +- Background operations continue +- Click to activate +- Scrollable content + +**Busy State**: +- Spinner or progress indicator +- "Working..." message +- Cannot send new prompts +- Cancel option available (`Ctrl+C`) + +**Error State**: +- Red border or error indicator +- Error message displayed +- Retry option available +- Can clear and continue + +--- + +## Terminal Layouts + +The TUI supports multiple layout configurations for parallel agent execution: + +### Single Terminal Layout + +Default view showing one terminal at full width: + + + + + + +**Use Cases**: +- Single-agent workflows +- Detailed analysis requiring full screen +- Learning and experimentation + +**Activation**: Automatically displayed when only one terminal is needed + +### Split (Two Terminal) Layout + +Side-by-side view for two terminals: + + + +**Use Cases**: +- Comparing two agent approaches +- Red team vs. Blue team parallel execution +- Different model comparison + +**Activation**: Triggered when using 2 terminals or Team 3/4 + +### Triple Terminal Layout + +Three terminals with one full-width top terminal: + + + + +**Use Cases**: +- Full team operations (Teams 1-4) +- Maximum parallel execution +- Comprehensive testing scenarios +- Multi-perspective analysis + +**Activation**: Default for preconfigured teams (Team 1, 2, 3, 4) + +### Scrollable Layout + +For more than 4 terminals (experimental): + + + +**Use Cases**: +- Large-scale testing +- Custom configurations +- Advanced workflows + +**Activation**: Manual configuration via startup YAML + +--- + +## Status Bar + +The bottom status bar displays global information: + +**Left Section**: +- **Agent**: Currently active agent name +- **Model**: Currently active model +- **Cost**: Session total cost + +**Center Section**: +- **Tokens**: Total tokens used (input/output) +- **Time**: Session duration +- **Interactions**: Number of completed turns + +**Right Section**: +- **Status**: Connection status, errors, warnings +- **Mode**: Current mode (broadcast, queue, normal) +- **Shortcuts**: Context-sensitive keyboard hints + +**Example**: + +## Input Area + +The input area at the bottom provides prompt entry and management: + +### Prompt Input + +**Features**: +- Multi-line input support (grows with content) +- Syntax highlighting for code snippets +- Placeholder text with hints +- Character counter for long prompts +- Auto-scrolling for long text + +**Keyboard Shortcuts**: +- `Enter`: Submit prompt (single-line mode) +- `Shift+Enter`: New line (multi-line mode) +- `Ctrl+Enter`: Submit multi-line prompt +- `Ctrl+U`: Clear input +- `Up/Down`: Navigate command history + +### Autocompletion + +The TUI provides intelligent autocompletion for: + +**Commands**: +- `/clear` - Clear terminal +- `/save` - Save session +- `/load` - Load session +- `/help` - Show help +- `/agent` - Switch agent +- `/model` - Switch model + +**Agent Names**: +- Type `@` to trigger agent name completion +- Fuzzy matching supported +- Shows agent descriptions + +**File Paths**: +- Type `/path/` to trigger path completion +- Shows recent files and directories +- Supports tab completion + +**Example**: + + +--- + +## Responsive Design + +The TUI adapts to different terminal sizes: + +### Minimum Requirements +- **Width**: 80 columns minimum (120+ recommended) +- **Height**: 24 rows minimum (40+ recommended) + +### Adaptive Behaviors + +**Small Terminals (80Γ—24)**: +- Sidebar collapses to icons only +- Single terminal view prioritized +- Compact status bar +- Abbreviated labels + +**Medium Terminals (120Γ—40)**: +- Full sidebar visible +- Split/Triple layouts available +- Standard spacing +- Full labels + +**Large Terminals (160Γ—50+)**: +- Quad layout comfortable +- Additional information displayed +- More breathing room +- Enhanced tooltips + +### Dynamic Adjustments + +The TUI automatically: +- Wraps long lines in terminal output +- Truncates button labels to fit width +- Adjusts table column widths +- Scales terminal grid based on available space +- Hides non-essential UI elements when space is limited + +--- + +*Last updated: October 2025 | CAI TUI v0.6+* + From 860447b9c7751c505c21fd52528ac24942e6bd6f Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 15:28:31 +0100 Subject: [PATCH 11/42] docs: improve TUI user-interface with enhanced topbar descriptions, layout screenshots, and reorganized command palette --- docs/media/CAI-1terminal.png | Bin 0 -> 69927 bytes docs/media/CAI-2terminals.png | Bin 0 -> 77069 bytes docs/media/CAI-3terminals.png | Bin 0 -> 89986 bytes docs/tui/user-interface.md | 114 +++++++++++++--------------------- 4 files changed, 44 insertions(+), 70 deletions(-) create mode 100644 docs/media/CAI-1terminal.png create mode 100644 docs/media/CAI-2terminals.png create mode 100644 docs/media/CAI-3terminals.png diff --git a/docs/media/CAI-1terminal.png b/docs/media/CAI-1terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..abc98ffc8349b0d04a41c9ecf9a782be4b322067 GIT binary patch literal 69927 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
0MqeU)LjR?YGKS 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
kH+KpY;W#MEj8wuV@NrII~qTF+dUsxOHAC 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 RiC^;#be}vbeP|c@zW|sa_ay)T literal 0 HcmV?d00001 diff --git a/docs/tui/user-interface.md b/docs/tui/user-interface.md index 799db4a1..2884f02d 100644 --- a/docs/tui/user-interface.md +++ b/docs/tui/user-interface.md @@ -18,36 +18,25 @@ The CAI TUI interface is divided into several key areas: The top bar provides global controls and information: -- **[≑] Menu Button**: Opens the command palette for quick access to all TUI commands -- **Terminal CTR Help**: Shows current help context and available shortcuts -- **[Β±] Maximize**: Toggles fullscreen mode for the active terminal -- **[Γ—] Close**: Exits the TUI application +- **[≑] Sidebar toggle**: Toggles the visibility of the sidebar containing Teams, Queue, Stats, and Keys tabs. Press `Ctrl+S` or click this icon to show/hide the sidebar and maximize terminal space. -### Command Palette +- **Terminal**: Main CAI interface label indicating the active application view. -Press `Ctrl+P` or click the menu button to open the command palette, which provides: +- **Add+ button**: Creates and adds a new terminal to the current session. Click to spawn an additional terminal window (up to 4 terminals supported) for parallel agent execution. -- Quick command search and execution -- Fuzzy matching for command names -- Keyboard navigation (arrow keys, Enter) -- Recent commands history -- Command descriptions and shortcuts +- **Graph**: Opens the session statistics and cost monitoring dashboard, providing real-time insights into token usage, API costs, and performance metrics across all active terminals. -Available commands include: -- `clear` - Clear terminal output -- `save` - Save current session -- `load` - Load previous session -- `export` - Export conversation -- `reset` - Reset agent context -- `help` - Show help information +- **Help**: Launches the comprehensive user guide with detailed documentation, keyboard shortcuts reference, and troubleshooting resources. Quick access to all TUI documentation. + +- **[Γ—] Close**: Exits the TUI application safely. Prompts to save unsaved sessions before closing. --- ## Sidebar -The sidebar contains four main tabs accessible via mouse click or keyboard shortcuts (`Alt+1` through `Alt+4`): +The sidebar contains four main tabs accessible via mouse click or keyboard shortcuts: -### 1. Teams Tab (`Alt+1`) +### 1. Teams Tab The Teams tab displays preconfigured agent teams for parallel testing scenarios: @@ -76,7 +65,7 @@ When you select a team: - Terminal headers show the assigned agent - Previous conversations are preserved -### 2. Queue Tab (`Alt+2`) +### 2. Queue Tab The Queue tab manages prompt queuing and broadcast execution: @@ -100,7 +89,7 @@ The Queue tab manages prompt queuing and broadcast execution: ``` -### 3. Stats Tab (`Alt+3`) +### 3. Stats Tab The Stats tab provides real-time cost tracking and usage statistics: @@ -123,12 +112,11 @@ The Stats tab provides real-time cost tracking and usage statistics: ``` Total Cost: $0.47 ═══════════════════════ -Terminal 1: $0.15 (3 interactions) -Terminal 2: $0.12 (2 interactions) -Terminal 3: $0.10 (2 interactions) -Terminal 4: $0.10 (2 interactions) -Model: alias1 ($0.015/1K in, $0.060/1K out) -Tokens: 1,240 input, 6,850 output +Terminal 1: $0.15 +Terminal 2: $0.12 +Terminal 3: $0.10 +Terminal 4: $0.10 + ``` @@ -137,26 +125,18 @@ Tokens: 1,240 input, 6,850 output - Warning when approaching limit - Automatic pause when limit exceeded -### 4. Keys Tab (`Alt+4`) +### 4. Keys Tab -The Keys tab displays and manages API key status: +The Keys tab displays and manages API keys: **Key Information**: - API key provider (OpenAI, Anthropic, etc.) -- Key validity status -- Last validation time -- Rate limit information +- Masked API keys **Key Management**: -- View masked API keys -- Test key validity - Update keys without restarting - Environment variable status -**Example Display**: - - ---- ## Terminal Components @@ -179,7 +159,7 @@ The header bar above each terminal shows: **Model Dropdown**: - Click to open model selection menu -- Shows configured models (alias0, alias1, gpt-4o, etc.) +- Shows configured models (alias1, gpt-5, gpt-4o, etc.) - Displays model aliases and actual names - Updates immediately upon selection @@ -211,11 +191,6 @@ The main terminal display area shows: - Live progress indicators - Smooth scrolling -**Example Output**: - - - - ### Terminal States Terminals can be in different visual states: @@ -254,10 +229,7 @@ The TUI supports multiple layout configurations for parallel agent execution: Default view showing one terminal at full width: - - - - +![Single Terminal Layout](../media/CAI-1terminal.png) **Use Cases**: - Single-agent workflows @@ -270,7 +242,7 @@ Default view showing one terminal at full width: Side-by-side view for two terminals: - +![Two Terminal Split Layout](../media/CAI-2terminals.png) **Use Cases**: - Comparing two agent approaches @@ -283,8 +255,7 @@ Side-by-side view for two terminals: Three terminals with one full-width top terminal: - - +![Three Terminal Layout](../media/CAI-3terminals.png) **Use Cases**: - Full team operations (Teams 1-4) @@ -298,15 +269,13 @@ Three terminals with one full-width top terminal: For more than 4 terminals (experimental): - +![Four Terminal Grid Layout](../media/cai-tui-main.png) **Use Cases**: - Large-scale testing - Custom configurations - Advanced workflows -**Activation**: Manual configuration via startup YAML - --- ## Status Bar @@ -328,7 +297,6 @@ The bottom status bar displays global information: - **Mode**: Current mode (broadcast, queue, normal) - **Shortcuts**: Context-sensitive keyboard hints -**Example**: ## Input Area @@ -362,20 +330,6 @@ The TUI provides intelligent autocompletion for: - `/agent` - Switch agent - `/model` - Switch model -**Agent Names**: -- Type `@` to trigger agent name completion -- Fuzzy matching supported -- Shows agent descriptions - -**File Paths**: -- Type `/path/` to trigger path completion -- Shows recent files and directories -- Supports tab completion - -**Example**: - - ---- ## Responsive Design @@ -416,5 +370,25 @@ The TUI automatically: --- +## Command Palette + +Press `Ctrl+P` or click the menu button to open the command palette, which provides: + +- Quick command search and execution +- Fuzzy matching for command names +- Keyboard navigation (arrow keys, Enter) +- Recent commands history +- Command descriptions and shortcuts + +Available commands include: +- `clear` - Clear terminal output +- `save` - Save current session +- `load` - Load previous session +- `export` - Export conversation +- `reset` - Reset agent context +- `help` - Show help information + +--- + *Last updated: October 2025 | CAI TUI v0.6+* From dd2255d3dfd151afbb6b1c4bc99712821478b9e6 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 15:31:48 +0100 Subject: [PATCH 12/42] Minimal changes --- docs/tui/user-interface.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/tui/user-interface.md b/docs/tui/user-interface.md index 2884f02d..01c366f2 100644 --- a/docs/tui/user-interface.md +++ b/docs/tui/user-interface.md @@ -22,13 +22,13 @@ The top bar provides global controls and information: - **Terminal**: Main CAI interface label indicating the active application view. -- **Add+ button**: Creates and adds a new terminal to the current session. Click to spawn an additional terminal window (up to 4 terminals supported) for parallel agent execution. +- **Add+ button**: Creates and adds a new terminal to the current session. -- **Graph**: Opens the session statistics and cost monitoring dashboard, providing real-time insights into token usage, API costs, and performance metrics across all active terminals. +- **Graph**: Visual conversation flow representation. -- **Help**: Launches the comprehensive user guide with detailed documentation, keyboard shortcuts reference, and troubleshooting resources. Quick access to all TUI documentation. +- **Help**: Launches the comprehensive user guide with detailed documentation, keyboard shortcuts reference, and pro tips. -- **[Γ—] Close**: Exits the TUI application safely. Prompts to save unsaved sessions before closing. +- **[Γ—] Close**: Exits the TUI application. --- From 57e16973fd396acd41b0d680517aab737d4c5b0e Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 15:39:31 +0100 Subject: [PATCH 13/42] docs: update user-interface content --- docs/tui/user-interface.md | 113 +++++++++++++++++++++++++++++++------ 1 file changed, 95 insertions(+), 18 deletions(-) diff --git a/docs/tui/user-interface.md b/docs/tui/user-interface.md index 01c366f2..ba4442cb 100644 --- a/docs/tui/user-interface.md +++ b/docs/tui/user-interface.md @@ -38,32 +38,109 @@ The sidebar contains four main tabs accessible via mouse click or keyboard short ### 1. Teams Tab -The Teams tab displays preconfigured agent teams for parallel testing scenarios: +The Teams tab displays preconfigured agent teams for parallel testing scenarios. CAI TUI includes **11 preconfigured teams** designed for different security testing workflows. **Team Buttons**: - Compact labels show team composition (e.g., `#1: 2 red + 2 bug`) -- Click to apply team configuration to all terminals -- Hover to see detailed tooltip with full agent names and terminal assignments +- Click to apply team configuration to all 4 terminals simultaneously +- Hover to see detailed tooltip with full agent names and terminal-by-terminal assignments **Tooltip Information**: -- Team number and composition (e.g., "#2: 1 redteam_agent + 3 bug_bounter_agent") +Each team button displays a rich tooltip on hover showing: +- Team number and full composition (e.g., "#1: 2 redteam_agent + 2 bug_bounter_agent") - Terminal-by-terminal breakdown: - - T1: redteam_agent - - T2: bug_bounter_agent - - T3: bug_bounter_agent - - T4: bug_bounter_agent - -**Available Teams**: -- **Team 1**: 2 Red Team + 2 Bug Bounty agents -- **Team 2**: 1 Red Team + 3 Bug Bounty agents -- **Team 3**: 2 Red Team + 2 Blue Team agents -- **Team 4**: 2 Blue Team + 2 Bug Bounty agents + - **T1**: Agent assigned to Terminal 1 + - **T2**: Agent assigned to Terminal 2 + - **T3**: Agent assigned to Terminal 3 + - **T4**: Agent assigned to Terminal 4 + +#### Available Preconfigured Teams + +**Team #1: 2 Red + 2 Bug Bounty** +- **T1**: redteam_agent +- **T2**: redteam_agent +- **T3**: bug_bounter_agent +- **T4**: bug_bounter_agent +- **Best for**: Comprehensive vulnerability discovery combining offensive testing with bug bounty methodology + +**Team #2: 1 Red + 3 Bug Bounty** +- **T1**: redteam_agent +- **T2**: bug_bounter_agent +- **T3**: bug_bounter_agent +- **T4**: bug_bounter_agent +- **Best for**: Bug bounty programs with red team leadership and multiple hunters focusing on different attack surfaces + +**Team #3: 2 Red + 2 Blue** +- **T1**: redteam_agent +- **T2**: redteam_agent +- **T3**: blueteam_agent +- **T4**: blueteam_agent +- **Best for**: Adversarial testing with simultaneous offensive and defensive perspectives + +**Team #4: 2 Blue + 2 Bug Bounty** +- **T1**: blueteam_agent +- **T2**: blueteam_agent +- **T3**: bug_bounter_agent +- **T4**: bug_bounter_agent +- **Best for**: Defense-focused assessments with vulnerability validation from bug bounty perspective + +**Team #5: Red + Blue + Retester + Bug** +- **T1**: redteam_agent +- **T2**: blueteam_agent +- **T3**: retester_agent +- **T4**: bug_bounter_agent +- **Best for**: Complete security lifecycle from discovery to validation with mixed specialties + +**Team #6: 2 Red + 2 Retester** +- **T1**: redteam_agent +- **T2**: redteam_agent +- **T3**: retester_agent +- **T4**: retester_agent +- **Best for**: Aggressive offensive testing with immediate vulnerability retesting and validation + +**Team #7: 2 Blue + 2 Retester** +- **T1**: blueteam_agent +- **T2**: blueteam_agent +- **T3**: retester_agent +- **T4**: retester_agent +- **Best for**: Defensive security validation with continuous retesting of hardening measures + +**Team #8: 4 Red Team** +- **T1**: redteam_agent +- **T2**: redteam_agent +- **T3**: redteam_agent +- **T4**: redteam_agent +- **Best for**: Maximum offensive power, CTF competitions, intensive penetration testing campaigns + +**Team #9: 4 Blue Team** +- **T1**: blueteam_agent +- **T2**: blueteam_agent +- **T3**: blueteam_agent +- **T4**: blueteam_agent +- **Best for**: Comprehensive defensive analysis, security architecture review, hardening validation + +**Team #10: 4 Bug Bounty** +- **T1**: bug_bounter_agent +- **T2**: bug_bounter_agent +- **T3**: bug_bounter_agent +- **T4**: bug_bounter_agent +- **Best for**: Bug bounty hunts, vulnerability research, OWASP Top 10 testing across multiple surfaces + +**Team #11: 4 Retester** +- **T1**: retester_agent +- **T2**: retester_agent +- **T3**: retester_agent +- **T4**: retester_agent +- **Best for**: Large-scale retesting campaigns, verification of fixes, regression testing + +#### Using Teams When you select a team: -- All terminals are reconfigured automatically -- Agent dropdowns update to reflect new assignments -- Terminal headers show the assigned agent -- Previous conversations are preserved +1. All 4 terminals are automatically reconfigured with the designated agents +2. Agent dropdowns in each terminal header update to reflect new assignments +3. Terminal output areas are preserved (previous conversations remain visible) +4. Each terminal is ready to receive prompts immediately +5. You can broadcast the same prompt to all terminals or send individual prompts ### 2. Queue Tab From 9fa18deb0115e4fd8a8f057f53a10dcd4029c29b Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 15:45:59 +0100 Subject: [PATCH 14/42] docs: add comprehensive keyboard shortcuts reference for TUI --- docs/tui/keyboard-shortcuts.md | 412 +++++++++++++++++++++++++++++++++ 1 file changed, 412 insertions(+) create mode 100644 docs/tui/keyboard-shortcuts.md diff --git a/docs/tui/keyboard-shortcuts.md b/docs/tui/keyboard-shortcuts.md new file mode 100644 index 00000000..87788dbf --- /dev/null +++ b/docs/tui/keyboard-shortcuts.md @@ -0,0 +1,412 @@ +# CAI TUI Keyboard Shortcuts + +> **⚑ CAI-Pro Exclusive Feature** +> The Terminal User Interface (TUI) is available exclusively in **CAI-Pro**. To access this feature and unlock advanced multi-agent workflows, visit [Alias Robotics](https://aliasrobotics.com) for more information. + +--- + +Master the CAI TUI with these keyboard shortcuts for maximum productivity. All shortcuts work across different terminal operating systems. + + +## Navigation Shortcuts + +### Sidebar + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+S` | Toggle sidebar | Opens/closes the sidebar panel | + +**Usage**: +- Quick access to Teams, Queue, Stats, and Keys +- Sidebar state persists during session +- Width: 32 characters when open + +**Alternative**: Click the `☰` button in the top-left corner + +--- + +### Terminal Navigation + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+N` | Next terminal | Cycles forward through terminals (1β†’2β†’3β†’4β†’1) | +| `Ctrl+B` | Previous terminal | Cycles backward through terminals (1β†’4β†’3β†’2β†’1) | + +**Usage**: +- Focus moves to the next/previous terminal +- Visual indicator shows active terminal +- Works even when sidebar is open + +**Alternative**: Click directly on any terminal to focus it + +--- + +### Tab Navigation + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+Tab` | Next tab | Cycles through Terminal β†’ CTR β†’ Help β†’ Terminal | +| `Ctrl+1` | Terminal tab | Jump directly to Terminal tab | +| `Ctrl+2` | CTR tab | Jump directly to CTR (graph) tab | + +**Usage**: +- Switch between main views instantly +- Terminal tab: Main workspace with agents +- CTR tab: Visual graph of agent relationships +- Help tab: Built-in documentation + +**Alternative**: Click tab names in the top bar + +## Terminal Management + +### Opening Terminals + +| Shortcut | Action | Details | +|----------|--------|---------| +| Click `+` button | Add terminal | Creates new terminal with default settings | +| `/add` command | Add terminal | Command-based terminal creation | + +**Default Settings**: +- Agent: `redteam_agent` +- Model: `alias1` +- Container: `local` + +--- + +### Closing Terminals + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+E` | Close current terminal | Closes the focused terminal | +| `/remove T` | Close specific terminal | Example: `/remove T3` | + +**Notes**: +- Terminal 1 cannot be closed (main terminal) +- Closing removes conversation history (save with `/save` first) +- Remaining terminals re-layout automatically + +--- + +### Clearing Terminals + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+L` | Clear all terminals | Removes output from all terminal screens | +| `/clear` | Clear current terminal | Command to clear focused terminal only | + +**Notes**: +- Only clears visual output, not conversation history +- Use `/flush` to clear conversation history + +## Execution Control + +### Canceling Agents + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+C` | Cancel current agent | Stops the agent in the focused terminal | +| `ESC` | Cancel all agents | Stops all running agents across all terminals | + +**When to Use**: +- Agent is taking too long +- Wrong prompt was sent +- Need to interrupt for corrections +- Agent is stuck in a loop + +**Effect**: +- Agent stops immediately +- Partial output remains visible +- Can send new prompt right away + +--- + +### Parallel Execution + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+Shift+A` | Prompt all agents | Sends the current input to all active terminals in parallel | + +**Usage Flow**: +1. Type your prompt in the input field +2. Press `Ctrl+Shift+A` instead of `Enter` +3. All terminals receive and process the prompt simultaneously + +**Use Cases**: +- Multi-perspective analysis (red team + blue team) +- Bug bounty triage with multiple agents +- Comprehensive security assessment + +**Alternative**: Use `/parallel` commands for more control + +Learn more: [Teams and Parallel Execution](teams-and-parallel-execution.md) + +## Utility Shortcuts + +### Command Palette + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+P` | Open command palette | Textual's command palette for searching actions | + +**Features**: +- Search available commands +- Quick access to any action +- Fuzzy search support + +--- + +### Queue Management + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+Shift+Q` | Show queue | Displays the current prompt queue in main terminal | + +**Alternative Commands**: +- `/queue` - Show queue +- `/queue add ` - Add to queue +- `/queue remove N` - Remove item N +- `/queue clear` - Clear queue + +Learn more: [Commands Reference - Queue Management](commands-reference.md#queue-management) + +--- + +### Theme Cycling + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+Shift+T` | Cycle themes | Switches between available color themes | + +**Available Themes**: +- Dark (default teal theme) +- Light +- Textual Dark +- Textual Light + +**Alternative**: Set `CAI_THEME` environment variable + +Learn more: [User Interface - Themes](user-interface.md#themes) + +--- + +### Clearing Input + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+U` | Clear input | Removes all text from the input field | + +**Usage**: +- Quick way to start fresh +- Clear accidental text +- Standard Unix/Linux behavior + +--- + +### Exit Application + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+Q` | Exit CAI TUI | Closes the application completely | + +**Alternative**: Click the `Γ—` button in top-right corner + +**On Exit**: +- Session summary displayed (costs, tokens, duration) +- Unsaved conversations are lost (use `/save` first) +- API keys and configuration persist + +## Input Editing + +### Command Autocompletion + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Tab` | Autocomplete | Completes the current command or shows suggestions | + +**Examples**: +- Type `/ag` + `Tab` β†’ `/agent` +- Type `/mod` + `Tab` β†’ `/model` +- Type `/para` + `Tab` β†’ `/parallel` + +**Behavior**: +- Single match: Completes automatically +- Multiple matches: Shows list of suggestions +- No match: No action + +--- + +### Command History + +| Shortcut | Action | Details | +|----------|--------|---------| +| `↑` (Up Arrow) | Previous command | Navigate backward through command history | +| `↓` (Down Arrow) | Next command | Navigate forward through command history | + +**Features**: +- History persists across sessions +- Stored in `~/.cai/history` +- Includes both commands and prompts +- Maximum history size: 1000 entries + +**Usage Flow**: +1. Press `↑` to recall previous command +2. Continue pressing `↑` to go further back +3. Press `↓` to move forward in history +4. Edit recalled command if needed +5. Press `Enter` to execute + +--- + +### Command Suggestions + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+Space` | Show suggestions | Displays available commands matching current input | + +**Usage**: +- Type partial command +- Press `Ctrl+Space` +- Select from suggested commands + +**Suggestion Categories**: +- `/agent` commands +- `/model` commands +- `/parallel` commands +- `/queue` commands +- Other commands + +--- + +### Send Prompt + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Enter` | Send prompt/command | Executes the current input | + +**Behavior**: +- Commands (starting with `/`): Execute immediately +- Prompts: Send to current agent +- If agent is busy: Automatically queued + +## Terminal Content Copying + +### Copy Visible Content + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+Shift+X` | Copy visible | Copies currently visible terminal content to clipboard | + +**Use Cases**: +- Share specific output with team +- Save important findings +- Document tool results + +--- + +### Copy All Content + +| Shortcut | Action | Details | +|----------|--------|---------| +| `Ctrl+Shift+Z` | Copy all | Copies entire terminal content (including scrolled) to clipboard | + +**Use Cases**: +- Complete session documentation +- Comprehensive reporting +- Full conversation export + +**Alternative**: Use `/save` command for structured export to file + +## Platform-Specific Notes + +### macOS + +All shortcuts work as documented. Some terminals (e.g., Terminal.app) may require: +- Enabling "Use Option as Meta key" in preferences +- Allowing keyboard shortcuts in Security & Privacy settings + +### Linux + +All shortcuts work as documented. If using tmux/screen: +- `Ctrl+B` conflicts with tmux prefix β†’ Consider remapping tmux +- `Ctrl+S` may freeze terminal β†’ Disable XON/XOFF with `stty -ixon` + +### Windows + +All shortcuts work in Windows Terminal and modern terminals. In older terminals: +- Some `Ctrl+Shift+` combinations may not work +- Use command alternatives (e.g., `/queue` instead of `Ctrl+Shift+Q`) + +## Custom Shortcuts + +CAI TUI currently does not support custom keyboard shortcuts. This feature may be added in future versions. + +**Workaround**: Use command aliases or shell scripts for custom workflows. + +## Tips for Efficiency + +### Power User Workflow + +1. **Keep sidebar closed** (`Ctrl+S`) for max screen space +2. **Use `Ctrl+N`/`Ctrl+B`** to switch terminals instead of mouse +3. **Master `Tab` completion** for faster command input +4. **Use `↑`** to repeat similar prompts with modifications +5. **Leverage `Ctrl+Shift+A`** for parallel team analysis + +### Recommended Shortcuts to Memorize First + +Priority 1 (Essential): +- `Ctrl+S` - Toggle sidebar +- `Ctrl+Q` - Exit +- `Ctrl+C` - Cancel agent +- `Enter` - Send prompt +- `Tab` - Autocomplete + +Priority 2 (Common): +- `Ctrl+N` / `Ctrl+B` - Navigate terminals +- `Ctrl+L` - Clear screen +- `↑` / `↓` - Command history +- `ESC` - Cancel all + +Priority 3 (Advanced): +- `Ctrl+Shift+A` - Parallel prompt +- `Ctrl+E` - Close terminal +- `Ctrl+Shift+Q` - Show queue +- `Ctrl+P` - Command palette + +## Troubleshooting Shortcuts + +### Shortcut Not Working? + +**Check 1: Terminal Compatibility** +- Some shortcuts may be intercepted by your terminal emulator +- Check terminal preferences for keyboard settings +- Try a different terminal (e.g., Alacritty, iTerm2) + +**Check 2: tmux/screen Conflicts** +- tmux uses `Ctrl+B` as prefix (conflicts with "Previous Terminal") +- screen uses `Ctrl+A` as prefix (no conflicts with CAI TUI) +- Consider remapping tmux prefix: `set -g prefix C-a` + +**Check 3: OS-Level Shortcuts** +- Some OS keyboard shortcuts override terminal shortcuts +- Example: macOS `Ctrl+Shift+Space` opens Spotlight +- Disable conflicting OS shortcuts or use command alternatives + +### Accidental Exit (`Ctrl+Q`) + +If you frequently press `Ctrl+Q` by accident: + +**Workaround**: Use the `/exit` or `/quit` command instead + +**Future Feature**: Exit confirmation dialog (planned) + +## See Also + +- 🎯 [Commands Reference](commands-reference.md) - All available commands +- πŸ–₯️ [User Interface](user-interface.md) - Visual guide to the interface +- πŸ“– [Getting Started](getting-started.md) - Basic usage tutorial + +--- + +*Last updated: October 2025 | CAI TUI v0.6+* + From cb41ad1722b871d79a45489a30bb09343375fd9b Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 15:59:45 +0100 Subject: [PATCH 15/42] Restructure --- docs/tui/keyboard-shortcuts.md | 119 ++------------------------------- 1 file changed, 6 insertions(+), 113 deletions(-) diff --git a/docs/tui/keyboard-shortcuts.md b/docs/tui/keyboard-shortcuts.md index 87788dbf..0beb915b 100644 --- a/docs/tui/keyboard-shortcuts.md +++ b/docs/tui/keyboard-shortcuts.md @@ -41,30 +41,14 @@ Master the CAI TUI with these keyboard shortcuts for maximum productivity. All s --- -### Tab Navigation - -| Shortcut | Action | Details | -|----------|--------|---------| -| `Ctrl+Tab` | Next tab | Cycles through Terminal β†’ CTR β†’ Help β†’ Terminal | -| `Ctrl+1` | Terminal tab | Jump directly to Terminal tab | -| `Ctrl+2` | CTR tab | Jump directly to CTR (graph) tab | - -**Usage**: -- Switch between main views instantly -- Terminal tab: Main workspace with agents -- CTR tab: Visual graph of agent relationships -- Help tab: Built-in documentation - -**Alternative**: Click tab names in the top bar - ## Terminal Management ### Opening Terminals | Shortcut | Action | Details | |----------|--------|---------| -| Click `+` button | Add terminal | Creates new terminal with default settings | -| `/add` command | Add terminal | Command-based terminal creation | +| Click `Add +` button | Add terminal | Creates new terminal with default settings | + **Default Settings**: - Agent: `redteam_agent` @@ -78,7 +62,8 @@ Master the CAI TUI with these keyboard shortcuts for maximum productivity. All s | Shortcut | Action | Details | |----------|--------|---------| | `Ctrl+E` | Close current terminal | Closes the focused terminal | -| `/remove T` | Close specific terminal | Example: `/remove T3` | + +**Alternative**: Click directly on specific close terminal button. **Notes**: - Terminal 1 cannot be closed (main terminal) @@ -120,26 +105,6 @@ Master the CAI TUI with these keyboard shortcuts for maximum productivity. All s --- -### Parallel Execution - -| Shortcut | Action | Details | -|----------|--------|---------| -| `Ctrl+Shift+A` | Prompt all agents | Sends the current input to all active terminals in parallel | - -**Usage Flow**: -1. Type your prompt in the input field -2. Press `Ctrl+Shift+A` instead of `Enter` -3. All terminals receive and process the prompt simultaneously - -**Use Cases**: -- Multi-perspective analysis (red team + blue team) -- Bug bounty triage with multiple agents -- Comprehensive security assessment - -**Alternative**: Use `/parallel` commands for more control - -Learn more: [Teams and Parallel Execution](teams-and-parallel-execution.md) - ## Utility Shortcuts ### Command Palette @@ -155,40 +120,6 @@ Learn more: [Teams and Parallel Execution](teams-and-parallel-execution.md) --- -### Queue Management - -| Shortcut | Action | Details | -|----------|--------|---------| -| `Ctrl+Shift+Q` | Show queue | Displays the current prompt queue in main terminal | - -**Alternative Commands**: -- `/queue` - Show queue -- `/queue add ` - Add to queue -- `/queue remove N` - Remove item N -- `/queue clear` - Clear queue - -Learn more: [Commands Reference - Queue Management](commands-reference.md#queue-management) - ---- - -### Theme Cycling - -| Shortcut | Action | Details | -|----------|--------|---------| -| `Ctrl+Shift+T` | Cycle themes | Switches between available color themes | - -**Available Themes**: -- Dark (default teal theme) -- Light -- Textual Dark -- Textual Light - -**Alternative**: Set `CAI_THEME` environment variable - -Learn more: [User Interface - Themes](user-interface.md#themes) - ---- - ### Clearing Input | Shortcut | Action | Details | @@ -226,7 +157,6 @@ Learn more: [User Interface - Themes](user-interface.md#themes) **Examples**: - Type `/ag` + `Tab` β†’ `/agent` - Type `/mod` + `Tab` β†’ `/model` -- Type `/para` + `Tab` β†’ `/parallel` **Behavior**: - Single match: Completes automatically @@ -257,26 +187,6 @@ Learn more: [User Interface - Themes](user-interface.md#themes) --- -### Command Suggestions - -| Shortcut | Action | Details | -|----------|--------|---------| -| `Ctrl+Space` | Show suggestions | Displays available commands matching current input | - -**Usage**: -- Type partial command -- Press `Ctrl+Space` -- Select from suggested commands - -**Suggestion Categories**: -- `/agent` commands -- `/model` commands -- `/parallel` commands -- `/queue` commands -- Other commands - ---- - ### Send Prompt | Shortcut | Action | Details | @@ -303,19 +213,6 @@ Learn more: [User Interface - Themes](user-interface.md#themes) --- -### Copy All Content - -| Shortcut | Action | Details | -|----------|--------|---------| -| `Ctrl+Shift+Z` | Copy all | Copies entire terminal content (including scrolled) to clipboard | - -**Use Cases**: -- Complete session documentation -- Comprehensive reporting -- Full conversation export - -**Alternative**: Use `/save` command for structured export to file - ## Platform-Specific Notes ### macOS @@ -334,7 +231,7 @@ All shortcuts work as documented. If using tmux/screen: All shortcuts work in Windows Terminal and modern terminals. In older terminals: - Some `Ctrl+Shift+` combinations may not work -- Use command alternatives (e.g., `/queue` instead of `Ctrl+Shift+Q`) + ## Custom Shortcuts @@ -350,7 +247,6 @@ CAI TUI currently does not support custom keyboard shortcuts. This feature may b 2. **Use `Ctrl+N`/`Ctrl+B`** to switch terminals instead of mouse 3. **Master `Tab` completion** for faster command input 4. **Use `↑`** to repeat similar prompts with modifications -5. **Leverage `Ctrl+Shift+A`** for parallel team analysis ### Recommended Shortcuts to Memorize First @@ -368,9 +264,7 @@ Priority 2 (Common): - `ESC` - Cancel all Priority 3 (Advanced): -- `Ctrl+Shift+A` - Parallel prompt - `Ctrl+E` - Close terminal -- `Ctrl+Shift+Q` - Show queue - `Ctrl+P` - Command palette ## Troubleshooting Shortcuts @@ -396,9 +290,8 @@ Priority 3 (Advanced): If you frequently press `Ctrl+Q` by accident: -**Workaround**: Use the `/exit` or `/quit` command instead +**Workaround**: Use the close session button instead -**Future Feature**: Exit confirmation dialog (planned) ## See Also From 41aef73500938f0ed6dc4d16ba9d8987ad73d12d Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 16:14:02 +0100 Subject: [PATCH 16/42] docs: rename files to use underscores for consistency (keyboard_shortcuts, user_interface) --- docs/tui/{keyboard-shortcuts.md => keyboard_shortcuts.md} | 6 +++--- docs/tui/{user-interface.md => user_interface.md} | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename docs/tui/{keyboard-shortcuts.md => keyboard_shortcuts.md} (97%) rename docs/tui/{user-interface.md => user_interface.md} (100%) diff --git a/docs/tui/keyboard-shortcuts.md b/docs/tui/keyboard_shortcuts.md similarity index 97% rename from docs/tui/keyboard-shortcuts.md rename to docs/tui/keyboard_shortcuts.md index 0beb915b..fe57f929 100644 --- a/docs/tui/keyboard-shortcuts.md +++ b/docs/tui/keyboard_shortcuts.md @@ -295,9 +295,9 @@ If you frequently press `Ctrl+Q` by accident: ## See Also -- 🎯 [Commands Reference](commands-reference.md) - All available commands -- πŸ–₯️ [User Interface](user-interface.md) - Visual guide to the interface -- πŸ“– [Getting Started](getting-started.md) - Basic usage tutorial +- 🎯 [Commands Reference](commands_reference.md) - All available commands +- πŸ–₯️ [User Interface](user_interface.md) - Visual guide to the interface +- πŸ“– [Getting Started](getting_started.md) - Basic usage tutorial --- diff --git a/docs/tui/user-interface.md b/docs/tui/user_interface.md similarity index 100% rename from docs/tui/user-interface.md rename to docs/tui/user_interface.md From 93511d88238fcaf61640449c8b54929971e2720e Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 16:33:47 +0100 Subject: [PATCH 17/42] docs: add comprehensive commands reference for TUI --- docs/tui/commands_reference.md | 577 +++++++++++++++++++++++++++++++++ 1 file changed, 577 insertions(+) create mode 100644 docs/tui/commands_reference.md diff --git a/docs/tui/commands_reference.md b/docs/tui/commands_reference.md new file mode 100644 index 00000000..9011c15c --- /dev/null +++ b/docs/tui/commands_reference.md @@ -0,0 +1,577 @@ +# CAI TUI Commands Reference + +> **⚑ CAI-Pro Exclusive Feature** +> The Terminal User Interface (TUI) is available exclusively in **CAI-Pro**. To access this feature and unlock advanced multi-agent workflows, visit [Alias Robotics](https://aliasrobotics.com) for more information. + +--- + +This comprehensive guide documents all commands available in the CAI Terminal User Interface (TUI), including command palette actions, keyboard shortcuts, and CLI-style commands. + +--- + +## Command Categories + +CAI TUI commands are organized into the following categories: + +1. [Agent Management](#agent-management) +2. [Model Management](#model-management) +3. [Terminal Control](#terminal-control) +4. [History and Memory](#history-and-memory) +5. [Session Management](#session-management) +6. [Parallel Execution](#parallel-execution) +7. [MCP Integration](#mcp-integration) +8. [Utility Commands](#utility-commands) +9. [Navigation and UI](#navigation-and-ui) + +--- + +## Agent Management + +### `/agent` or `/a` + +Switch between agents or list all available agents. + +**Syntax**: +``` +/agent [agent_name] +/a [agent_name] +``` + +**Examples**: +```bash +# List all available agents +/agent + +# Switch to red team agent +/agent redteam_agent + +# Switch to bug bounty agent +/a bug_bounter_agent +``` + +**Available Agents (Community Edition)**: +- `redteam_agent` - Offensive security testing +- `blueteam_agent` - Defensive security analysis +- `bug_bounter_agent` - Bug bounty hunting +- `retester_agent` - Retesting and validation +- `one_tool_agent` - Basic single-tool execution +- `dfir_agent` - Digital forensics and incident response +- `reporting_agent` - Report generation and documentation +- `reverse_engineering_agent` - Binary analysis and reverse engineering +- `network_security_analyzer_agent` - Network security assessment +- `wifi_security_agent` - WiFi security testing +- `memory_analysis_agent` - Memory forensics +- `dns_smtp_agent` - DNS and SMTP analysis +- `replay_attack_agent` - Replay attack testing +- `subghz_sdr_agent` - Sub-GHz and SDR analysis +- `thought_agent` - Reasoning and planning + +**Notes**: +- Agent changes are immediate and affect only the active terminal +- Each terminal can run a different agent simultaneously +- Agent context is preserved when switching between terminals + +--- + +## Model Management + +### Model Selection via Dropdown + +CAI TUI uses model dropdowns in each terminal header for model management. Models are configured via environment variables and aliases. + +**Available Models**: +- `alias0` - Primary model alias (configured via `CAI_MODEL`) +- `alias1` - Secondary model alias +- `gpt-4o` - OpenAI GPT-4 Optimized +- `gpt-4-turbo` - OpenAI GPT-4 Turbo +- `claude-3-5-sonnet-20241022` - Anthropic Claude 3.5 Sonnet +- `o1-mini` - OpenAI O1 Mini +- `o1-preview` - OpenAI O1 Preview + +**How to Change Models**: +1. Click the model dropdown in any terminal header +2. Select desired model from the list +3. Model change takes effect immediately for that terminal + +**Environment Variables**: +```bash +export CAI_MODEL=gpt-4o # Set default model +export CAI_OPENAI_API_KEY=sk-... # OpenAI API key +export CAI_ANTHROPIC_API_KEY=sk-... # Anthropic API key +``` + +**Notes**: +- Each terminal can use a different model +- Model costs are tracked separately per terminal +- Switching models mid-conversation preserves history + +--- + +## Terminal Control + +### Terminal-Specific Commands + +Send commands to specific terminals using the `T:` prefix. + +**Syntax**: +``` +T: +``` + +**Examples**: +```bash +# Switch agent in Terminal 2 +T2:/agent blueteam_agent + +# Change model in Terminal 3 +T3:/model gpt-4o + +# Clear Terminal 1 +T1:/clear + +# Execute command in Terminal 4 +T4:scan target.com for vulnerabilities +``` + + +**Keyboard Shortcut**: Click the `[+]` button in the top bar + +**Notes**: +- New terminals start with `redteam_agent` by default +- Maximum recommended terminals: 4 (for optimal UX) +- Terminals beyond 4 use scrollable layout + +--- + +## History and Memory + +### `/history [number] [agent_name]` or `/h` + +Display conversation history for the current or specified agent. + +**Syntax**: +``` +/history [number] [agent_name] +``` + +**Examples**: +```bash +# Show last 10 messages +/history + +# Show last 20 messages +/history 20 + +# Show history for specific agent +/history 10 redteam_agent + +# Compact syntax +/h 5 +``` + +**Notes**: +- Default shows last 10 interactions +- History includes both user prompts and agent responses +- History is terminal-specific + +### `/flush [agent_name|all]` + +Clear agent message history. + +**Syntax**: +``` +/flush [agent_name|all] +``` + +**Examples**: +```bash +# Flush current agent history +/flush + +# Flush specific agent +/flush redteam_agent + +# Flush all agents +/flush all +``` + +**Notes**: +- Flushing is irreversible +- Agent context window is reset +- Useful for starting fresh conversations + +### `/memory [subcommand]` or `/mem` + +Advanced memory management for agents. + +**Syntax**: +``` +/memory +/mem +``` + +**Subcommands**: + +#### `list` +Show all saved memories. +```bash +/memory list +``` + +#### `save [name]` +Save current conversation as a memory. +```bash +/memory save "Authentication bypass research" +/mem save pentest_findings +``` + +#### `apply ` +Apply a saved memory to the current agent. +```bash +/memory apply mem_12345 +``` + +#### `show ` +Display the content of a specific memory. +```bash +/memory show mem_12345 +``` + +#### `delete ` +Remove a memory permanently. +```bash +/memory delete mem_12345 +``` + +#### `merge [name]` +Combine two memories into one. +```bash +/memory merge mem_12345 mem_67890 "Combined pentesting notes" +``` + +#### `compact` +AI-powered memory summarization. +```bash +/memory compact +``` + +#### `status` +Show memory system status and statistics. +```bash +/memory status +``` + +**Notes**: +- Memories persist across sessions +- Useful for resuming long-term research projects +- AI-powered summarization reduces token usage + +--- + +## Session Management + +### `/save ` + +Save the current conversation to a file. + +**Syntax**: +``` +/save +``` + +**Supported Formats**: +- JSON (`.json`) +- Markdown (`.md`) + +**Examples**: +```bash +# Save as JSON +/save pentest_session.json + +# Save as Markdown +/save findings_report.md + +# Save with full path +/save ~/Documents/cai_sessions/project_alpha.json +``` + +**Notes**: +- Saves all terminal conversations +- Includes agent names, models, and timestamps +- Cost information is preserved + +### `/load ` or `/l` + +Load a previously saved conversation. + +**Syntax**: +``` +/load +/l +``` + +**Examples**: +```bash +# Load JSON session +/load pentest_session.json + +# Load Markdown report +/load findings_report.md + +# Compact syntax +/l ~/cai_sessions/old_session.json +``` + +**Notes**: +- Restores agent context and history +- Compatible with both JSON and Markdown formats +- Loading does not affect current cost tracking + +--- + +## Utility Commands + +### `/cost [agent_name]` + +Display API usage costs and token statistics. + +**Syntax**: +``` +/cost [agent_name] +``` + +**Examples**: +```bash +# Show costs for active terminal +/cost + +# Show costs for specific agent +/cost redteam_agent + +# Show total session costs +/cost all +``` + +**Output Includes**: +- Total cost (USD) +- Input tokens used +- Output tokens used +- Cost per interaction +- Model pricing rates +- Terminal breakdown + +### `/help [command]` or `/?` + +Get help for commands. + +**Syntax**: +``` +/help [command] +/? [command] +``` + +**Examples**: +```bash +# General help +/help + +# Help for specific command +/help agent +/help parallel +/? mcp +``` + +### `/env` + +Display environment variables relevant to CAI. + +**Syntax**: +``` +/env +``` + +**Output Includes**: +- `CAI_MODEL` - Default model +- `CAI_AGENT_TYPE` - Default agent +- `CAI_MAX_TURNS` - Maximum interaction turns +- `CAI_TRACING` - Tracing status +- `CAI_GUARDRAILS` - Guardrails enabled +- `CAI_PRICE_LIMIT` - Cost limit +- `CAI_TUI_MODE` - TUI mode settings +- API keys (masked) + +### `/shell` or `$` + +Execute shell commands directly from the TUI. + +**Syntax**: +``` +/shell +$ +``` + +**Examples**: +```bash +# List files +/shell ls -la + +# Check network +$ping -c 3 target.com + +# Run nmap scan +$nmap -sV 192.168.1.1 +``` + +**Notes**: +- Commands execute in the system shell +- Output is displayed in the terminal +- Use with caution - no sandboxing + +### `/kill` + +Terminate the currently executing agent operation. + +**Syntax**: +``` +/kill +``` + +**Keyboard Shortcut**: `Ctrl+C` + +**Notes**: +- Stops agent mid-execution +- Partial responses are discarded +- Agent context is preserved + +### `/clear` + +Clear the terminal output. + +**Syntax**: +``` +/clear +``` + +**Keyboard Shortcut**: `Ctrl+L` + +**Notes**: +- Clears visual output only +- Conversation history is preserved +- Cost tracking continues + + +**Keyboard Shortcut**: `Ctrl+Q` + +**Notes**: +- Prompts for confirmation if agents are running +- Unsaved sessions will be lost +- Graceful shutdown of all terminals + +--- + +## Navigation and UI + +### Command Palette + +Access the command palette for quick command search and execution. + +**Keyboard Shortcut**: `Ctrl+P` + +**Features**: +- Fuzzy search for commands +- Command descriptions +- Keyboard navigation (arrow keys, Enter) +- Recent commands +- Theme switching + +### Sidebar Toggle + +Show or hide the sidebar. + +**Keyboard Shortcut**: `Ctrl+S` + +**Alternative**: Click the `[≑]` button in the top bar + +### Tab Navigation + +Switch between main TUI tabs (Terminal, CTR, Help). + +**Keyboard Shortcuts**: +- `Ctrl+1` - Show Terminal tab +- `Ctrl+2` - Show CTR tab +- `Ctrl+Tab` - Cycle through tabs + +**Alternative**: Click tab headers in the top bar + +### Theme Cycling + +Cycle through available visual themes. + +**Keyboard Shortcut**: `Ctrl+Shift+T` + +**Available Themes**: +- Default (dark) +- Light +- High Contrast +- Minimal +- Custom (if configured) + +### Terminal View Toggle + +Toggle between showing all terminals and only the focused one. + +**Keyboard Shortcut**: `Ctrl+T` + +**Use Cases**: +- Focus mode for single-agent work +- Maximize screen real estate +- Presentation mode + +### Queue Display + +Show the prompt queue status. + +**Keyboard Shortcut**: `Ctrl+Shift+Q` + +**Alternative**: Switch to Queue tab in sidebar (`Alt+2`) + +### Clear Input + +Clear the prompt input field. + +**Keyboard Shortcut**: `Ctrl+U` + +### Broadcast Prompt + +Send the same prompt to all active terminals simultaneously. + +**Keyboard Shortcut**: `Ctrl+Shift+A` + +**Use Cases**: +- Parallel agent execution +- Comparing agent responses +- Team-based workflows + +### Cancel Operations + +Cancel running operations. + +**Keyboard Shortcuts**: +- `Ctrl+C` - Cancel execution in focused terminal +- `Escape` - Cancel all running agents (press twice to exit) + +--- + +## Next Steps + +- [Terminals Management](terminals_management.md) - Advanced multi-terminal workflows +- [Keyboard Shortcuts](keyboard_shortcuts.md) - Complete keyboard reference +- [User Interface Guide](user_interface.md) - Visual components and layouts +- [Teams Configuration](teams_preconfigured.md) - Using and customizing teams + +For questions or issues, visit [CAI GitHub Issues](https://github.com/aliasrobotics/cai/issues). + +--- + +*Last updated: October 2025 | CAI TUI v0.6+* + From cb5c238ef62f5db5bfb9e1d3776d2335b00fde4c Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 16:48:38 +0100 Subject: [PATCH 18/42] docs: update commands_reference with enhanced agent list, terminal targeting methods, and UI refinements --- docs/tui/commands_reference.md | 137 ++++++++++++++++----------------- 1 file changed, 67 insertions(+), 70 deletions(-) diff --git a/docs/tui/commands_reference.md b/docs/tui/commands_reference.md index 9011c15c..4eb23bab 100644 --- a/docs/tui/commands_reference.md +++ b/docs/tui/commands_reference.md @@ -18,10 +18,8 @@ CAI TUI commands are organized into the following categories: 3. [Terminal Control](#terminal-control) 4. [History and Memory](#history-and-memory) 5. [Session Management](#session-management) -6. [Parallel Execution](#parallel-execution) -7. [MCP Integration](#mcp-integration) -8. [Utility Commands](#utility-commands) -9. [Navigation and UI](#navigation-and-ui) +6. [Utility Commands](#utility-commands) +7. [Navigation and UI](#navigation-and-ui) --- @@ -49,22 +47,29 @@ Switch between agents or list all available agents. /a bug_bounter_agent ``` -**Available Agents (Community Edition)**: -- `redteam_agent` - Offensive security testing -- `blueteam_agent` - Defensive security analysis -- `bug_bounter_agent` - Bug bounty hunting -- `retester_agent` - Retesting and validation -- `one_tool_agent` - Basic single-tool execution +**Available Agents**: +- `redteam_agent` - Offensive security testing and penetration testing +- `blueteam_agent` - Defensive security analysis and hardening +- `bug_bounter_agent` - Bug bounty hunting and vulnerability research +- `retester_agent` - Retesting and validation of vulnerabilities +- `one_tool_agent` - Basic single-tool execution (minimalist approach) - `dfir_agent` - Digital forensics and incident response -- `reporting_agent` - Report generation and documentation +- `reporting_agent` - Report generation and security documentation - `reverse_engineering_agent` - Binary analysis and reverse engineering - `network_security_analyzer_agent` - Network security assessment -- `wifi_security_agent` - WiFi security testing -- `memory_analysis_agent` - Memory forensics -- `dns_smtp_agent` - DNS and SMTP analysis -- `replay_attack_agent` - Replay attack testing -- `subghz_sdr_agent` - Sub-GHz and SDR analysis -- `thought_agent` - Reasoning and planning +- `wifi_security_agent` - WiFi security testing and wireless analysis +- `memory_analysis_agent` - Memory forensics and analysis +- `dns_smtp_agent` - DNS and SMTP protocol analysis +- `replay_attack_agent` - Replay attack testing and analysis +- `subghz_sdr_agent` - Sub-GHz and Software Defined Radio (SDR) analysis +- `thought_agent` - Reasoning, planning, and analysis +- `use_case_agent` - Use case analysis and scenario planning +- `flag_discriminator` - CTF flag identification and discrimination +- `cybersecurity_engineer` - Cybersecurity engineering and architecture +- `selection_agent` - Intelligent agent selection and routing +- `bb_triage_swarm_pattern` - Bug bounty triage swarm pattern +- `redteam_swarm_pattern` - Red team swarm coordination pattern +- `offsec_pattern` - Offensive security pattern orchestration **Notes**: - Agent changes are immediate and affect only the active terminal @@ -80,8 +85,7 @@ Switch between agents or list all available agents. CAI TUI uses model dropdowns in each terminal header for model management. Models are configured via environment variables and aliases. **Available Models**: -- `alias0` - Primary model alias (configured via `CAI_MODEL`) -- `alias1` - Secondary model alias +- `alias1` - Cybersecurity focus model [Recommended] - `gpt-4o` - OpenAI GPT-4 Optimized - `gpt-4-turbo` - OpenAI GPT-4 Turbo - `claude-3-5-sonnet-20241022` - Anthropic Claude 3.5 Sonnet @@ -111,7 +115,9 @@ export CAI_ANTHROPIC_API_KEY=sk-... # Anthropic API key ### Terminal-Specific Commands -Send commands to specific terminals using the `T:` prefix. +Send commands to specific terminals using either the prefix notation or the flag notation. + +#### Method 1: Prefix Notation **Syntax**: ``` @@ -124,7 +130,7 @@ T: T2:/agent blueteam_agent # Change model in Terminal 3 -T3:/model gpt-4o +T3:/model alias1 # Clear Terminal 1 T1:/clear @@ -132,7 +138,47 @@ T1:/clear # Execute command in Terminal 4 T4:scan target.com for vulnerabilities ``` +#### Method 2: Flag Notation + +**Syntax**: + +``` + t + +``` + +**Examples**: +```bash +# Switch agent in Terminal 2 +/agent blueteam_agent t2 + +# Change model in Terminal 3 +/model alias1 t3 + +# Clear Terminal 1 +/clear t1 + +# Execute any command in Terminal 4 +/help t4 + +# Send prompt to Terminal 2 +Scan target.com for XSS vulnerabilities t2 +``` +**Supported Flags**: +- `t1` - Target Terminal 1 +- `t2` - Target Terminal 2 +- `t3` - Target Terminal 3 +- `t4` - Target Terminal 4 +- (Additional terminals if configured: `t5`, `t6`, etc.) + +**Notes**: +- Both methods achieve the same result +- Flag notation is more concise for quick commands +- Prefix notation is clearer for complex prompts +- You can target any terminal without focusing it first +- Useful for scripting and automation +- Works with all commands (slash commands and prompts) **Keyboard Shortcut**: Click the `[+]` button in the top bar @@ -463,7 +509,6 @@ Clear the terminal output. **Keyboard Shortcut**: `Ctrl+Q` **Notes**: -- Prompts for confirmation if agents are running - Unsaved sessions will be lost - Graceful shutdown of all terminals @@ -492,48 +537,6 @@ Show or hide the sidebar. **Alternative**: Click the `[≑]` button in the top bar -### Tab Navigation - -Switch between main TUI tabs (Terminal, CTR, Help). - -**Keyboard Shortcuts**: -- `Ctrl+1` - Show Terminal tab -- `Ctrl+2` - Show CTR tab -- `Ctrl+Tab` - Cycle through tabs - -**Alternative**: Click tab headers in the top bar - -### Theme Cycling - -Cycle through available visual themes. - -**Keyboard Shortcut**: `Ctrl+Shift+T` - -**Available Themes**: -- Default (dark) -- Light -- High Contrast -- Minimal -- Custom (if configured) - -### Terminal View Toggle - -Toggle between showing all terminals and only the focused one. - -**Keyboard Shortcut**: `Ctrl+T` - -**Use Cases**: -- Focus mode for single-agent work -- Maximize screen real estate -- Presentation mode - -### Queue Display - -Show the prompt queue status. - -**Keyboard Shortcut**: `Ctrl+Shift+Q` - -**Alternative**: Switch to Queue tab in sidebar (`Alt+2`) ### Clear Input @@ -541,12 +544,6 @@ Clear the prompt input field. **Keyboard Shortcut**: `Ctrl+U` -### Broadcast Prompt - -Send the same prompt to all active terminals simultaneously. - -**Keyboard Shortcut**: `Ctrl+Shift+A` - **Use Cases**: - Parallel agent execution - Comparing agent responses From fb54d2abcae12b24c63a43de5aa190cadbbf7467 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 27 Oct 2025 16:56:02 +0100 Subject: [PATCH 19/42] docs: activate links for completed TUI documentation files --- docs/tui/tui_index.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/tui/tui_index.md b/docs/tui/tui_index.md index ccaa0691..a95ea327 100644 --- a/docs/tui/tui_index.md +++ b/docs/tui/tui_index.md @@ -87,7 +87,7 @@ Each terminal maintains its own: - Isolated conversation history - Separate execution context -Learn more about terminal management in the full TUI documentation. +Learn more: Terminals Management 🚧 (coming soon) ### πŸ‘₯ Preconfigured Teams @@ -97,7 +97,7 @@ Access specialized agent teams from the sidebar: - **Team: 2 Red + 2 Blue**: Dual-perspective security analysis - **Team: Red + Blue + Retester + Bug**: Comprehensive assessment workflow -Learn more about Teams and Parallel Execution in the full TUI documentation. +Learn more: Teams and Parallel Execution 🚧 (coming soon) ### 🎯 Smart Agent Selection @@ -109,7 +109,7 @@ Use the `selection_agent` to get intelligent agent recommendations based on your Or simply select it from the agent dropdown. -Learn more about commands in the full TUI documentation. +Learn more: [Commands Reference](commands_reference.md) βœ… ### πŸ“Š Sidebar Features @@ -120,7 +120,7 @@ The collapsible sidebar (`Ctrl+S`) provides: - **Stats**: Real-time session statistics and costs - **Keys**: Manage API keys for multiple providers -Learn more about sidebar features in the full TUI documentation. +Learn more: Sidebar Features 🚧 (coming soon) ## Documentation Structure @@ -128,11 +128,11 @@ Learn more about sidebar features in the full TUI documentation. ### For New Users 1. [Getting Started](getting_started.md) βœ… - First steps and basic usage -2. User Interface 🚧 - Understanding the layout -3. Keyboard Shortcuts 🚧 - Essential shortcuts +2. [User Interface](user_interface.md) βœ… - Understanding the layout +3. [Keyboard Shortcuts](keyboard_shortcuts.md) βœ… - Essential shortcuts ### For Regular Users -4. Commands Reference 🚧 - Complete command list +4. [Commands Reference](commands_reference.md) βœ… - Complete command list 5. Terminals Management 🚧 - Working with multiple terminals 6. Sidebar Features 🚧 - Sidebar tabs and capabilities @@ -158,7 +158,7 @@ Learn more about sidebar features in the full TUI documentation. | `Ctrl+C` | Cancel current agent | | `ESC` | Cancel all agents | -See complete keyboard shortcuts reference in the full TUI documentation (coming soon). +See the complete [Keyboard Shortcuts Reference](keyboard_shortcuts.md) βœ… for all shortcuts. ### Most Used Commands @@ -173,7 +173,7 @@ See complete keyboard shortcuts reference in the full TUI documentation (coming | `/save ` | Save conversation | | `/load ` | Load conversation | -See complete commands reference in the full TUI documentation (coming soon). +See the complete [Commands Reference](commands_reference.md) βœ… for all commands. ## Architecture @@ -206,8 +206,9 @@ For technical details, see the [Architecture Overview](../cai_architecture.md). ## What's Next? - πŸ“– [Getting Started Guide](getting_started.md) βœ… - Learn the basics -- ⌨️ Keyboard Shortcuts 🚧 - Boost your productivity -- 🎯 Commands Reference 🚧 - Master the commands +- πŸ–₯️ [User Interface](user_interface.md) βœ… - Understand the layout +- ⌨️ [Keyboard Shortcuts](keyboard_shortcuts.md) βœ… - Boost your productivity +- 🎯 [Commands Reference](commands_reference.md) βœ… - Master the commands - πŸ‘₯ Teams and Parallel Execution 🚧 - Advanced workflows --- From f381b696edc392eb7d033ffc613bcdfde8580df3 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Tue, 28 Oct 2025 11:13:37 +0100 Subject: [PATCH 20/42] docs: add terminals_management.md with multi-terminal workflows and layouts --- docs/tui/terminals_management.md | 763 +++++++++++++++++++++++++++++++ 1 file changed, 763 insertions(+) create mode 100644 docs/tui/terminals_management.md diff --git a/docs/tui/terminals_management.md b/docs/tui/terminals_management.md new file mode 100644 index 00000000..cca8349f --- /dev/null +++ b/docs/tui/terminals_management.md @@ -0,0 +1,763 @@ +# CAI TUI Terminals Management + +> **⚑ CAI-Pro Exclusive Feature** +> The Terminal User Interface (TUI) is available exclusively in **CAI-Pro**. To access this feature and unlock advanced multi-agent workflows, visit [Alias Robotics](https://aliasrobotics.com) for more information. + +--- + +This guide covers advanced terminal management in the CAI TUI, including multi-terminal workflows, layouts, team configurations, and parallel execution strategies. + +--- + +## Table of Contents + +1. [Terminal Basics](#terminal-basics) +2. [Multi-Terminal Workflows](#multi-terminal-workflows) +3. [Terminal Layouts](#terminal-layouts) +4. [Terminal Operations](#terminal-operations) +5. [Team-Based Configurations](#team-based-configurations) +6. [Parallel Execution Patterns](#parallel-execution-patterns) +7. [Terminal State Management](#terminal-state-management) +8. [Advanced Techniques](#advanced-techniques) + +--- + +## Terminal Basics + +### What is a Terminal? + +In CAI TUI, a **terminal** is an independent execution environment where: +- A single agent processes user prompts +- Conversation history is maintained separately +- Model selection can be configured independently +- Cost tracking is isolated + +### Terminal Anatomy + +Each terminal consists of: + +[Insertar imagen] + + +**Header Components**: +- **Terminal Number** (T1, T2, T3, T4) +- **Agent Name** with dropdown selector +- **Model Name** with dropdown selector +- **Container Icon** (if running in container mode) + +**Output Area**: +- Streaming agent responses +- Tool call displays +- Execution results +- Error messages + +**Status Bar** (global, not per-terminal): +- Current agent +- Active model +- Session cost +- Token count + +### Default Behavior + +- **Terminal 1 (T1)** is always the main terminal and cannot be closed +- New terminals start with `redteam_agent` and the default model (`CAI_MODEL`) +- Each terminal maintains independent conversation history +- Terminals can run different agents and models simultaneously + +--- + +## Multi-Terminal Workflows + +### Why Use Multiple Terminals? + +Multiple terminals enable: + +1. **Parallel Agent Execution**: Run different agents simultaneously on the same task +2. **Perspective Comparison**: Compare red team vs. blue team approaches +3. **Specialization**: Assign specific roles to different agents +4. **Efficiency**: Execute independent tasks in parallel +5. **Collaboration Simulation**: Model team-based security workflows + +### Common Multi-Terminal Patterns + +#### Pattern 1: Offensive + Defensive (2 Terminals) + +**Use Case**: Adversarial testing with real-time defense validation + +**Setup**: +- **T1**: `redteam_agent` - Performs offensive testing +- **T2**: `blueteam_agent` - Analyzes defensive posture + +**Workflow**: + +``` +T1 > Identify attack vectors on target web application +T2 > Evaluate defensive controls for the same application +``` + +**Benefits**: +- Immediate validation of findings +- Balanced security assessment +- Real-time trade-off analysis + +#### Pattern 2: Discover + Validate + Report (3 Terminals) + +**Use Case**: Complete vulnerability lifecycle from discovery to documentation + +**Setup**: +- **T1**: `bug_bounter_agent` - Discover vulnerabilities +- **T2**: `retester_agent` - Validate findings +- **T3**: `reporting_agent` - Document results + +**Workflow**: + +``` +T1 > Hunt for authentication bypasses in target.com +T2 > +T2 > Retest the authentication bypass found in T1 +T3 > +T3 > Generate report for confirmed authentication bypass +``` + +**Benefits**: +- Clear separation of concerns +- Quality assurance built-in +- Professional documentation + +#### Pattern 3: Full Security Team (4 Terminals) + +**Use Case**: Comprehensive security assessment with maximum parallelization + +**Setup** (Use Team #1 from sidebar): +- **T1**: `redteam_agent` - Web application attacks +- **T2**: `redteam_agent` - Network-level exploitation +- **T3**: `bug_bounter_agent` - OWASP Top 10 focus +- **T4**: `bug_bounter_agent` - API security testing + +**Workflow**: + +``` +