Manage external services from within Emacs
Emacs Lisp Shell
Switch branches/tags
Nothing to show
Pull request Compare This branch is 231 commits behind rejeep:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Prodigy Build Status

Manage external services from within Emacs

I came up with the idea when I got to work one Monday morning and before I could start working I had to manually start ten or so services.

To get rid of this tedious work, I started working on this Emacs plugin. Prodigy provides a Magit-like GUI to manage services in a simple way.


Add prodigy to your Cask file:

(depends-on "prodigy")


prodigy-define-service (&optional doc-string &rest args)

See doc-string for information about available properties to specify: M-x describe-function RET prodigy-define-service


Start Prodigy with M-x prodigy. You should see a list of all defined services.

Quit (q)

Quit Prodigy.

Next service (n)

Go to next service.

Prev service (p)

Go to previous service.

Start service (s)

Start service at line or marked services.

Stop service (S)

Stop service at line or marked services.

Restart service (r)

Restart service at line or marked services.

Display service process output ($)

Switch to buffer for service at line.

Open in browser (o)

Open service at line in browser.

Mark service (m)

Mark service at line.

Mark services with tag (t)

Mark services with tag.

Mark all services (M)

Mark all services.

Unmark service (u)

Unmark service at line.

Unmark services with tag (t)

Unmark services with tag.

Unmark all services (U)

Unmark all services.

Refresh GUI (g)

Refresh GUI.


Start simple Python server:

  :name "Python app"
  :command "python"
  :cwd "/path/to/my/project"
  :args '("-m" "SimpleHTTPServer" "6001")
  :tags '(work))

Start Node server:

  "My awesome Node app."
  :name "Node app"
  :command "nodemon"
  :cwd "/path/to/my/project"
  :args '("")
  :port 6002
  :tags '(work node))

Start Sinatra server:

  :name "Sinatra"
  :command "server"
  :cwd "/path/to/my/project"
  :path '("/path/to/my/project/bin")
  :port 6003
  :tags '(work ruby)
  :init (lambda ()
          ;; Setup RVM


Contribution is much welcome!

Install Cask if you haven't already, then:

$ cd /path/to/prodigy.el
$ cask

Run all tests with:

$ make