--- /dev/null
+[[!img notmuch-logo.png alt="Notmuch logo" class="left"]]
+#Using notmuch remotely#
+
+##Why?##
+It is hard to keep nomuch tags in sync across multiple instances of
+notmuch, on multiple computers. Though you can do this with "notmuch
+dump" and "notmuch restore", it is often preferable to be able to use
+notmuch on a remote computer as if it were present on a local
+computer.
+
+The following guidelines show how I have accomplished this. It isn't
+perfect, but it works pretty well, and allows me to access notmuch on
+my home computer, using only an emacs client on my netbook or work
+computer, a trivial shell script, a few settings in my .emacs, and
+ssh.
+
+Note that this is all something of a hack, and future versions of
+notmuch will likely make all of these steps much more
+transparent. I'll note particularly which things should become
+unneccessary with future version. At the moment though, this does
+work, and might enable some of you to use notmuch away from your
+primary computer.
+
+##What you will need##
+You will need to have the following items in place:
+
+1. a working notmuch on one computer (let's call that computer
+"server"). The notmuch should be at least version 0.2.
+2. a working notmuch emacs interface on another computer (let's call
+that computer "client")
+3. password-free login (public key authentication) from client to
+server. [Here](http://sial.org/howto/openssh/publickey-auth/) is a
+good page on how to set it up.
+4. a reasonably fast connection. (This isn't really *neccessary*, but
+if your connection is too slow, this won't be very pleasant to use,
+and certainly won't seem transparent.)
+
+##Write a simple wrapper shell script##
+Now we will need to write a simple shell script that replaces the
+call to the notmuch binary with a call to notmuch over ssh.
+
+Note that this shell script also pauses briefly after every ten search
+entries. This is currently necessary so that the emacs process-filter
+doesn't chop off messages. It's an obvious hack, and hopefully won't
+be necessary in the furture.
+
+ #!/usr/bin/env bash
+
+ SSH_BIN="/path/to/ssh/on/client"
+ USER="user_name"
+ HOST="server_name"
+ NOTMUCH_REMOTE_BIN="/path/to/notmuch/on/server"
+
+ if [ $1 = "search" ]; then
+ COUNT=0;
+ OUT=`$SSH_BIN $USER@$HOST $NOTMUCH_REMOTE_BIN $@`
+ echo "$OUT" | while read line; do
+ COUNT=`expr $COUNT + 1`
+ echo "$line";
+ if [ $COUNT = 10 ]; then
+ sleep 0.1;
+ fi
+ done
+ else
+ $SSH_BIN $USER@$HOST $NOTMUCH_REMOTE_BIN $@
+ fi
+
+Save this to a file, "remote-notmuch.sh", in your path.
+
+##Configure your emacs client##
+
+Add the following to your .emacs (this is on your client machine):
+
+ (setq notmuch-command "/path/to/your/remote-notmuch.sh")
+
+At least until 0.3 or 0.4, you will also need to add the following. It
+should become unnecessary pretty soon though:
+
+ (setq notmuch-remote-host "user_name@server_name")
+
+ (defadvice notmuch-show-get-filename (around
+ notmuch-show-get-remote-filename
+ activate)
+ (setq ad-return-value (concat "/ssh:"
+ notmuch-remote-host
+ ":"
+ ad-do-it)))
+
+The purpose of these lines is to allow emacs to have access to the raw
+files, via TRAMP, so that it can extract attachments and parse
+HTML. Work is afoot to make notmuch handle these tasks itself, so this
+part should soon be unecessary.
+
+##Problems##
+Some things won't work perfectly, and there might be some unexpected
+mismatches between normal usage and this sort of usage. If you're
+using this approach and run into any problems, please feel free to
+list them here. And, of course, if you improve on any of these
+approaches, please do edit this page and let people know!
+
+
+
+
+
+
+
+
+
+
+
+