Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Client for IRC in Emacs
Emacs Lisp Shell
Pull request Compare This branch is 2 commits behind jorgenschaefer:master.
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
images Add a screenshot to the README.
scripts Remove scripts/release
tests Terminate a CAP negotiation without shared capabilities.
.bumpversion.cfg Bump version: 1.6 → 2.0
.gitignore Clean up package.
.travis.yml Use new Travis infrastructure Add Add
Cask Depend on cl-lib
LICENSE Major cleanup to make releases possible. Update for 2.1 Mention TLS problem in the README Add
circe-chanop.el Move all files to GPLv3+.
circe-color-nicks.el Move all files to GPLv3+.
circe-compat.el Fix a number of compiler warnings
circe-highlight-all-nicks.el Move all files to GPLv3+.
circe-lagmon.el Move all files to GPLv3+.
circe-new-day-notifier.el Implement a new day notifier extension.
circe-pkg.el Add URL meta-data to package file
circe.el Deduplicate network names before calling completion
irc.el Document how to disable nick regaining.
lcs.el Use bumpversion for version tracking.
lui-autopaste.el Clean up package.
lui-format.el lui-format: Do not error on missing index arguments.
lui-irc-colors.el Tighten up code, ensure nil isn't added as face
lui-logging.el Move all files to GPLv3+.
lui.el Allow buttons to be clicked with <mouse-1>
make-tls-process.el Mention TLS problem in the README
shorten.el Remove some old repository paths.
tracking.el Use force-mode-line-update in tracking

Circe, a Client for IRC in Emacs

Build Status MELPA Stable



Circe is a Client for IRC in Emacs. It tries to have sane defaults, and integrates well with the rest of the editor, using standard Emacs key bindings and indicating activity in channels in the status bar so it stays out of your way unless you want to use it.

Complexity-wise, it is somewhere between rcirc (very minimal) and ERC (very complex).





Make sure you have MELPA Stable added to your package sources. To your .emacs, add this:

(require 'package)
(add-to-list 'package-archives
             '("melpa-stable" . "") t)

Then, use package-install to install Circe:

M-x package-install RET circe RET

After this, M-x circe should work.

Development Version

In a shell:

mkdir -d ~/.emacs.d/lisp/
cd ~/.emacs.d/lisp
git clone git://

Then add the following to your .emacs file:

(add-to-list 'load-path "~/.emacs.d/lisp/circe")
(require 'circe)

The next time you start your Emacs, you should be able to use M-x circe to connect to IRC.

Connecting to IRC

To connect to IRC, simply use M-x circe RET RET RET. This will connect you to Freenode. You can join us on #emacs-circe by using /join #emacs-circe in the server buffer.

A more elaborate setup would require you to edit your init file and add something like the following:

(setq circe-network-options
         :tls t
         :nick "my-nick"
         :sasl-username "my-nick"
         :sasl-password "my-password"
         :channels ("#emacs-circe")

With this in your configuration, you can use M-x circe RET Freenode RET to connect to Freenode using these settings.

Please note: Circe uses the openssl or gnutls-cli command line programs to connect via TLS. These tools do not by default verify the server certificate. If you want to verify the server certificate, customize the tls-program variable.


  • Sensible defaults
  • Tab completion
  • Nick highlighting
  • Logging
  • Spell checker
  • Ignore feature that also hides users who talk to users on your ignore list
  • Ignored messages can be toggled so they show up and then hidden again
  • TLS/SSL support
  • SASL authentication support
  • Nickserv authentication, automatic ghosting, and nick re-gain
  • Auto-join
  • Ability to reduce join/part/quit spam from lurkers
  • Automatic splitting of long lines at word boundaries
  • Netsplit handling
  • Activity tracking in the mode line
  • Fully customizeable message display
  • Topic changes can be shown as a diff
  • Automatic linking of Emacs Lisp symbols, RFCs, PEPs, SRFIs, Github issues, etc.
  • Automatic splitting of outgoing messages at word boundaries to adhere to IRC protocol limitations
  • Flood protection
  • Nickname coloring (via the circe-color-nicks module)
  • Lag monitoring (via the circe-lagmon module)
  • Automatic pasting to a paste site for long messages (via the lui-autopaste module)


Please see the Wiki for further information:

Something went wrong with that request. Please try again.