Skip to content
Deprecated!!! Process managerment writtern by golang, inspired by python-supervisor
Branch: master
Clone or download
Latest commit 3744b1b Jun 5, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs add gif page Aug 31, 2016
gops update .gitignore Jan 16, 2018
hipchat add hipchat lib Sep 10, 2016
res add missing files Jan 17, 2018
.fsw.yml try to fix branch, but log still duplicate Sep 5, 2016
.gitignore fix travis test Jan 17, 2018
.gopack.yml auto generate version from git, close #11 Sep 8, 2016
.goreleaser.yml add build support for raspberry Aug 13, 2017
.travis.yml fix travis test Jan 17, 2018
LICENSE Initial commit Sep 1, 2015 Update Jun 5, 2018 update zh readme Oct 8, 2016
assets_dev.go update .gitignore Jan 16, 2018
assets_generate.go update .gitignore Jan 16, 2018
atomic64.go 支持分布式 Jan 16, 2018
broadcast.go update .gitignore Jan 16, 2018
buffer_pool.go 支持分布式 Jan 16, 2018 update .gitignore Jan 16, 2018 update .gitignore Jan 16, 2018
cmds.go 修复bug ,拆分配置文件目录 Jan 17, 2018
config.go 支持分布式 Jan 16, 2018
distributed.go 后端 slaves 排序,解决页面跳动问题,slaves cache增加到1000 Jan 24, 2018
fsm.go Update fsm.go Jan 26, 2018
fsm_test.go update .gitignore Jan 16, 2018 fix error arch check Aug 13, 2017
glide.yaml update req package Jan 17, 2018
gosuv.go add missing files Jan 17, 2018
merge_write.go 支持分布式 Jan 16, 2018
sigchld_unix.go loop reaping dead children Jul 14, 2017
utils.go change update to github, not finished yet Aug 13, 2017
web.go 修复bug ,拆分配置文件目录 Jan 17, 2018


Build Status

中文README 不是很全,能看懂英文的还是尽量看英文

current is in beta

Process management writtern by golang, inspired by python-supervisor

So why write another supervisor?

I have been using python-supervisor for many years and there are something uncomfortable feelings.

  1. Log can't contains ANSI color chars
  2. The configuration file can add on the web, often forgot some settings.
  3. supervisorctl reload will cause supervisord restarted
  4. Hard to set status change to fatal notifications.
  5. No process performance monitor page.
  6. Program starts with no common environ, eg, missing HOME and USER variable
  7. Kill process default is not group kill which make sub process still running.
  8. More... will added when I think of it.


  • Web control page

  • HTTP Basic auth

  • Github webhook

  • Single log page, include search support

  • 中文文档


Go version at least 1.6+



The fastest way is run with. Default install location is /usr/local/bin, change env-var BINDIR will also change install location.

curl | bash

Or just download binaries

Thanks to goreleaser which makes publish binaries automaticly.

Build from source

go get -d
cd $GOPATH/src/
go generate # package html resources into go
go build -tags vfs

Quick start

After you installed gosuv, the first thing is to start server.

gosuv start-server

Basic operations

$ gosuv status
test                    running
test_again              stopped

$ gosuv stop test
$ gosuv start test

Open web http://localhost:11313 to see the manager page. And follow the gif to add a program to gosuv.

gosuv web


Default config file stored in directory $HOME/.gosuv/, Set env-var GOSUV_HOME_DIR can change config file store directory.

  • file programs.yml contains all program settings.
  • file config.yml contains server config

File config.yml can be generated by gosuv conftest

Example config.yaml

    enabled: true
    username: admin
    password: admin
  addr: :8083
  master: ""
    - secret: c1b8032******************aa736a
      - "153********"
  server_url: http://admin:admin@localhost:8083

master 的支持来自 Logs can be found in $HOME/.gosuv/log/

Edit config file(default located in $HOME/.gosuv/programs.yml) and run gosuv reload will take effect immediately.


HTTP is follow the RESTFul guide.

Get or Update program

<GET|PUT> /api/programs/:name

Add new program

POST /api/programs

Del program

DELETE /api/programs/:name


Only 4 states. ref



Configuration example

- demo-program:
  command: ...
      api_key: [token]
      - [user1]
      - [user2]

Now only support pushover, and only status change to fatal will get notified.

Integrate with github (todo)

This is feature that will helps update your deployment environment once your updated in the github.

This part is set in the programs.yml, take look the example

- demo-program:
  command: python
  directory: /opt/demo
      secret: 123456
      command: git pull origin master




You can’t perform that action at this time.