=head1 NAME

lei - local email interface

=head1 SYNOPSIS

lei [OPTIONS] COMMAND

=head1 DESCRIPTION

lei is a command-line tool for importing and searching email,
regardless of whether it is from a personal mailbox or a public-inbox.
lei supports a local, writable store built on top of
L<public-inbox-v2-format(5)> and L<public-inbox-extindex(1)>.
L<lei-q(1)> provides an interface for querying messages across the lei
store and read-only local and remote "externals" (inboxes and external
indices).

Warning: lei is still in its early stages and may destroy mail.
Be sure to have backups of destinations lei writes to.

Available in public-inbox 1.7.0+.

=head1 OPTIONS

=over

=item -c NAME=VALUE

Override configuration C<NAME> to C<VALUE>.

=item -C DIR

Change current working directory to the specified directory before
running the command.  This option can be given before or after
C<COMMAND> and is accepted by all lei subcommands except
L<lei-daemon-kill(1)>.

=back

=head1 COMMANDS

Subcommands for initializing and managing local, writable storage:

=over

=item * L<lei-init(1)>

=item * L<lei-import(1)>

=item * L<lei-tag(1)>

=back

The following subcommands can be used to manage and inspect external
locations:

=over

=item * L<lei-add-external(1)>

=item * L<lei-forget-external(1)>

=item * L<lei-ls-external(1)>

=back

Subcommands related to searching and inspecting messages from the lei
store and configured externals are

=over

=item * L<lei-blob(1)>

=item * L<lei-config(1)>

=item * L<lei-edit-search(1)>

=item * L<lei-forget-search(1)>

=item * L<lei-lcat(1)>

=item * L<lei-ls-search(1)>

=item * L<lei-p2q(1)>

=item * L<lei-q(1)>

=item * L<lei-rediff(1)>

=item * L<lei-up(1)>

=back

Other subcommands include

=over

=item * L<lei-add-watch(1)>

=item * L<lei-config(1)>

=item * L<lei-convert(1)>

=item * L<lei-daemon-kill(1)>

=item * L<lei-daemon-pid(1)>

=item * L<lei-forget-mail-sync(1)>

=item * L<lei-mail-diff(1)>

=item * L<lei-inspect(1)>

=item * L<lei-ls-label(1)>

=item * L<lei-ls-mail-source(1)>

=item * L<lei-ls-mail-sync(1)>

=item * L<lei-ls-watch(1)>

=item * L<lei-rm-watch(1)>

=back

=head1 FILES

By default, storage is located at C<$XDG_DATA_HOME/lei/store>.  The
configuration for lei resides at C<$XDG_CONFIG_HOME/lei/config>.

=head1 ERRORS

Errors and dianostics for interactive commands are reported to
stderr.  Some errors for background tasks are emitted via
L<syslog(3)> as L<lei-daemon(8)> for the top-level daemon,
and C<lei/store> for the L<lei-store-format(5)> worker.

=head1 CONTACT

Feedback welcome via plain-text mail to L<mailto:meta@public-inbox.org>

The mail archives are hosted at L<https://public-inbox.org/meta/> and
L<http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/>

=head1 COPYRIGHT

Copyright all contributors L<mailto:meta@public-inbox.org>

License: AGPL-3.0+ L<https://www.gnu.org/licenses/agpl-3.0.txt>

=head1 SEE ALSO

L<lei-overview(7)>, L<lei-daemon(8)>
