gptel logo

gptel

★★★★ 4.4/5
Visit site
Category
Coding
Pricing
Free

Quick Verdict

gptel is an actively maintained LLM client built around Emacs workflows, not a vague label for an “Emacs AI ecosystem” and not a wrapper for one model vendor. The current stable release is v0.9.9.5 under GPL-3.0. It can send requests from ordinary buffers, shells, the minibuffer, or dedicated chat buffers; save conversations as Org, Markdown, or text files; and support multiple backends, multimodal context, tools, MCP, request inspection, and Elisp automation. It is a strong native option for established Emacs users who want to control their model and context. People who do not use Emacs or need hosted accounts, consolidated billing, enterprise administration, and vendor support should choose a different client.

There are two separate cost and trust layers. The gptel package is free, while cloud APIs, ChatGPT or Copilot subscriptions, and local inference hardware are not. A local chat file does not guarantee local processing: once a file is attached, its selected content goes to the active backend. Tools and MCP can also let a model request function execution. Version 0.9.9.5 adds tool-call inspection and hooks and sends Curl authentication keys through standard input rather than command-line arguments, but users still own key storage, file scope, and tool permissions.

Best For

  • Established Emacs users who want AI to follow buffer, Org, and Elisp conventions.
  • Developers switching among cloud APIs, subscription backends, and local inference without committing to one model provider.
  • Advanced users willing to inspect outbound context, secure API keys, and define confirmation rules for file tools or MCP.
  • People building custom LLM commands, Org workflows, and reproducible text-based sessions.
  • Not ideal for users who want a zero-configuration IDE agent, centralized seat management, a commercial SLA, or no Emacs maintenance.

Key Features

  • Use from any buffer: Ask questions beside code, Org documents, terminal output, or scratch text, or open a dedicated chat with streaming responses.
  • Multiple backends: Connect OpenAI, Anthropic, Gemini, Azure, Bedrock, GitHub Copilot, OpenRouter, DeepSeek, and other services, or local endpoints such as Ollama, llama.cpp, GPT4All, and Open WebUI.
  • File-based conversations: Save, edit, version, and resume chats as normal files. Local storage of the transcript does not change where the selected backend processes requests.
  • Context and rewriting: Attach regions, buffers, files, images, and documents or rewrite and refactor in place. Request inspection helps catch accidental inclusion of a whole buffer.
  • Tools and MCP: Define Elisp tools and integrate MCP through mcp.el. In v0.9.9.5, pending calls can be inspected and edited, while pre- and post-call hooks can block, alter, log, or short-circuit an action.
  • Composable API: gptel-request, presets, and hooks support custom commands. The current release also adds OpenAI Responses API support and token-usage displays, but not normalized currency costs across providers.

Use Cases

For coding, a user can select one function for explanation or refactoring and attach only the tests and error output needed, rather than sending an entire repository. For research and writing, a conversation can live in an Org file, be corrected manually, and continue from the edited record. For model evaluation, the same prompt can run against several backends to compare output, latency, and token use. When tools are enabled, start with read-only project lookup. File writes, shell execution, external publishing, and deletion should require per-call confirmation with arguments, results, and failures retained in an audit trail.

Pricing

ComponentCostBoundary
gptel v0.9.9.5FreeGPL-3.0 Emacs package available through GNU/NonGNU ELPA and compatible package sources
Cloud API backendProvider pricingInput, output, caching, and tool charges go directly to the provider
Subscription backendProvider subscriptionGitHub Copilot or supported ChatGPT login access follows the relevant plan and terms
Local backendSoftware may be freeMemory, GPU, electricity, model storage, and maintenance still cost money

Version 0.9.9.5 no longer pre-registers a fixed backend and model by default. A ChatGPT backend can still be created on demand for an unconfigured first send, but durable configurations should be explicit. Upgraders should also review breaking changes around tool-result inclusion, reasoning handling, and custom backend functions.

Pros

  • Native fit with Emacs buffers, Org, Elisp, and ordinary text files.
  • Broad backend choice across cloud subscriptions, APIs, and local inference.
  • Editable, portable, versionable chat history rather than a closed transcript format.
  • Request introspection, tool inspection, hooks, and confirmation provide useful control points.
  • GPL client with active maintenance and no seat charge at the software layer.

Cons

  • Value depends heavily on Emacs fluency; it is a poor reason to learn Emacs from scratch.
  • It is a client, so output quality, service availability, privacy, and usage cost come from the backend.
  • Incorrect file-context, Elisp-tool, or MCP permissions can still expose data or perform harmful actions.
  • Token reporting does not replace cross-provider currency budgets and billing controls.
  • A community project does not provide a commercial SLA, and releases can contain breaking changes.

Alternatives

ToolBetter fitMain difference
Claude CodeTerminal agents and repository-level tasksMore autonomous coding flow with tighter model-service coupling
GitHub CopilotMainstream IDEs, enterprise seats, and completionBroader managed IDE coverage, less Emacs composability
CursorAn out-of-the-box AI-native IDEMore visual multi-file editing but requires changing editors
OllamaRunning local models and serving an APIAn inference backend rather than the Emacs interaction layer

FAQ

Does gptel itself cost money?

No. gptel is GPL-3.0 software. Cloud APIs, subscription backends, and local hardware are separate user expenses.

Is gptel only for programming?

No. It works in any buffer for writing, summarization, translation, research, and chat. It is categorized here as a coding tool because Emacs integration and tool use are especially relevant to development.

Does attaching a file keep everything local?

Only a local backend can keep inference local. With a cloud backend, selected text, files, or media are sent to that provider and must follow organizational data policy.

Are gptel tools and MCP safe by default?

gptel provides inspection, confirmation, and hooks, but it does not design least privilege for you. Writes, shell execution, external sends, and deletion need allowlists, human confirmation, sandboxing, and logs.

Where should API keys be stored?

Prefer auth-source, protected encrypted credentials, or a function that reads the environment. Do not commit plaintext secrets in Emacs configuration. Version 0.9.9.5 reduces Curl process-list exposure but cannot prevent a leaked static config.

What should I check before upgrading to v0.9.9.5?

Review the nil default backend and model, reasoning defaults, tool-result inclusion, custom backend API changes, and tool argument format. Run a small regression against production configuration first.

Bottom Line

gptel is more than a chat sidebar for Emacs: it turns model requests, context, tools, and conversations into inspectable, saveable, programmable Emacs objects. That makes it a much more accurate canonical entry than “Emacs AI.” Start with a low-risk backend and nonsensitive files, verify request inspection, rewriting, and session recovery, then enable read-only tools before considering writes or MCP actions. Providers operate the inference service, maintainers own the client code, and the user remains responsible for keys, file scope, tool authority, and every accepted change.

Last updated: July 21, 2026

Related tools