Skip to main content

AI-powered terminal assistant that suggests or executes bash commands from natural language.

Project description

hai

A friendly shell assistant powered by LLMs

License: AGPL v3 Python 3.9+ Tests Coverage Code style: black

hai (pronounce like "hi") is a thin, context-aware wrapper around bash that brings natural language command generation directly to your terminal. Stop context-switching to look up git commands, bash syntax, or flagsโ€”just ask hai.

๐ŸŽฏ Quick Start

# Install (pipx recommended)
pipx install hai-sh
hai-install-shell

# Use directly
hai "show me files modified in the last 24 hours"

# Or with @hai prefix
@hai commit just README.md to main, I'm on feature-branch

# Or with keyboard shortcut - type your query then press Ctrl+X Ctrl+H
find large files in home directory
# Press Ctrl+X Ctrl+H

Example output:

โ”โ”โ” Conversation โ”โ”โ”
I'll search for files modified in the last 24 hours using find.

Confidence: 90% [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆยท]

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
โ”โ”โ” Execution โ”โ”โ”
$ find . -type f -mtime -1
./README.md
./src/app.py
./tests/test_app.py

โœจ Features

Core Capabilities

  • ๐ŸŽฏ Natural Language Interface: Just describe what you want in plain English
  • ๐Ÿ’ฌ Dual Mode Operation:
    • Command Mode: Generate and execute bash commands
    • Question Mode: Get answers to your terminal/bash questions without executing anything
  • ๐Ÿ”„ Dual-Layer Output: See both the AI's reasoning and the actual command
  • ๐ŸŒ Context-Aware: Automatically includes current directory, git state, and environment
  • ๐Ÿ”’ Privacy-First: Supports local Ollama modelsโ€”no API costs, data stays private
  • โŒจ๏ธ Multiple Invocation Methods:
    • Direct command: hai "query"
    • @hai prefix: @hai query
    • Keyboard shortcut: Ctrl+X Ctrl+H (customizable)
  • ๐ŸŽจ Smart Output Formatting: ANSI colors with auto-detection for pipes and terminals

LLM Provider Support

  • OpenAI: GPT-4, GPT-4o, GPT-4o-mini, GPT-3.5-turbo
  • Anthropic: Claude Opus 4.5, Claude Sonnet 4.5
  • Ollama: Local models (llama3.2, mistral, codellama, etc.) - recommended for daily use
  • Local Models: Custom GGUF model support

Shell Integration

  • Bash: Keyboard shortcuts and @hai prefix detection
  • Zsh: Full feature parity with bash
  • Auto-completion: Future roadmap item

Advanced Features

  • Confidence Scoring: Visual indicators show AI confidence (0-100%)
  • Multi-step Commands: Handles complex workflows with && chaining
  • Environment Preservation: Safe environment variable handling
  • Git Integration: Context-aware git operations
  • Comprehensive Testing: 576 tests, 92% coverage

๐Ÿš€ Status

Current Version: v0.1 (Pre-release)

hai follows an agile development approach with frequent version increments.

What's New (Updated: 2024-12-20)

v0.1 Documentation Release:

  • โœ… Complete installation guide (INSTALL.md)
  • โœ… Comprehensive configuration guide (CONFIGURATION.md)
  • โœ… 20+ usage examples and tutorial (USAGE.md)
  • โœ… Integration test suite with realistic use cases
  • โœ… Error messages and help system
  • โœ… ANSI color support with TTY detection
  • โœ… Dual-layer output formatter

Core Features (v0.1):

  • โœ… Command execution engine
  • โœ… Context gathering (cwd, git, env)
  • โœ… LLM providers (OpenAI, Anthropic, Ollama)
  • โœ… Shell integration (bash, zsh)
  • โœ… Configuration system
  • โœ… Output formatting

Roadmap

  • v0.1 โœ… - Proof of Concept: Basic invocation, LLM providers, dual-layer output
  • v0.2 ๐Ÿšง - Enhanced Context: History, session context, hybrid memory model
  • v0.3 ๐Ÿ“‹ - Smart Execution: Confidence scoring, auto-execute vs. confirm
  • v0.4 ๐Ÿ“‹ - Permissions Framework: Granular control over command execution
  • v0.5 ๐Ÿ“‹ - Error Handling: Automatic retry with model upgrade for debugging
  • v1.0 ๐Ÿ“‹ - Production Ready: Polished, tested, documented, secure

See ROADMAP.md for complete development plan.

๐Ÿ“ฆ Installation

Prerequisites

  • Python: 3.9 or higher
  • Shell: Bash 4.0+ or Zsh 5.0+
  • LLM Provider: OpenAI API key, Anthropic API key, or Ollama (local)

Quick Install

# Install via pipx (recommended)
pipx install hai-sh
hai-install-shell  # Install shell integration

# Or via pip
pip install hai-sh

# Verify installation
hai --version

Development Install

# Clone repository
git clone https://github.com/frankbria/hai-sh.git
cd hai-sh

# Using uv (recommended)
uv venv
source .venv/bin/activate
uv sync

# Run tests
pytest

Shell Integration Setup

For Bash:

# Add to ~/.bashrc
source ~/.hai/bash_integration.sh

For Zsh:

# Add to ~/.zshrc
source ~/.hai/zsh_integration.sh

Reload your shell:

source ~/.bashrc  # or ~/.zshrc

๐Ÿ“– Full installation guide: INSTALL.md

๐Ÿ”ง Configuration

Quick Setup

On first run, hai creates ~/.hai/config.yaml:

# Default: Use free local Ollama
provider: "ollama"
model: "llama3.2"

providers:
  # OpenAI (requires API key)
  openai:
    # Set OPENAI_API_KEY environment variable
    model: "gpt-4o-mini"

  # Anthropic (requires API key)
  anthropic:
    # Set ANTHROPIC_API_KEY environment variable
    model: "claude-sonnet-4-5"

  # Ollama (free, local)
  ollama:
    base_url: "http://localhost:11434"
    model: "llama3.2"

context:
  include_history: true
  include_git_state: true
  include_env_vars: true

output:
  show_conversation: true
  use_colors: true

Setting Up Ollama (Recommended)

Why Ollama?

  • โœ… Free (no API costs)
  • โœ… Private (data stays local)
  • โœ… Fast (no network latency)
  • โœ… Offline capable

Install Ollama:

# Linux
curl -fsSL https://ollama.com/install.sh | sh

# macOS
brew install ollama

# Start server
ollama serve

# Pull model
ollama pull llama3.2

Setting Up OpenAI

# Add to ~/.bashrc or ~/.zshrc
export OPENAI_API_KEY="sk-..."

# Update config
provider: "openai"

๐Ÿ“– Full configuration guide: CONFIGURATION.md

๐Ÿ“– Usage

Invocation Methods

1. Direct Command (Best for learning)

hai "find large files"
hai "show git status"
hai "what's taking up disk space?"

2. @hai Prefix (Best for daily use)

@hai list Python files modified today
@hai commit all changes with message 'Update docs'

3. Keyboard Shortcut (Best for speed)

# 1. Type your query
show me uncommitted git changes

# 2. Press Ctrl+X Ctrl+H
# 3. hai processes and suggests command

Example Queries

File Operations:

hai "find files larger than 100MB"
hai "show files modified in the last 24 hours"
hai "find all TypeScript files that import React"

Git Workflows:

hai "show uncommitted changes"
hai "create branch feature/auth and switch to it"
hai "show me what changed in the last commit"

System Information:

hai "what's using the most disk space?"
hai "show CPU and memory usage"
hai "find processes using port 8080"

Development Tasks:

hai "install Python dependencies from requirements.txt"
hai "run pytest with coverage"
hai "build Docker image and tag as latest"

Asking Questions (No Command Execution):

hai "What's the difference between ls -la and ls -lah?"
hai "How does git rebase work?"
hai "When should I use grep vs awk vs sed?"
hai "Explain what the -R flag does in chmod"
hai "Why would I use git merge instead of git rebase?"

๐Ÿ“– 20+ examples and tutorials: USAGE.md

๐ŸŽฏ Understanding Dual-Layer Output

hai operates in two modes automatically:

Command Mode (Action Requests)

When you request an action, hai shows both what the AI is thinking and what command it generates:

โ”โ”โ” Conversation โ”โ”โ”
I'll search for large files in your home directory and sort them by size.
The find command will look for files over 100MB, and du will show sizes in
human-readable format.

Confidence: 90% [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆยท]

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
โ”โ”โ” Execution โ”โ”โ”
$ find ~ -type f -size +100M -exec du -h {} + | sort -rh | head -20
1.2G    /home/user/videos/movie.mp4
856M    /home/user/downloads/ubuntu.iso
234M    /home/user/.cache/spotify/Data/1234.cache

Execute this command? [y/N/e(dit)]:

Question Mode (Informational Questions)

When you ask a question, hai provides a direct answer without generating a command:

$ hai "What's the difference between rm -rf and rm -r?"
Both commands remove directories recursively (-r flag), but there's an
important difference in the -f flag:

- rm -r: Recursive removal, prompts for confirmation on write-protected files
- rm -rf: Recursive removal with -f (force), suppresses all prompts

โš ๏ธ Use rm -rf with extreme caution! It will delete everything without asking.

Confidence: 98% [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆยท]

Benefits:

  • Learning: Understand what commands do and why
  • Transparency: See the AI's reasoning process
  • Confidence: Visual indicator shows reliability (0-100%)
  • Trust: Verify before executing (command mode)
  • Knowledge: Get answers without execution (question mode)

๐Ÿค Contributing

Contributions welcome! This project is in active development.

Development Setup

git clone https://github.com/frankbria/hai-sh.git
cd hai-sh
uv venv && source .venv/bin/activate
uv sync
pytest

Running Tests

# All tests
pytest

# With coverage
pytest --cov=hai_sh

# Specific category
pytest tests/unit/
pytest tests/integration/

Code Quality

# Format code
black hai_sh/ tests/

# Lint
ruff hai_sh/ tests/

Current Test Status

  • Total Tests: 576 (all passing โœ…)
  • Coverage: 92.18%
  • Unit Tests: 560
  • Integration Tests: 16

๐ŸŽฏ Design Philosophy

  1. Seamless Integration - Feel like a natural extension of bash
  2. Local-First - Support local/Ollama models for cost-effective daily use
  3. Safety - Clear permission boundaries, confidence-based execution
  4. Transparency - Always show what's happening (thinking + doing)
  5. Agile Evolution - Ship working increments frequently

๐Ÿ“š Documentation

  • INSTALL.md - Complete installation guide (792 lines)

    • Prerequisites and system requirements
    • pip and development installation
    • Shell integration (bash/zsh)
    • First-run configuration
    • Troubleshooting guide
  • CONFIGURATION.md - Configuration reference (1272 lines)

    • All configuration options explained
    • Provider setup (OpenAI, Anthropic, Ollama)
    • Context and output settings
    • 7 example configurations
    • Security best practices
  • USAGE.md - Usage guide and tutorial (1298 lines)

    • Getting started tutorial
    • 20+ example queries with output
    • Common workflows
    • Tips and best practices
    • Advanced usage patterns
  • PRD.md - Product requirements and vision

  • ROADMAP.md - Development roadmap and milestones

๐Ÿ”’ Security & Privacy

API Key Security

โœ… DO:

  • Store API keys in environment variables
  • Use chmod 600 on config files
  • Add config files to .gitignore

โŒ DON'T:

  • Commit API keys to git
  • Share config files with credentials
  • Use API keys in public repositories

Privacy-First Options

Use Ollama for complete privacy:

provider: "ollama"  # All data stays on your machine
context:
  include_history: false    # Don't send command history
  include_env_vars: false   # Don't send environment

๐Ÿงช Testing

hai includes comprehensive test coverage:

Test Categories

  • Unit Tests (560): Core functionality, edge cases, error handling
  • Integration Tests (16): End-to-end workflows with realistic use cases
    • Files modified in last 24 hours
    • TypeScript files importing React
    • Disk space analysis
    • Python venv setup
    • Git workflows

Test Infrastructure

  • Framework: pytest with pytest-cov
  • Mocking: MockLLMProvider for consistent testing
  • Coverage: 92.18% code coverage
  • CI/CD: Ready (workflows TBD)

๐Ÿ› Troubleshooting

Common Issues

Command not found:

# Add to PATH
export PATH="$HOME/.local/bin:$PATH"

Keyboard shortcut not working:

# Check integration
_hai_test_integration

# Reload shell
source ~/.bashrc

Ollama connection refused:

# Start Ollama server
ollama serve

# Pull model
ollama pull llama3.2

๐Ÿ“– Full troubleshooting guide: INSTALL.md

๐Ÿ“ License

This project is licensed under the GNU Affero General Public License v3.0 - see LICENSE for details.

๐Ÿ”— Links

๐Ÿ™ Inspiration & Credits

  • Built with a similar agile approach to parallel-cc
  • Inspired by the philosophy of making AI accessible and private
  • Thanks to the open-source community for tools like Ollama, pytest, and pydantic

๐Ÿ“Š Project Stats

  • Lines of Code: ~10,000+
  • Tests: 576 (100% passing)
  • Coverage: 92.18%
  • Documentation: 3,362 lines (INSTALL, CONFIGURATION, USAGE)
  • Python Version: 3.9+
  • License: AGPL-3.0

Status: ๐Ÿšง Under Active Development | v0.1 Pre-release

Say "hai" to your new shell assistant! ๐Ÿ‘‹

Ready to get started? โ†’ INSTALL.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hai_sh-0.1.0.tar.gz (75.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hai_sh-0.1.0-py3-none-any.whl (82.8 kB view details)

Uploaded Python 3

File details

Details for the file hai_sh-0.1.0.tar.gz.

File metadata

  • Download URL: hai_sh-0.1.0.tar.gz
  • Upload date:
  • Size: 75.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hai_sh-0.1.0.tar.gz
Algorithm Hash digest
SHA256 29fea628b0a4da659450baf57df4644f7717861bc5726bb95b50b3e58791108b
MD5 a2a43883057ab53bd78a50fd4ef9da33
BLAKE2b-256 01d1ed49f4daa74ed57c4662566d465e65780b17503379a01c4b94637718dda7

See more details on using hashes here.

File details

Details for the file hai_sh-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: hai_sh-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 82.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hai_sh-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cdd76ef1ef92cc54975c9de4d381e34258118b7d4acdad24a1dab24007f17f0f
MD5 f851e5bdefc006e59736a5a37b890afc
BLAKE2b-256 319512bcd5f31fe4777ed9ab95740545e2bd17d95460d7d26d46b1ceae3c5c5c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page