duckduckgo-chat-cli
repo(I am no longer supporting the project) Command-line interface for interacting with DuckDuckGo's AI chat service.
README.md
🦆 DuckDuckGo AI Chat CLI
✨ Key Features
💬 Chat Experience
- 🔄 Real-time streaming - Live response display with smooth markdown formatting
- 🤖 Multiple AI models - GPT-4o mini, Claude 3 Haiku, Llama 3.3, Mistral Small, o4-mini & more
- 💻 Terminal-native - Optimized for command-line workflows with interactive menus
- ⌨️ Smart autocompletion - Interactive command menus and context-aware suggestions
- 🔑 Auto-authentication - Seamless session management with dynamic header refresh
- 🔄 Model switching - Interactive model selection during conversations
🧠 Intelligent Features ✨ NEW
- 📊 Smart Analytics - Real-time session statistics with API monitoring, performance metrics, and usage insights
- 🎯 Context Optimization - Automatic context compression and importance scoring to maintain conversation quality
- 💾 Persistent History - Intelligent session management with compression, recovery, and searchable archive
- 📈 Performance Tracking - Monitor success rates, error patterns, token usage, and optimization effectiveness
🧠 Context Integration
- 🔍 Web search - Integrate DuckDuckGo search results into conversations
- 📄 File processing - Add local file content (15+ formats: Go, Python, JS, TS, JSON, MD, etc.)
- 🌐 URL scraping - Extract and analyze webpage content with Chrome-based scraping
- 🚀 Project analysis - Generate comprehensive project prompts with PMP auto-installation
- 💾 Session persistence - Maintain conversation history across sessions
- 📚 Library management - Organize and search through document collections
- ⛓️ Command Chaining - Chain multiple commands (e.g.,
/url,/file,/search) using&&to build a combined context before sending a final prompt with--.
🛠️ Productivity Tools
- 📋 Smart clipboard - Copy responses, code blocks, or full conversations with interactive selection
- 📤 Advanced export - Save conversations in multiple formats with search-based filtering
- 📝 History management - Browse your conversation history with intelligent search
- 🔍 Content search - Search within conversations and document libraries
- ⚙️ Interactive config - Visual configuration menus for all settings
- 🎨 Rich formatting - Colored output with markdown rendering
- ⚡ Performance - Efficient memory usage and fast response times
🌐 API Server
- 🚀 REST API - Built-in HTTP server for external integrations
- 📡 Real-time endpoints - Chat, history, and status endpoints
- 🔧 Request logging - Configurable API request/response logging
- 📖 Auto-documentation - Interactive API documentation at root endpoint
📚 Library System
- 📁 Document collections - Organize files into searchable libraries
- 🔍 Advanced search - Search across all libraries with pattern matching
- 📊 Library stats - File counts, sizes, and modification dates
- 🎯 Selective loading - Load specific libraries or files into context
- 📁 Multi-format support - 15+ file formats automatically recognized
🔧 Advanced Features
- 🛠️ PMP Integration - Auto-install and use Prompt My Project for code analysis
- 🔄 Dynamic headers - Automatic browser session management
- 📱 Cross-platform - Linux, Windows, macOS support
⛓️ Command Chaining
- 🚀 Chain multiple commands - Execute a series of commands in a single line using
&& - 💡 Context accumulation - Combine context from files, URLs, and web searches
- 🗣️ Final prompt - Use
--to add a final prompt to the accumulated context for the AI to process
# Chain multiple commands to build a rich context before asking a question You: /url https://devbyben.fr/about && /search devbyben.fr twitter account && /file ~/Documents/my_notes.md -- Based on all this, write a summary.
🧠 Intelligent Features Deep Dive
📊 Session Analytics & Statistics
The CLI now tracks comprehensive real-time metrics:
- Performance Metrics: API call timing, success/failure rates, retry counts
- Content Analysis: Message counts, token estimation, context optimization savings
- Error Tracking: 418/429 error monitoring, VQD refresh rates, header refresh frequency
- Usage Patterns: Command usage statistics, model changes, file/URL processing
- Session Duration: Total time spent in the session, average response times
Commands:
/stats- View current session analytics anytime- Automatic display on
/exitwith detailed session summary
🎯 Smart Context Optimization
Automatically manages conversation context for optimal performance:
- Intelligent Compression: Compresses old context when approaching token limits
- Importance Scoring: Preserves critical information while removing redundant content
- Memory Efficiency: Reduces token usage by up to 40% while maintaining quality
- Configurable Thresholds: Customize optimization triggers and compression ratios
- Automatic Context Management: Automatically compresses and optimizes context as needed
💾 Persistent History Management
Never lose important conversations:
- Session Persistence: Automatically saves conversations with metadata
- Compression Storage: Efficient gzip compression reduces storage by 70%
- Session Recovery: Resume conversations from any previous session
- Intelligent Indexing: Fast search and retrieval of historical conversations
- Searchable Archive: Use
/historyto browse and search past conversations - Session Loading: Load previous sessions interactively or by ID with
/load
🤖 Available Models
| Model Name | Integration ID | Alias | Strength | Best For | Characteristics |
|---|---|---|---|---|---|
| GPT-4o mini | gpt-4o-mini | gpt-4o-mini | General purpose | Everyday questions | • Fast• Well-balanced |
| Claude 3 Haiku | claude-3-haiku-20240307 | claude-3-haiku | Creative writing | Explanations & summaries | • Clear responses• Concise |
| Llama 3.3 70B | meta-llama/Llama-3.3-70B-Instruct-Turbo | llama | Programming | Code-related tasks | • Technical precision• Detailed |
| Mistral Small | mistralai/Mistral-Small-24B-Instruct-2501 | mixtral | Knowledge & analysis | Complex topics | • Reasoning• Logic-focused |
| o4-mini | o4-mini | o4mini | Speed | Quick answers | • Very fast• Compact responses |
📦 Installation
🚀 1. Direct Download & Run
$exe="duckduckgo-chat-cli_windows_amd64.exe"; Invoke-WebRequest -Uri ((Invoke-RestMethod "https://api.github.com/repos/benoitpetit/duckduckGO-chat-cli/releases/latest").assets | Where-Object name -like "*windows_amd64.exe").browser_download_url -OutFile $exe; Start-Process -Wait -NoNewWindow -FilePath ".\$exe"
curl -LO $(curl -s https://api.github.com/repos/benoitpetit/duckduckGO-chat-cli/releases/latest | grep -oP 'https.*linux_amd64' | grep -oP 'https.*v[0-9]+\.[0-9]+\.[0-9]+_linux_amd64' | head -1) && chmod +x duckduckgo-chat-cli_v*_linux_amd64 && ./duckduckgo-chat-cli_v*_linux_amd64
curl -LO $(curl -s https://api.github.com/repos/benoitpetit/duckduckGO-chat-cli/releases/latest | grep -oP 'https.*darwin_arm64' | grep -oP 'https.*v[0-9]+\.[0-9]+\.[0-9]+_darwin_arm64' | head -1) && chmod +x duckduckgo-chat-cli_v*_darwin_arm64 && ./duckduckgo-chat-cli_v*_darwin_arm64
Intel (AMD64):
curl -LO $(curl -s https://api.github.com/repos/benoitpetit/duckduckGO-chat-cli/releases/latest | grep -oP 'https.*darwin_amd64' | grep -oP 'https.*v[0-9]+\.[0-9]+\.[0-9]+_darwin_amd64' | head -1) && chmod +x duckduckgo-chat-cli_v*_darwin_amd64 && ./duckduckgo-chat-cli_v*_darwin_amd64
🔨 2. Build from source
📋 Prerequisites:
- Go 1.21+ (
go version) - Chrome/Chromium 115+ (
chromium-browser --version)
git clone https://github.com/benoitpetit/duckduckGO-chat-cli cd duckduckGO-chat-cli ./scripts/build.sh
🎯 Usage
📖 Typical Workflow
# Chain multiple commands to build a rich context before asking a question You: /url https://devbyben.fr/about && /search devbyben.fr twitter account && /file ~/Documents/my_notes.md -- Based on all this, write a summary.
./duckduckgo-chat-cli_linux_amd64 Accept terms? [yes/no] yes Type /help to show available commands You: /search Go concurrency patterns -- What are the best practices? 🔍 Searching for: Go concurrency patterns ✅ Added 10 search results to the context Processing your request about the search results... You: /file main.go -- Explain this code and suggest improvements 📄 Adding file content: main.go ✅ Successfully added content from file: main.go Processing your request about the file... GPT-4o mini: Based on the search results about Go concurrency patterns and your code... [Detailed analysis follows] You: /stats 🧠 SESSION ANALYTICS SUMMARY ═══════════════════════════════════════════════════════════ 📊 Session Performance Duration: 8.5m | Messages: 6 | Avg Response: 1.1s API Success Rate: 100% (3/3 calls) ═══════════════════════════════════════════════════════════ You: /copy Choose what to copy: 1) Last Q&A exchange 2) Largest code block 3) Cancel Enter your choice: 2 ✅ Content copied to clipboard
# List and interactively select a previous session to restore You: /load # Or load a session directly by its ID You: /load 12345 # The chat context and history will be restored for continued conversation.
📝 Command Reference
| Command | Example | Description |
|---|---|---|
🔍 /search <query> [-- prompt] | /search machine learning -- What are the best practices? | Add search results as context and optionally process them with a prompt |
📁 /file <path> [-- prompt] | /file src/main.go -- Explain this code | Import file content as context and optionally analyze it with a prompt |
📚 /library [command] [args] | /library add /path/to/docs | Manage library directories for bulk file operations |
🌐 /url <link> [-- prompt] | /url github.com/golang -- Summarize this page | Add webpage content as context and optionally process it with a prompt |
📦 /pmp [path] [options] [-- prompt] | /pmp . -i "*.go" -e "test/*" | Generate structured project prompts with automatic PMP installation |
📝 /prompt or /prompt add <name> -- <prompt> | /prompt or /prompt add myprompt -- This is my prompt | Manage and load custom prompts. /prompt opens the interactive menu; subcommands are also available. |
📊 /stats ✨ | /stats | Show real-time session analytics and performance metrics |
📡 /api [port] | /api or /api 8080 | Start or stop the API server |
🤖 /model | /model or /model 2 | Change AI model (interactive) |
🧹 /clear | /clear | Reset conversation context (with session save) |
📤 /export | /export | Export content (interactive) |
📋 /copy | /copy | Copy to clipboard (interactive) |
📚 /history | /history | Display conversation history |
📚 /load [session_id] | /load or /load 12345 | Load and restore a previous session interactively or by ID |
⚙️ /config | /config | Modify configuration settings |
🏷️ /version | /version | Show version and system info |
🔄 /update | /update or /update --force | Update the CLI to the latest version |
❓ /help | /help | Show available commands |
🚪 /exit | /exit | Exit application (with analytics) |
📝 Prompt Management
/prompt: Open the interactive prompt management menu (list, add, edit, remove)/prompt list: List all saved prompts/prompt add <name> -- <prompt>: Add a new prompt/prompt edit <name> -- <prompt>: Edit an existing prompt/prompt remove <name>: Remove a prompt/prompt load <name>: Send the prompt content as a message to the model
Note:
/promptis not chainable and does not support chaining with&&. The--is only for separating the prompt text, not for chaining.
⚙️ Configuration
🎛️ Application Settings
| Option | Description | Default | Range |
|---|---|---|---|
DefaultModel | Starting AI model | gpt-4o-mini | 5 models available |
GlobalPrompt | System prompt always sent | "" | Any text |
ExportDir | Export directory | ~/Documents/duckchat | Any valid path |
ShowMenu | Display commands on start | true | true/false |
AnalyticsEnabled ✨ | Enable session analytics | true | true/false |
🔍 Search Settings
| Option | Description | Default | Range |
|---|---|---|---|
MaxResults | Results per search | 10 | 1-20 |
IncludeSnippet | Show result descriptions | true | true/false |
📚 Library Settings
| Option | Description | Default | Range |
|---|---|---|---|
Enabled | Enable library system | true | true/false |
Directories | List of library paths | [] | Array of paths |
📡 API Settings
| Option | Description | Default | Range |
|---|---|---|---|
Enabled | Enable API server | false | true/false |
Port | API server port | 8080 | Any valid port |
Autostart | Start API on app launch | false | true/false |
💡 Tip: Use
/configto modify these settings interactively.
🔄 Auto-Update System
The CLI includes an integrated update system that keeps your installation current:
📥 Update Features
- 🔍 Automatic Check: Checks for new versions every 24 hours at startup
- 🔐 SHA256 Verification: Verifies downloaded binaries for security
- 🎯 Cross-Platform: Works on Linux, Windows, and macOS
- ⚡ In-Place Update: Updates the current binary without changing location
- 🔄 Backup & Restore: Creates backups and restores on failure
🎯 Usage
# Check for updates and install (with confirmation) /update # Force update without confirmation /update --force # The CLI will also prompt you when updates are available: 🆕 A new version is available! Current: 1.1.9 Latest: 1.2.0 💡 Run '/update' to update to the latest version.
🔧 Update Process
- Detection: Detects your OS and architecture automatically
- Download: Downloads the correct binary from GitHub releases
- Verification: Verifies SHA256 checksum for security
- Installation: Replaces the current binary with the new version
- Restart: Prompts you to restart the CLI to use the new version
🛠️ Development & Contributing
🚀 Automated Release Process
This project uses GitHub Actions for automated building and releasing:
- Development: Work on the
masterbranch - Release: Create PR to
prodbranch to trigger automatic release - CI/CD: Automated testing, building, and publishing
📚 Development Documentation
- 🔧 CI/CD & Release Process - Complete GitHub Actions documentation
- 🔬 Reverse Engineering - Complete technical reverse engineering documentation
🚨 Troubleshooting
🔧 Connection Issues
If you encounter connection errors:
# Try clearing the conversation context to refresh security tokens /clear # Check your Chrome/Chromium installation chromium-browser --version # Enable debug mode DEBUG=true ./duckduckgo-chat-cli_linux_amd64 # View session analytics for debugging /stats
📜 License & Ethics
🛡️ Privacy & Responsibility
- Privacy First: This tool respects your privacy and stores no personal data
- Verify Information: Always verify critical information from AI responses
- Responsible Use: Use responsibly and in accordance with DuckDuckGo's terms
🔧 This is an unofficial client and not affiliated with or endorsed by DuckDuckGo
