Skip to content

A terminal-based chat application using OpenAI, DeepSeek, Anthropic, Gemini, and Groq

Notifications You must be signed in to change notification settings

Tedfulk/goatmeal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Goatmeal - Terminal AI Chat & Web Search

Goatmeal is a powerful terminal-based application that provides access to various AI chat providers and web search capabilities, all within your terminal.

Screen.Recording.2025-02-11.at.10.22.57.AM.mov

Features

  • Multiple AI Providers Support
    • OpenAI
    • Anthropic
    • Gemini
    • Deepseek
    • Groq
  • Web Search Integration
    • Tavily search with domain filtering
    • Markdown-formatted search results
    • Answer summaries for relevant queries
  • User-Friendly Terminal UI
    • Built with Bubble Tea and Bubbles
    • Beautiful styling with Lipgloss
    • Markdown rendering with Glamour
    • Multiple theme options
  • Conversation Management
    • SQLite-based conversation storage
    • 30-day retention policy
    • Easy conversation browsing
    • Support for both chat and search conversations
  • Configuration
    • YAML-based configuration
    • Secure API key storage
    • Customizable system prompts
    • Model selection per provider
  • Help System
    • Built-in keyboard shortcut reference
    • Quick access with ctrl+h

Installation

go install github.com/tedfulk/[email protected]

Configuration

On first run, Goatmeal will guide you through the setup process. You'll need to provide API keys for the services you want to use.

Configuration is stored in ~/.config/goatmeal/config.yaml:

api_keys:
  openai: your-api-key
  anthropic: your-api-key
  gemini: your-api-key
  deepseek: your-api-key
  groq: your-api-key
  tavily: your-api-key
current_model: llama-3.3-70b-versatile
current_provider: groq
current_system_prompt: You are a helpful AI assistant.
settings:
    outputglamour: true
    conversationretention: 30
    theme:
        name: Default
    username: teddy
system_prompts:
    - content: You are a helpful AI assistant.
      title: General

Usage

Keyboard Shortcuts

  • ctrl+t: Start a new conversation
  • ctrl+l: View conversation list
  • ctrl+s: Open settings menu
  • ctrl+h: View help
  • ctrl+c: Quit application
  • esc: Go back/close current view

Chat Interface

  • ?: Toggle menu
  • /web query: Search for information
  • /web query +domain.com: Search with specific domain
  • /webe query: Enhanced web search with AI optimization
  • /webe query +domain.com: Enhanced domain-specific search
  • enter: Send message
  • /o[n]: Open message number 'n' in editor (e.g., /o1)
  • /c[n]: Copy message number 'n' to clipboard (e.g., /c1)
  • /b[n]: Copy code block number 'n' to clipboard (e.g., /b1)
  • /s[n]: Speak message number 'n' using system TTS (e.g., /s1)
  • ctrl+q: Stop current speech playback

Enhanced Search

The enhanced search mode (🔍+) uses AI to optimize your search queries for better results. When using /webe:

Examples:

  • Basic: /web what's the latest news in the quantum computing?
  • Enhanced: /webe what's the latest news in the quantum computing? gets transformed into something like Recent breakthroughs in quantum computing 2024-2025 including, advancements in quantum processors algorithms and applications from reputable sources like research, journals and tech news.
    • Gets transformed into a more specific query including location and time context
  • Domain-specific: /webe python tutorials +python.org
    • Enhanced query limited to python.org domain

Conversation List

  • tab: Switch focus between list and messages
  • ctrl+d: Delete selected conversation
  • ctrl+e: Export conversation as JSON (saves to ~/Downloads)
  • esc: Return to chat

Dependencies

Linux

For text-to-speech functionality on Linux, you'll need to install espeak:

# Ubuntu/Debian
sudo apt-get install espeak

# Fedora
sudo dnf install espeak

# Arch Linux
sudo pacman -S espeak

macOS

Text-to-speech is supported out of the box using the built-in say command.

Text Selection in Terminal

When using Goatmeal, there are two ways to select and copy text:

  1. Using Option Key (Recommended):

    • Hold the Option (⌥) key while selecting text
    • This temporarily disables mouse reporting without affecting app functionality
    • Release Option to restore normal mouse interaction
  2. Toggle Mouse Reporting:

    • Press ⌘⇧M to temporarily disable mouse reporting
    • Select text normally
    • Press ⌘⇧M again to re-enable mouse reporting

Note: Mouse reporting is required for proper UI interaction (scrolling, clicking, etc). Completely disabling it will impair application functionality.

About

A terminal-based chat application using OpenAI, DeepSeek, Anthropic, Gemini, and Groq

Resources

Stars

Watchers

Forks

Packages

No packages published