---
name: "mu-server"
section: "1"
platform: "linux"
package: "maildir-utils"
version: "1.12.9-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/mu-server"
---

# mu-server(1)

the mu backend for the mu4e e-mail client

## NAME

mu-server - the **mu** backend for the mu4e e-mail client

## SYNOPSIS

**mu** \[*COMMON-OPTIONS*\] **server**

## DESCRIPTION

**mu server** starts a simple shell in which one can query and manipulate the **mu** database. The output uses s-expressions. **mu server** is not meant for use by humans, except for debugging purposes. Instead, it is designed specifically for the **mu4e** e-mail client.

```
(<command-name> :param1 value1 :param2 value2)
```

For example, to view a certain message, the command would be:

```
(view :docid 12345)
```

Parameters can be sent in any order; they must be of the correct type though. See **lib/utils/mu-sexp-parser.hh** and **lib/utils/mu-sexp-parser.cc** in source-tree for the details.

## OUTPUT FORMAT

**mu server** accepts a number of commands, and delivers its results in the form:

```
\\376<length>\\377<s-expr>
```

\\376 (one byte 0xfe), followed by the length of the s-expression expressed as an hexadecimal number, followed by another \\377 (one byte 0xff), followed by the actual s-expression.

By prefixing the expression with its length, it can be processed more efficiently. The \\376 and \\377 were chosen since they never occur in valid UTF-8 (in which the s-expressions are encoded).

## SERVER OPTIONS

### --commands

List available commands (and try with **--verbose**).

### --eval *expression*

Evaluate a mu4e server s-expression.

### --allow-temp-file

If set, allow for the output of some commands to use temp-files rather than directly through the emacs process input/output. This is noticeably faster for commands with a lot of output, esp. when the the temp-file uses a in-memory file-system.

## PERFORMANCE

As an indication for the relative performance, we can simulate something `mu4e` does; we take overall time of 50 such requests:

```
time build/mu/mu server --allow-temp-file --eval '(find :query "\"\"" :include-related t :threads t :maxnum 50000)' >/dev/null
```

(and **--allow-temp-file** for 1.11)

| | |
| --- | --- |
| release | time (sec) |
| 1.8 | 8.6s |
| 1.10 | 5.7s |
| 1.11 (master) | 2.8s |

### --muhome

Use a non-default directory to store and read the database, write the logs, etc. By default, **mu** uses the XDG Base Directory Specification (e.g. on GNU/Linux this defaults to *~/.cache/mu* and *~/.config/mu*). Earlier versions of **mu** defaulted to *~/.mu*, which now requires **--muhome=~/.mu**.

The environment variable **MUHOME** can be used as an alternative to **--muhome**. The latter has precedence.

## COMMON OPTIONS

### -d, --debug

Makes **mu** generate extra debug information, useful for debugging the program itself. Debug information goes to the standard logging location; see [**mu**(1)](/mu/1.md).

### -q, --quiet

Causes **mu** not to output informational messages and progress information to standard output, but only to the log file. Error messages will still be sent to standard error. Note that **mu index** is much faster with **--quiet**, so it is recommended you use this option when using **mu** from scripts etc.

### --log-stderr

Causes **mu** to not output log messages to standard error, in addition to sending them to the standard logging location.

### --nocolor

Do not use ANSI colors. The environment variable **NO\_COLOR** can be used as an alternative to **--nocolor**.

### -V, --version

Prints **mu** version and copyright information.

### -h, --help

Lists the various command line options.

## REPORTING BUGS

Please report bugs at *https://github.com/djcb/mu/issues*.

## AUTHOR

Dirk-Jan C. Binnema \<djcb@djcbsoftware.nl\>

## COPYRIGHT

This manpage is part of **mu** 1.12.9.

Copyright © 2008-2025 Dirk-Jan C. Binnema. License GPLv3+: GNU GPL version 3 or later *https://gnu.org/licenses/gpl.html*. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

## SEE ALSO

[**mu**(1)](/mu/1.md)
