• Stars
    star
    148
  • Rank 249,983 (Top 5 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 1 year ago
  • Updated about 2 months ago

Reviews

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

Repository Details

Universal process manager built in Deno

Pup - Universal Process Manager

PUP

Pup is a powerful universal process manager developed with Deno, designed to keep your applications and services alive.

For detailed documentation, visit pup.56k.guru.

Key Features

  • Cross-platform and wide OS compatibility: Manage processes across different platforms and languages, including Deno, Node.js, Python, and Ruby, on Windows, macOS, and Linux.
  • Process management: Define, control, and manage your processes with simple commands and configuration options.
  • Multiple start/restart policies: Set up processes to start automatically, on a schedule (using cron expressions), or when files change.
  • Service management: Built-in installer for Linux (sysvinit, systemd, upstart), macOS, and Windows services.
  • Clustering and load balancing: Seamlessly scale your applications with built-in clustering and load balancing capabilities.
  • Plugins: Extend Pup's functionality with custom plugins, such as the Splunk HEC plugin for seamless integration with Splunk and the Web Interface plugin for an intuitive graphical user interface. Create your own plugins to add additional features and integrations tailored to your needs.
  • Process Telemetry and IPC: Gain deeper insights into managed processes by gathering telemetry data, such as memory usage and current working directory, from Deno client processes. Supports inter-process communication for connected processes to interact with each other.

Note: Programmatic usage, process telemetry, and IPC are currently available only when running Deno client processes.

Quick Start

Installation

To install Pup, open your terminal and execute the following command:

deno run -Ar https://deno.land/x/pup/pup.ts setup --channel prerelease

This command downloads the latest version of Pup and installs it on your system. The --channel prerelease option is included as there is no stable version of Pup yet. Read more abour release channels here.

Configuration

  1. Start by generating a new configuration file called pup.json at your project root. This can be achieved using Pup's built-in helper with the following command:

    pup init --id "my-server" --cmd "deno run -A server.ts" --autostart

  2. (Optional) In case you have an additional task to execute, such as a cleanup script, you can make use of pup append. The following example shows how to add an extra task that use the cron start policy:

    pup append --id "my-task" --cmd "deno run -A task.ts" --cron "0 0 * * * *"

  3. Now, start your ecosystem:

    pup run

  4. (Optional) To make your ecosystem function as a system service, install it using pup install. This works with systemd, sysvinit, upstart, launchd, and Windows service manager:

    pup install --name my-service

For the full manual, see https://pup.56k.guru

Single command example

It is also possible to use pup to keep a process alive temporary, without a pup.json or system service.

To achieve this, use pup run with --cmd and a start policy, for example --autostart.

pup run --cmd "deno run server.ts" --autostart

Example setups

Full examples available at /docs/src/examples

Release channels

  • stable: This channel is currently empty, but will provide stable releases of Pup in the future. It is recommended for production environments where stability is a priority.

  • prerelease: This channel offers pre-release versions of Pup that include new features and improvements. It is suitable for users who want to test the latest enhancements before they are officially released.

  • canary: The canary channel provides the most up-to-date and cutting-edge versions of Pup. It includes the latest changes and may not be as stable as the other channels. It is primarily intended for developers and early adopters who want to stay on the bleeding edge of Pup's development. Based on the current state of the main repo of the github repository.

Note Built-in plugins, such as splunk-hec and webinterace does not work with canary versions right now.

Each channel serves different purposes, so choose the one that best fits your needs and requirements.

Contributions and Development

Contributions to Pup are very welcome! Please read the contributing section of the manual, fork the repository, make your changes, and submit a pull request.

We appreciate all feedback and contributions that help make Pup better!

Examples of areas that need extra attention right now

  • Plugin development: Invent new plugins for Pup, or help out by improving the existing (work in progress) web-interface plugin. See https://pup.56k.guru/examples/plugins/README.html to get started on plugin development in general. See https://github.com/Hexagon/pup/blob/main/plugins/web-interface/README.md for instructions on how to rebuild the web-interface.
  • Testing: Pup needs to be thoroughly tested; help out by using and testing it in various scenarios. Report any issues you encounter.
  • Reading: Review the documentation and report any issues or areas for improvement.
  • Bugfixes: Find bugs, report them, and optionally create a PR to fix the issue.
  • Spread the word: If you find Pup useful, spread the word to attract more users, developers, and testers to the community. Sharing your experience and showcasing Pup's capabilities can help grow and strengthen the project.

More Repositories

1

croner

Trigger functions or evaluate cron expressions in JavaScript or TypeScript. No dependencies. Most features. Node. Deno. Bun. Browser.
TypeScript
2,038
star
2

cryptalk

HTML5/Node.js based, client side (E2EE) encrypted instant chat
JavaScript
85
star
3

thinker-fts

Fast and extendible Node.js/Javascript fulltext search engine.
JavaScript
71
star
4

croner-rust

Rust flavor of the popular cron scheduler croner.
Rust
36
star
5

node-telldus

Node bindings for telldus-core
C++
34
star
6

webauthn-skeleton

Skeleton for a Web Authentication API website
JavaScript
29
star
7

crocket

Efficient and simple node.js TCP/unix socket/windows socket interprocess communication.
JavaScript
27
star
8

minitz

Minimal utility to convert to or from any timezone. Deno/Node/Browser. ESM/CommonJS.
JavaScript
22
star
9

node-copter

Great node.js powered web-interface for your tri/quad/hexa/octa/helicopter.
JavaScript
19
star
10

lumocs

Ready to use dark/light documentation theme for the static site generator Lume
CSS
15
star
11

detris

Tetris game in pure Deno using Deno KV for data persistence, with lazy HTML5 interface.
TypeScript
13
star
12

service

Install a Deno application as a system service
TypeScript
12
star
13

windows-service

Deno library to seamlessly integrate your application as a Windows service without any external tools.
TypeScript
12
star
14

bundlee

Bundle static assets to a single JSON-file.
TypeScript
11
star
15

entsoe-api-client

ENTSO-e transparency platform API Client built for Deno. Complete. Easy to use. Minimal.
TypeScript
11
star
16

base64

Base64 and base64url to string or arraybuffer, and back. Works in Node, Deno or browser.
TypeScript
9
star
17

webauthn

Slim Webauthn library with ES6, Node and Deno support.
JavaScript
8
star
18

huset.js

A node.js tellstick duo home automation server with superpowers
JavaScript
7
star
19

spotweb

Dockerized Deno application that gets and caches electricity prices (spot price) from ENTSO-e.
TypeScript
7
star
20

grapho

Grapho is a dependency free data visualisation library for JavaScript, keeping it simple!
HTML
6
star
21

sortera

Minimal dependency free and fast library for adding interactive sorting to any HTML5 table
JavaScript
5
star
22

croner-scheduler-rust

A threaded cron job scheduler library for Rust
Rust
4
star
23

webdiff

Cli tool comparing websites over time
TypeScript
4
star
24

deps

Tool to check Deno/JSR dependencies
TypeScript
4
star
25

datacraft

LINQ-like JavaScript object manipulation library.
JavaScript
3
star
26

decene

Framework for decentralised and distributed network applications.
TypeScript
3
star
27

spotprice

Nordpool spotprices in Node, Deno and Bun.
JavaScript
3
star
28

jsrbench

The JavaScript Runtime Benchmark
JavaScript
2
star
29

wave-mqtt-bridge

Python
2
star
30

gotris

Server side Tetris implementation written in go, with lazy HTML5 client.
Go
2
star
31

primer

Benchmark of prime number calculation on pure javascript vs. wasm
JavaScript
2
star
32

deno-pointer-tutorial

Source repo for the tutorial to show all visitors mouse cursors, from hexagon.56k.guru.
TypeScript
2
star
33

spotprice-mqtt

Docker image which allows users collect spot prices from the web, and forward it to a MQTT broker.
JavaScript
2
star
34

abstractor

Node.js abstraction layer and automation framework.
JavaScript
2
star
35

self

Easily check if users have the latest version of your Deno programs published on jsr.io.
TypeScript
2
star
36

blog

Source code of Hexagon's Blog
Nunjucks
2
star
37

Oden

Python
1
star
38

pup-telemetry

Empowers Node, Deno or Bun processes run by Pup with telemetry and inter process communication capabilities.
TypeScript
1
star
39

webauthn-debugger

Serverless webauthn debugger. Debug webauthn (fido2-lib) using any web server.
JavaScript
1
star
40

unifi-mqtt-bridge

Dockerized client that reads last motion of each camera on an Unifi NVR, and sends notifications to a MQTT broker.
Python
1
star
41

cron-builder

Cron expression builder - Live at https://cron.56k.guru
JavaScript
1
star
42

maskitor

Simple GPM Mask editor written in javascript
JavaScript
1
star
43

lock

Single binary cli application to encrypt or decrypt files
TypeScript
1
star
44

pup-api-client

Runtime agnostic TypeScript REST client for interacting with the Pup REST API.
TypeScript
1
star
45

pup-api-definitions

Type definitions and interfaces that describe the public data structures of Pup and it's REST API.
TypeScript
1
star
46

pup-common

Utility modules that are used across multiple Pup components.
TypeScript
1
star