All notable changes to Shello CLI will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Update command: replace running exe via rename-then-move on Windows to avoid
[Errno 13] Permission deniedon locked executables
- Update command: guard
sys.argv[0]exe path lookup behindsys.frozencheck
- Tools: introduce tool registry and migrate to
ShelloToolBase
- Windows Update Permission Error: Fixed
/updatefailing with[Errno 13] Permission deniedon Windows when installed toWindowsAppsdirectory- Installer now redirects to
~/.shello_cli/shello.exe(already used for settings) instead of the protected stub path - Subsequent updates from that path work in-place with no permission issues
- One-time PATH addition required: add
%USERPROFILE%\.shello_clito your user PATH
- Installer now redirects to
- README Install Command: Updated Windows quick-install to use
~/.shello_cli/instead ofWindowsAppsto prevent the issue for new installs
- Session History: Full session recording and resume system
- Browse past conversations with interactive picker (
/history) - Resume any previous session — conversation context fully restored
- Delete individual sessions or clear all history (
/history delete,/history clear) - Lazy recording: session files only created when user sends first message
- Resumed sessions append to the original session file (no duplicates)
- Background storage pruning with configurable size limit (
session_history.max_storage_mb) - Session history can be disabled via
session_history.enabled: falsein settings - Bedrock tool-pair sanitization on restore to prevent ValidationException errors
- Browse past conversations with interactive picker (
- Welcome Banner: Added
/historycommand to the available commands list
0.5.2 - 2026-01-24
- Update Command in Frozen Executables: Fixed critical bug where
/updatecommand failed in PyInstaller-built executables with "Could not determine current version" error- Changed version detection from file-based reading to module import
- Now uses
import shello_cli; version = shello_cli.__version__instead of reading__init__.pyas a file - Works correctly in both development mode and frozen executables
- Updated all related tests to match new implementation
- Community Guidelines: Added CODE_OF_CONDUCT.md for community standards and expectations
0.5.1 - 2026-01-22
-
Self-Update System: Built-in update mechanism for keeping Shello CLI up-to-date
- Version checker component with semantic version comparison
- Platform detector for identifying OS and architecture
- Executable updater with atomic file replacement and backup/rollback
- Update manager orchestrating the complete update workflow
- GitHub release integration for fetching latest versions
- Automatic startup version check (configurable via settings)
/updatecommand for manual update checks and installation- Progress indicators and user-friendly update flow
-
Update Configuration: New UpdateConfig in settings
check_on_startup- Enable/disable automatic version checks at startup (default: true)auto_install- Automatically install updates without prompting (default: false)- Configurable via
~/.shello_cli/user-settings.yml
-
Agent Template: Enhanced system prompt with improved guidance
- Added working directory awareness and cd command usage examples
- Emphasized brevity and conciseness in responses
- Better examples for avoiding verbose summaries
-
Help Display: Updated to include
/updatecommand in available commands list -
Command Detection: Added
/updateto direct command detection for instant routing
- Documentation: Updated supported AI providers list to accurately reflect current capabilities
- packaging>=23.0: Added for robust semantic version comparison
- Update System Tests: Comprehensive test coverage for update functionality
- Unit tests for version checker, platform detector, executable updater, and update manager
- Integration tests for CLI update command and startup version check
- Mock-based testing for GitHub API interactions
- Edge case handling for network failures, permission errors, and invalid versions
- Atomic Updates: Safe update process with backup and rollback on failure
- Cross-Platform: Supports Windows (.exe), Linux, and macOS executables
- GitHub Integration: Fetches releases from GitHub API with proper error handling
- Semantic Versioning: Uses packaging library for accurate version comparison
- Non-Blocking: Startup check doesn't delay application launch
0.4.3 - 2026-01-16
- Python 3.13 Support: Added official support for Python 3.13
- Tool Naming: Renamed bash tool to
run_shell_commandfor better clarity and consistency - Version Display: Enhanced version display with improved formatting
- Command Detection: Enhanced input detection with comprehensive heuristics for better natural language vs command differentiation
- License: Updated license information
- Security: Added SECURITY.md policy file
- README: Enhanced readme with release and download badges
0.4.2 - 2026-01-14
- Stream Lifecycle Management: Handle missing messageStop events and improve stream lifecycle management
- Message Content Display: Improve message content display ordering and formatting
- Direct Command Execution: Remove trust evaluation from direct commands for faster execution
- Welcome Message: Remove AI-powered CLI banner text from welcome message for cleaner UI
- Live Display: Improve live display lifecycle management with comprehensive message processor tests
- Bash Tool Safety: Add explanation requirement to bash tool and simplify safety documentation
- Tool Execution: Add is_safe parameter to bash tool execution for better safety control
0.4.1 - 2026-01-07
- Stream Lifecycle Management: Handle missing messageStop events and improve stream lifecycle management
- Message Content Display: Improve message content display ordering and formatting
- Direct Command Execution: Remove trust evaluation from direct commands for faster execution
- Welcome Message: Remove AI-powered CLI banner text from welcome message for cleaner UI
- Live Display: Improve live display lifecycle management with comprehensive message processor tests
- Bash Tool Safety: Add explanation requirement to bash tool and simplify safety documentation
- Tool Execution: Add is_safe parameter to bash tool execution for better safety control
0.4.0 - 2026-01-06
-
Modular Settings Architecture: Separated internal patterns from user-changeable settings
patterns.py- Internal regex patterns and templates (NOT user-changeable)defaults.py- Default values for user-changeable settingssettings/module - Organized settings management with public API- Clean separation between code constants and user configuration
-
Settings Module Structure: New
shello_cli/settings/package__init__.py- Public API exports (SettingsManager, get_settings, get_api_key, etc.)models.py- Dataclasses for settings (ProviderConfig, OutputManagementConfig, CommandTrustConfig, UserSettings)serializers.py- YAML generation with helpful comments and documentationmanager.py- SettingsManager class with load/save/merge logic
-
YAML Configuration Format: User-friendly YAML with inline documentation
- Replaced JSON with YAML for better readability
- Inline comments explaining each setting
- Section headers for organization
- Examples for all optional settings
- Only configured values saved (rest use defaults)
-
Enhanced Setup Wizard: Generates well-documented settings file
- Creates
~/.shello_cli/user-settings.ymlwith all options as comments - Only saves values user explicitly configured
- Shows examples for optional settings (output_management, command_trust)
- Includes helpful documentation in generated file
- Creates
-
Configuration Management Commands: New CLI commands for settings
shello config- Display current configurationshello config --edit- Open settings in default editor ($EDITOR)shello config get <key>- Get specific setting value (supports dot notation)shello config set <key> <value>- Set specific setting value (supports dot notation)shello config reset- Reset settings to defaults with confirmation
-
Default Merging Strategy: Smart merging of user settings with defaults
- User only specifies values they want to override
- Missing values automatically filled from
defaults.py - Denylist is always additive (user patterns added to defaults for safety)
- Environment variables override file settings
-
Settings Validation: Graceful handling of invalid values
- Validates provider values (openai, bedrock)
- Validates approval_mode (user_driven, ai_driven)
- Falls back to defaults on invalid values
- Logs warnings for invalid configuration
-
File Security: Automatic secure file permissions
- Sets 0o600 (user-only read/write) on settings files
- Protects API keys and credentials
- Creates parent directories if needed
-
AWS Bedrock Integration: Full support for AWS Bedrock as an AI provider
- Anthropic Claude models (3.5 Sonnet, 3 Opus, 3 Sonnet)
- Amazon Nova models (Pro, Lite, Micro)
- Other Bedrock foundation models
- Multiple AWS credential methods (profile, explicit credentials, default chain)
- Environment variable support (AWS_REGION, AWS_PROFILE, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
-
Provider Configuration System: Modern provider configuration using ProviderConfig dataclass
-
Natural Language Detection: Fixed issue where natural language questions starting with command words (e.g., "which model are you using") were incorrectly executed as shell commands
- Added intelligent heuristics to distinguish between shell commands and natural language
- Commands like "which python" still execute directly as shell commands
- Questions like "which model are you using" now correctly route to AI
- Handles question patterns: "are you", "do you", "can you", "what is", etc.
- Special handling for ambiguous commands like "which" and "find"
- Question marks at the end with natural language context route to AI
- Validates Requirement 1.3: Natural language context routes to AI processing
- Separate configurations for OpenAI-compatible APIs and AWS Bedrock
- Support for multiple configured providers simultaneously
- Provider-specific settings (API keys, base URLs, AWS credentials, regions)
- Per-provider model lists and default models
-
Client Factory Pattern: Factory function for creating appropriate client based on provider
create_client()function inshello_cli/api/client_factory.py- Automatic client selection based on provider configuration
- Graceful error handling with helpful troubleshooting messages
- Support for boto3 import error detection
-
Runtime Provider Switching: Switch between providers during chat sessions
- New
/switchcommand in chat interface - Interactive provider selection menu
- Conversation history preservation across provider switches
- Automatic cache clearing and agent recreation
- Display confirmation with new provider and model
- New
-
Enhanced Setup Wizard: Interactive provider selection and configuration
- Provider selection menu (OpenAI-compatible API vs AWS Bedrock)
- OpenAI-compatible setup flow with API provider presets (OpenAI, OpenRouter, Custom)
- AWS Bedrock setup flow with credential method selection
- Support for configuring multiple providers
- Model suggestions based on selected provider
-
Environment Variable Support: All credentials support environment variable overrides
- OpenAI:
OPENAI_API_KEY - Bedrock:
AWS_REGION,AWS_PROFILE,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY - Environment variables take precedence over configuration files
- OpenAI:
- Trust Manager: Evaluates commands before execution through 5-step flow (Denylist → YOLO → Allowlist → AI Safety → Approval)
- Pattern Matcher: Supports exact match, wildcards (
git *), and regex (^git (status|log)$) - Approval Dialog: Interactive UI for command approval with keyboard controls (A/D)
- Default Allowlist: Safe commands execute automatically (ls, pwd, git status, cat, grep, etc.)
- Default Denylist: Dangerous commands require approval (rm -rf /, dd, mkfs, format, etc.)
- YOLO Mode: Bypass approval checks via config or
--yoloflag (still respects denylist) - AI Safety Integration: Required
is_safeparameter in bash tool for AI command evaluation - Configuration: Flexible trust settings in
~/.shello_cli/user-settings.jsonapproval_mode: "user_driven" (default) or "ai_driven"allowlist: User patterns replace defaultsdenylist: User patterns added to defaults (additive for safety)
-
Settings File Format: Migrated from JSON to YAML
~/.shello_cli/user-settings.json→~/.shello_cli/user-settings.yml- Backward compatibility maintained (old JSON files still work)
- Automatic migration on first run with new version
-
Constants Organization: Split
constants.pyinto focused modulespatterns.py- Internal patterns (COMMAND_PATTERNS, CONTENT_PATTERNS, etc.)defaults.py- User-changeable defaults (DEFAULT_CHAR_LIMITS, DEFAULT_STRATEGIES, etc.)- Updated all imports across codebase
-
Settings Manager Location: Moved to dedicated module
utils/settings_manager.py→settings/manager.py- Backward compatibility via re-exports from
utils/settings_manager.py - No breaking changes for existing code
-
Settings Manager: Extended with provider configuration support
- New
ProviderConfigdataclass for provider-specific settings openai_configandbedrock_configfields in UserSettings- Helper methods:
get_provider(),set_provider(),get_provider_config(),is_provider_configured(),get_available_providers() - Backward compatibility maintained for existing
get_api_key()andget_base_url()methods
- New
-
ShelloAgent: Refactored to use dependency injection
- Constructor now accepts
clientparameter instead of creating its own - Removed
api_key,base_url,modelparameters from constructor - Supports both ShelloClient and ShelloBedrockClient via Union type
- Cleaner separation of concerns
- Constructor now accepts
-
CLI Integration: Updated to use factory pattern and support provider switching
create_new_session()uses client factory- New
switch_provider()function for runtime switching - Enhanced error handling with provider-specific messages
/switchcommand added to chat loop
-
UI Renderer: Added
/switchcommand to help display
- Bash Tool: Added required
is_safeparameter, trust evaluation before execution - Direct Executor: Integrated with trust system for direct commands
- Settings Manager: New CommandTrustConfig with validation and safe defaults
- Tool Definitions: Updated bash tool description with SAFETY section
-
Comprehensive Test Coverage: 400+ tests for settings system
- Settings loading and merging with defaults
- YAML serialization with comments
- Configuration validation and fallback
- File permissions and security
- Environment variable overrides
- Dot notation for get/set commands
-
Property-Based Tests: Formal correctness validation
- Property 1: Settings Round-Trip (serialize → deserialize produces equivalent settings)
- Property 2: Default Merging (partial settings filled with defaults)
- Property 3: Denylist Immutability (user denylist always includes defaults)
- Property 4: Environment Variable Fallback (env vars used when config missing)
- Property 5: Singleton Identity (all get_instance() calls return same object)
-
Client Factory Tests: 542 lines of comprehensive tests
- Test creating ShelloClient for OpenAI provider
- Test creating ShelloBedrockClient for Bedrock provider
- Test error handling for invalid providers and missing configuration
- Test boto3 import error handling
-
Settings Manager Tests: Extended with provider configuration tests
- Test loading settings with different providers
- Test provider config resolution with environment variables
- Test available providers detection
- 550+ tests covering pattern matching, trust evaluation, configuration, and integration
- 8 property-based tests validating correctness properties
-
README Updates: Configuration section rewritten
- New "Configuration Management" section with CLI commands
- YAML configuration examples with inline comments
- Explanation of default merging strategy
- Updated all JSON examples to YAML
-
DEVELOPMENT_SETUP.md Updates: Comprehensive developer documentation
- New CLI commands section (config --edit, get, set, reset)
- YAML configuration format with examples
- Updated configuration hierarchy with defaults.py
- Project structure showing new settings/ module
- Updated troubleshooting for YAML validation
-
Design Documentation: Complete design document
- Architecture overview with file responsibilities
- Data flow diagrams (loading and saving)
- Example generated user-settings.yml
- Correctness properties with validation strategy
- Error handling and testing strategy
-
README Updates: Comprehensive multi-provider documentation
- New "AI Provider Support" section with provider overview
- Runtime provider switching examples and workflow
- Environment variable documentation for all providers
- Configuration examples for OpenAI, Bedrock, and multiple providers
- Updated commands section with
/switchcommand
-
DEVELOPMENT_SETUP.md Updates: Developer-focused provider documentation
- Provider-specific configuration examples
- Multiple provider setup instructions
- Environment variable configuration for all providers
- Updated troubleshooting section with provider-specific errors
- Updated project structure showing new files
-
requirements.txt: Added boto3 with optional dependency comment
- Marked as optional dependency for AWS Bedrock support
- Installation instructions for users who only need OpenAI-compatible APIs
- Comprehensive README section on Command Trust and Safety
- Enhanced inline documentation with examples
- Complete design document with architecture and evaluation flow
-
Modular Architecture: Clean separation of concerns
- Settings models (dataclasses)
- Serialization logic (YAML with comments)
- Management logic (load/save/merge)
- Public API (convenience functions)
-
Type Safety: Full type hints throughout
- Dataclasses for all settings structures
- Optional fields with proper defaults
- Type-safe merging and validation
-
Backward Compatibility: Zero breaking changes
- Old JSON files still work
- Existing imports continue to work via re-exports
- Automatic migration path
-
Security First: Secure by default
- Automatic file permissions (0o600)
- No credentials in error messages
- Environment variable support for sensitive data
- Modular Provider System: Clean separation with client factory pattern
- Type Safety: Union types for client interfaces, full type hints
- Backward Compatibility: Existing OpenAI configurations continue to work
- Graceful Degradation: Helpful error messages when boto3 is not installed
- Zero Breaking Changes: Existing users can continue using OpenAI without changes
- Protection against dangerous commands with denylist
- Audit logging of all trust decisions
- Safe defaults on errors or invalid configuration
0.3.0 - 2026-01-04
-
Command Detection System: Automatically detects and routes direct shell commands vs AI queries
- Recognizes common Unix commands (ls, pwd, cd, cat, grep, find, etc.)
- Recognizes Windows commands (dir, cls, type, copy, del, etc.)
- Routes recognized commands directly to shell without AI processing
- Falls back to AI for natural language queries and complex requests
-
Direct Executor: Fast command execution without AI overhead
- Executes commands directly in current shell environment
- Maintains directory state across commands (cd persistence)
- Automatic shell detection (bash, PowerShell, cmd)
- Real-time output streaming
- Integrated with output caching system
- 30-second timeout for safety
-
Context Manager: Tracks direct command history for AI awareness
- Records last 10 direct commands with output
- Provides context to AI when switching from direct to AI mode
- Includes cache IDs for AI to retrieve full output
- Marks commands as sent to avoid duplicate context
- Clears on /new command
-
Enhanced Prompt: Directory-aware prompt display
- Shows current working directory in prompt
- Abbreviates home directory as ~
- Truncates long paths for readability (40 char max)
- Color-coded path display (orange)
- Updates dynamically as directory changes
-
Direct Command UI: Clean rendering for direct command execution
- Terminal-style header without AI branding
- Shows user@hostname and current directory
- Command prompt with $ indicator
- Distinguishes direct execution from AI-processed commands
-
Cache System Improvements:
- Removed TTL expiration - cache persists for entire conversation
- Increased cache size from 10MB to 100MB
- Cache cleared only on /new command or app exit
- Counter resets on new conversation for clean cache IDs
- Updated all references to remove expiration mentions
-
PowerShell Output Handling:
- Strips trailing whitespace from each line (removes column padding)
- Reduces character count by 2-3x for PowerShell commands
- Preserves output structure and readability
- Applied consistently across bash_tool and direct_executor
-
Tool Result Metadata:
- Added truncation metadata to tool results sent to AI
- Includes cache_id, total_chars, shown_chars, total_lines, shown_lines
- AI can see truncation status and make informed decisions
- Enables smarter use of get_cached_output tool
-
API Debug Logging:
- Added detailed HTTP request/response logging for OpenAI API
- Logs full message content, tool calls, and parameters
- Shows token usage and model information
- Helps debug tool calling and prompt issues
- Enabled via debug flag in ShelloClient
-
Agent Cache Management:
- Added clear_cache() method to ShelloAgent
- Automatically clears cache on /new command
- Clears cache on Ctrl+C exit
- Provides get_bash_tool() for shared caching with direct executor
-
Direct Command Execution Tests: 233 tests for direct executor
- Command execution across different shells
- Directory change handling
- Error handling and timeouts
- Output caching integration
-
Command Detection Tests: 201 tests for command detector
- Direct command recognition
- AI query detection
- Edge cases and empty input
-
Context Manager Tests: 241 tests for context management
- Command recording and history
- AI context generation
- History limits and clearing
-
Cache Sequential ID Tests: 193 tests for cache ID generation
- Sequential ID generation
- Counter reset on clear
- LRU eviction behavior
-
CLI Integration Tests: 119 tests for end-to-end workflows
- Direct command execution flow
- AI query routing
- Context switching
-
User Input Tests: 235 tests for prompt display
- Directory abbreviation
- Path truncation
- Prompt formatting
-
Output Utils Tests: 106 tests for PowerShell padding removal
- Line padding stripping
- Structure preservation
- Edge cases
- Modular Command System: New commands/ submodule with clean separation
- command_detector.py - Input classification
- direct_executor.py - Direct command execution
- context_manager.py - History and context tracking
- Shared Caching: Direct executor and bash_tool share same cache instance
- Zero Latency: Direct commands execute immediately without API calls
- Seamless Integration: Transparent switching between direct and AI modes
0.2.0 - 2026-01-03
-
Character-Based Truncation: Intelligent output limits based on character count (5K-20K) instead of arbitrary line counts
- List commands: 5,000 chars (~1.2K tokens)
- Search results: 10,000 chars (~2.5K tokens)
- Log files: 15,000 chars (~3.7K tokens)
- JSON output: 20,000 chars (~5K tokens)
- Install/Build commands: 8,000 chars (~2K tokens)
- Test commands: 15,000 chars (~3.7K tokens)
- Safety limit: 50,000 chars (hard maximum)
-
Smart Truncation Strategies: Different strategies for different command types
- FIRST_ONLY: List and search commands (show beginning where results start)
- LAST_ONLY: Log commands (show end with most recent entries)
- FIRST_LAST: Install/build/test commands (20% first + 80% last to see both setup and results)
- Automatic JSON analysis for large JSON outputs
-
Output Caching System:
- Sequential cache IDs (cmd_001, cmd_002, cmd_003...)
- 5-minute TTL with LRU eviction
- 10MB maximum cache size
- Full output always cached for later retrieval
-
Get Cached Output Tool: New AI tool for retrieving specific sections from cached output
lines="+N"- First N lineslines="-N"- Last N lineslines="+N,-M"- First N + last M lineslines="N-M"- Lines N through M (1-indexed)- Full output retrieval with safety limit
-
Semantic Truncation: Intelligent line importance classification
- CRITICAL: Errors, failures, exceptions, fatal messages
- HIGH: Warnings, success messages, summaries
- MEDIUM: Test results, status indicators
- Critical lines always visible regardless of position in output
- Adjusts truncation budget to preserve important information
-
Progress Bar Compression: Automatic detection and compression of repetitive progress output
- Detects percentage indicators, progress bars, spinner characters
- Keeps only final state of each progress sequence
- Saves hundreds of lines in install/build commands
- Compression happens before character counting
-
Enhanced JSON Handling:
- Automatic json_analyzer_tool invocation for JSON >20K chars
- Returns jq paths showing structure instead of raw JSON
- Raw JSON cached for retrieval via get_cached_output
- Graceful fallback to text truncation if JSON parsing fails
-
Truncation Summary: Comprehensive summary appended to truncated output
- Total vs shown characters and lines
- Strategy used (FIRST_ONLY, LAST_ONLY, FIRST_LAST)
- Optimizations applied (compression, semantic)
- Cache ID with expiration time
- Suggestion for get_cached_output with appropriate line range
-
Type Detection System: Automatic detection of output type from command and content
- Command pattern matching (npm install, pytest, docker logs, etc.)
- Content pattern matching (JSON structure, test results, build output)
- Content detection takes precedence over command detection
-
Streaming Output Enhancement:
- User sees output streaming normally in real-time
- AI receives truncated result with summary at end
- Full output accumulated and cached in background
- No interruption to user experience
-
Settings Manager Update: Enhanced configuration support for output management
- Configurable character limits per output type
- Configurable truncation strategies
- Semantic analysis toggle
- Progress bar compression toggle
- Cache settings (TTL, max size)
-
Output Manager Architecture: Complete rewrite with modular design
- Replaced monolithic output_manager.py with output/ submodule
- Separate modules: cache.py, type_detector.py, truncator.py, semantic.py, compressor.py, manager.py
- Clean separation of concerns and testability
- Type-safe with comprehensive dataclasses
-
Bash Tool Integration: Updated to use new output management system
- Shared OutputCache instance across tools
- Automatic caching of all command output
- Integration with truncation and summary generation
-
Tool Executor: Enhanced to share output cache across all tools
- Single cache instance for entire session
- Consistent cache IDs across tool invocations
-
System Prompt: Updated with concise output management guidance
- Character limits and strategies
- Cache retrieval examples
- JSON handling behavior
- Best practices for filtering at source
- Deprecated Output Manager: Removed old line-based output_manager.py
- Old Tests: Removed test_output_manager.py (replaced with comprehensive new test suite)
- Comprehensive Test Suite: 105+ tests for output management
- Unit tests for all components (cache, detector, truncator, semantic, compressor)
- Property-based tests using Hypothesis library (100+ iterations per property)
- Integration tests for end-to-end workflows
- 8 formal correctness properties validated:
- Character Limit Enforcement
- Line Boundary Preservation
- Cache Round-Trip
- Semantic Critical Preservation
- Progress Bar Compression Idempotence
- Type Detection Consistency
- JSON Analyzer Fallback
- Summary Completeness
- Modular Architecture: Clean separation with output/ submodule
- Type Safety: Full type hints and dataclass models throughout
- Property-Based Testing: Formal correctness guarantees via Hypothesis
- Zero Data Loss: Full output always cached, retrieve any section on demand
- Performance: LRU cache with efficient eviction, minimal overhead on streaming
- Updated README with unique features and technical highlights
- Comprehensive design document (.kiro/specs/output-management/design.md)
- Detailed requirements document with EARS patterns
- Implementation tasks with property-based testing strategy
0.1.0 - 2026-01-02
- AI-Powered Chat Interface: Interactive conversational AI assistant with streaming responses
- Command Execution: Execute shell commands directly through AI with real-time output streaming
- Multi-Platform Support: Native support for Windows (cmd, PowerShell, Git Bash), Linux, and macOS
- OpenAI-Compatible API Integration: Works with OpenAI, OpenRouter, LM Studio, Ollama, and any OpenAI-compatible endpoint
- Bash Tool: Execute shell commands with automatic shell detection (bash, PowerShell, cmd)
- Real-time command output streaming
- Working directory persistence across commands
- Support for cd command with state management
- Cross-platform command execution
- JSON Analyzer Tool: Analyze JSON output structure from commands
- Automatic jq path generation
- Prevents terminal flooding from large JSON responses
- Helps discover data structure before filtering
- Output Management: Smart output truncation to prevent terminal flooding
- Configurable output size limits
- Automatic truncation warnings
- Streaming output support
- Rich Terminal UI: Beautiful terminal interface powered by Rich library
- Syntax highlighting for code blocks
- Custom markdown rendering
- Colored output and formatting
- Welcome banner with system information
- Interactive Commands:
/quitor/exit- Exit the application/new- Start a new conversation/help- Display help and shortcuts/about- Display about information
- CLI Commands:
shelloorshello chat- Start chat sessionshello config- Show current configurationshello --version- Display version information
- Flexible Configuration System:
- Global user settings:
~/.shello_cli/user-settings.json - Project-specific settings:
.shello/settings.json - Environment variable support
- Global user settings:
- Custom Instructions: Support for custom AI instructions via
.shello/SHELLO.md - Multi-Model Support: Configure and switch between different AI models
- API Configuration: Customizable API endpoints and authentication
- Conversation History: Persistent chat history within sessions
- Context Awareness: AI maintains context across multiple interactions
- Tool Call Tracking: Complete tracking of tool executions and results
- System Information Integration: Automatic detection of OS, shell, working directory, and timestamp
- Modular Architecture:
- Separate modules for agent, API, chat, commands, tools, UI, and utilities
- Clean separation of concerns
- Extensible tool system
- Comprehensive Testing: Test suite with pytest
- Build System: Automated build scripts for creating standalone executables
- PyInstaller integration
- Platform-specific build scripts (build.bat, build.sh)
- Automated GitHub Actions workflow for releases
- Standalone Executables: Pre-built binaries for Windows, Linux, and macOS
- Easy Installation: Multiple installation methods
- Download pre-built executables
- Install from source
- Add to system PATH
- GitHub Releases: Automated release workflow with CI/CD
- Comprehensive README with quick start guide
- Detailed setup instructions (SETUP.md)
- Build instructions (BUILD_INSTRUCTIONS.md)
- Contributing guidelines (CONTRIBUTING.md)
- Multiple technical documentation files in doc/ directory
- Python 3.11+ required
- Dependencies: Click (CLI), Rich (UI), OpenAI client library
- Shell Detection: Automatic detection of bash, PowerShell, cmd, and Git Bash
- Streaming Architecture: Real-time streaming for both AI responses and command output
- Error Handling: Comprehensive error handling with user-friendly messages
- Cross-Platform Paths: Proper path handling for Windows and Unix-like systems
This is the initial release of Shello CLI. While fully functional, expect improvements and potential breaking changes before v1.0.0. Feedback and contributions are welcome!