• Stars
    star
    167
  • Rank 218,662 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

APM is a process manager for Golang applications.

A(guia) P(rocess) M(anager)

# APM - Aguia Process Manager APM is a lightweight process manager written in Golang for Golang applications. It helps you keep your applications alive forever, reload and start them from the source code.

ReportCard GoDoc

Starting an application is easy:

$ ./apm bin app-name --source="github.com/topfreegames/apm"

This will basically compile your project source code and start it as a daemon in the background. The application will have already be downloaded into GOPATH issuing something like

go get github.com/topfreegames/apm

You will probably be able to run anything in any directory, as long as it is under GOPATH

Install APM

$ go get github.com/topfreegames/apm

Start APM

In order to properly use APM, you always need to start a server. This will be changed in the next version, but in the meantime you need to run the command bellow to start using APM.

$ apm serve

If no config file is provided, it will default to a folder '.apmenv' where apm is first started.

Stop APM

$ apm serve-stop

Starting a new application

If it's the first time you are starting a new golang application, you need to tell APM to first build its binary. Then you need to first run:

$ apm bin app-name --source="github.com/yourproject/project"

This will automatically compile, start and daemonize your application. If you need to later on, stop, restart or delete your app from APM, you can just run normal commands using the app-name you specified. Example:

$ apm stop app-name
$ apm restart app-name
$ apm delete app-name

Main features

Commands overview

$ apm serve --config-file="config/file/path.toml"
$ apm serve-stop --config-file="config/file/path.toml"

$ apm bin app-name --source="github.com/topfreegames/apm"   # Compile, start, daemonize and auto restart application.
$ apm start app-name                                        # Start, daemonize and auto restart application.
$ apm restart app-name                                      # Restart a previously saved process
$ apm stop app-name                                         # Stop application.
$ apm delete app-name                                       # Delete application forever.

$ apm save                                                  # Save current process list
$ apm resurrect                                             # Restore previously saved processes

$ apm status                                                # Display status for each app.

Managing process via HTTP

You can also use all of the above commands via HTTP requests. Just set the flag --dns together with ./apm serve and then you can use a remote client to start, stop, delete and query status for each app.

More Repositories

1

pitaya

Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.
Go
2,148
star
2

maestro

Maestro: Game Room Scheduler
Go
112
star
3

libpitaya

a client sdk for pitaya game server framework
C
60
star
4

podium

A leaderboard backend using redis
Go
47
star
5

pusher

A fast massive push platform for APNs and FCM
Go
34
star
6

khan

khan will drive all your enemies to the sea (and also take care of your game's clans)!
Go
30
star
7

marathon

Marathon is a push notification platform.
Go
25
star
8

libpitaya-cluster

This repo contains a c++ lib with pitaya's cluster logic for creating backend pitaya servers in other programming languages
HTML
21
star
9

pitaya-cli

a cli repl client for pitaya, great for testing servers during development
Go
20
star
10

pitaya-bot

Testing framework for Pitaya, providing automated tests
Go
18
star
11

mqttbot

A bot that provides programmable plugins and persistence/history for mqtt
Go
16
star
12

extensions

This package contains the common extensions we use in our projects.
Go
16
star
13

flux-gitlab-controller

Flux k8s controller to sync gitlab deploy keys
Go
14
star
14

pitaya-admin

Management, monitoring and testing interface for pitaya servers using http and web socket endpoints
Go
10
star
15

kubernetes-kops-operator

Manage Kubernetes clusters using Kops.
Go
9
star
16

maestro-client

maestro-client is maestro's framework that should be included in game rooms
C++
8
star
17

helm-generate

Helm-generate is a generator command to be used with FluxCD. It recursively generates several Helm charts by rendering the Charts to STDOUT.
Go
8
star
18

arkadiko

A simple bridge from HTTP to MQTT developed in Go
Go
7
star
19

go-etl

Go ETL using Ratchet
Go
6
star
20

kaas-management-api

Management API for Kubernetes as a Service
Go
5
star
21

unity-template

Unity template for game jams
5
star
22

maestro-cli

Maestro command line interface
Go
5
star
23

mqtt-history

Go
5
star
24

crossplane-provider-vault

This is a native crossplane provider for Hashicorp's Vault
Go
4
star
25

bike-race-issues

4
star
26

codeowners-verifier

Small binary to verify if a path has a CODEOWNER.
Go
4
star
27

pitaya-protos

this repository contains the proto files for pitaya projects
4
star
28

santiago

Santiago is a horizontal-scale server that handles webhooks with delivery guarantee.
Go
4
star
29

iac-docker-image

Docker image to be used for infrastructure deployments in CI/CD
Dockerfile
3
star
30

jaeger-tracer-node

Node Jaeger client extended with context propagation and external libs patches
JavaScript
3
star
31

pomelo-graceful-shutdown

A pomelo component that handles graceful shutdown logics
JavaScript
3
star
32

vernemq_redis_auth_plugin

Elixir
3
star
33

kubernetes-crossplane-infrastructure-operator

Operator to manage Kubernetes Clusters Network
Go
3
star
34

resources-check

Check if controllers on Kubernetes have limit and requests setted
Go
3
star
35

eventsgateway

Receive events and send them encoded as avro to kafka
Go
3
star
36

protos

This package contains the common .proto files and related generated code we use in our projects.
Go
3
star
37

mystack-controller

Mystack creates a personal stack of predefined services on kubernetes
Go
3
star
38

emq_throttle_plugin

A throttle plugin for EMQ
Elixir
2
star
39

go-extensions-http

Wrapper over go's http with OpenTracing support
Go
2
star
40

mystack-router

The router for mystack
Go
2
star
41

mqtt-monitor

Python
2
star
42

offers

Offers is a service meant to handle offers/promotions in your games.
Go
2
star
43

mystack-cli

The CLI for mystack
Go
2
star
44

mystack

Mystack creates a personal stack of predefined services on kubernetes
Makefile
1
star
45

pitaya-protocol-js

an implementation of pitaya protocol written in javascript
JavaScript
1
star
46

homebrew-python2

Support for deprecated Python 2
Ruby
1
star
47

koa-datadog-middleware

A koa middleware for reporting metrics to datadog
JavaScript
1
star
48

doctor-kafka

Shell
1
star
49

gobblin

Java
1
star
50

mystack-logger

The logger components of mystack
Go
1
star
51

xk6-pitaya

Go
1
star
52

go-extensions-tracing

Common functions to our go-extensions-* with OpenTracing support
Go
1
star
53

go-extensions-k8s-client-go

Wrapper over k8s.io/client-go that implements some niceties, like OpenTracing support
Go
1
star
54

emq-redis-auth-plugin

Emqtt redis auth plugin based on mosquitto auth plugin
Elixir
1
star
55

wildlogstash

Custom build for logstash
Makefile
1
star
56

OpenSSL

C
1
star