Personal Message Bus
Go Perl Shell
Clone or download
Latest commit 6db018c May 27, 2018
Failed to load latest commit information.
api add proper key management command with varied subcommands May 27, 2018
vendor add proper key management command with varied subcommands May 27, 2018
.gitignore build script for master builds Apr 28, 2014
LICENSE Initial commit Feb 26, 2014 better readme Feb 15, 2017 add release documentation Apr 15, 2015
bootstrap.template add arm to bootstrap Nov 28, 2015
broker.go allow specifying listen address Jan 10, 2016 support windows Jan 10, 2017
dump_raw.go add ability to ignore certain message types in dump-raw May 15, 2017
introducer.go utilize docker credential helpers, if found, for key management May 9, 2018
key.go add proper key management command with varied subcommands May 27, 2018
main.go support windows Jan 10, 2017
notify.go split notify into run and watch Jun 7, 2016
notify_mobile.go refactor to async arch for pushover messages Jan 23, 2016
openurl.go allow html to be passed to openurl Oct 10, 2016
osx.go support for all subcommand args in launch agent Feb 14, 2016
plugin.go strip newlines from log messages Dec 30, 2015
process.go add function to mask passwords Feb 27, 2014
remotecopy.go adding alias for remotecopy Jan 22, 2017
run.go add emoji to run success or fail Jul 20, 2016
shell.go simplify PMB creation Dec 29, 2015
sink.go stream can follow files now Jun 12, 2016
stream.go stream can follow files now Jun 12, 2016
syslog.go support windows Jan 10, 2017
syslog_windows.go support windows Jan 10, 2017
util.go put tmux last in clipboard and notification handling Apr 12, 2018
version.go add version subcommand Aug 4, 2015
watch.go add single file watching Jun 8, 2016

Personal Message Bus

It is a little difficult to explain what the Personal Message Bus (PMB) is, so it's perhaps easier to state first what it can help you do:

  • Remote copy - copy small and large snippets of text from any remote system, no matter how many levels of SSH deep, into your local clipboard
  • Opening URLs in local browser - send URLs from your remote editor or IRC client and open it locally in your desktop browser, works for html content as well
  • Long running job notification - run that 20 minute deployment script, kick off that 11Gb database import, or run any other long job and get a notification on your desktop when it is complete
  • Log file streaming - send log files from a dozen servers and aggregate them locally or on a remote system
  • Remote command coordination - update a cloud database from one server and then run a database import on another, making sure that the commands are done in order and as soon as possible, receiving notifications for each step
  • Mobile and watch notification - leave work with a deployment running and receive a message on your watch halfway through dinner that the deployment succeeded
  • File download notification - download large files and get a notification when the download is complete.

All this, and all communication is encrypted and sent over an SSL connection. There are no complex firewall holes to punch, everything goes through a RabbitMQ instance out in the cloud.

To learn more and get started using PMB, head over here.

The rest of this document details how to hack on PMB.

Hacking on PMB

$ go get
# cd $GOPATH/src/
# go build

If you need a nice clean go environment, try out skeg.

Similar projects

  • remotecopy - My first foray into copying data from remote systems to my local clipboard. PMB started because I really liked the power of remotecopy and wanted to apply that power to other problems.
  • remote-pbcopy - The inspiration for remotecopy and, transitively, PMB.
  • lemonade
  • DoIt

Thank you

This project wouldn't be possible without the following libraries:


Copyright © 2014-2017 Nate Jones

Distributed under the Apache License Version 2.0.