xenodium/chatgpt-shell

A multi-llm Emacs shell (ChatGPT, Claude, DeepSeek, Gemini, Kagi, Ollama, Perplexity) + editing integrations

What it solves

chatgpt-shell is an Emacs package that provides a shell-like interface for interacting with various Large Language Models (LLMs). It eliminates the need to switch between browser tabs and your editor, allowing you to query models like ChatGPT, Claude, Gemini, and others directly within Emacs buffers.

How it works

The project implements a comint shell, which means it integrates with Emacs's native shell prompt experience. It uses curl to send requests to various API endpoints (OpenAI, Anthropic, Google, DeepSeek, etc.) and supports streaming responses for a more responsive feel. Users can switch between different LLM providers and models using a single shell session.

Who it’s for

Emacs users who want a deep integration of AI assistance within their editor, specifically those who prefer a shell-based workflow and the same keybindings they are used to in Emacs shells.

Highlights

  • Multi-model support: Access OpenAI, Anthropic, Claude, Gemini, DeepSeek, Ollama (local), OpenRouter, and Perplexity from one interface.
  • Compose buffer: A dedicated editable buffer for crafting complex queries, featuring shortcuts for replying, requesting more data, or requesting full code snippets.
  • Code execution: Integrates with org-babel to execute source blocks returned by the LLM directly within the shell.
  • Transient menu: A quick-access overlay menu for common actions like refactoring code, writing git commits, or describing images.
  • Vision capabilities: Support for image queries (currently ChatGPT only) to describe images or extract text/vocabulary from them.
  • Session management: Ability to save and restore session transcripts for later use.

Related

  • Project
  • Project
  • Project
  • Project
  • Project