Git Product home page Git Product logo

hivemind's Introduction

Hivemind

Build Status

Hivemind is a process manager for Procfile-based applications. At the moment, it supports Linux, FreeBSD, and macOS.

Procfile is a simple format to specify types of processes your application provides (such as web application server, background queue process, front-end builder) and commands to run those processes. It can significantly simplify process management for developers and is used by popular Platforms-as-a-Service, such as Heroku and Deis. You can learn more about the Procfile format here.

There are some good Procfile-based process management tools, including foreman by David Dollar, which started it all. The problem with most of those tools is that processes you want to manage start to think they are logging their output into a file, and that can lead to all sorts of problems: severe lagging, losing or breaking colored output. Tools can also add vanity information (unneeded timestamps in logs). Hivemind was created to fix those problems once and for all.

See this article for a good intro and all the juicy details! Introducing Overmind and Hivemind

Sponsored by Evil Martians

Enter Hivemind

Hivemind uses pty to capture process output. That fixes any problem with log clipping, delays, and TTY colors other process management tools may have.

If you would like a process management tool with a lot of features, including tmux support, restarting and killing individual processes and advanced configuration, you should take a look at Hivemind's big brother โ€” Overmind!

Installation

With Homebrew (macOS)

brew install hivemind

Download the latest Hivemind release binary

You can download the latest release here.

From Source

You need Go 1.11 or later to build the project.

$ GO111MODULE=on go get -u -f github.com/DarthSim/hivemind

Note: You can update Hivemind the same way.

Usage

Hivemind works with a Procfile. It may look like this:

web: bin/rails server
worker: bundle exec sidekiq
assets: gulp watch

To get started, you just need to run Hivemind from your working directory containing Procfile.

$ hivemind

If Procfile isn't located in your working directory, or named it non-standard as Procfile.dev, you can specify the path to it: [Fun Fact: Name of the Procfile is arbitrary and can be anything, although it is a best practice to name it as Procfile for sanity]

$ hivemind path/to/your/Procfile
$ hivemind path/to/your/Procfile.dev

Run hivemind --help to see other options. Note that every Hivemind option can be set with corresponding environment variable.

Environment

If you need to set specific environment variables before running a Procfile, you can specify them in the .env file in the current working directory. The file should contain variable=value pairs, one per line:

PATH=$PATH:/additional/path
PORT=3000
HIVEMIND_TITLE=my_awsome_app

Author

Sergey "DarthSim" Aleksandrovich

Highly inspired by Foreman.

Many thanks to @antiflasher for the awesome logo.

License

Hivemind is licensed under the MIT license.

See LICENSE for the full license text.

hivemind's People

Contributors

corpix avatar darthsim avatar dharamgollapudi avatar ppressives avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.