Code Monkey home page Code Monkey logo

pipy's Introduction

Pipy Logo

中文 | 日本語

Pipy

Pipy is a programmable proxy for the cloud, edge and IoT. It's written in C++, which makes it extremely lightweight and fast. It's also fully programmable by using PipyJS, a tailored version from the standard JavaScript language.

Why Pipy?

Versatile

Although Pipy is mostly used as a high-performance reverse proxy, the real power of Pipy relies on providing you a range of basic pluggable building blocks, aka. "filters", and not imposing any restrictions on how you combine them. It's entirely up to you. We've seen people using Pipy to convert protocols, record network traffic, sign/verify messages, trigger serverless functions, health-check servers, and more.

Fast

Pipy is written in C++. It leverages asynchronous network I/O. Allocated resources are pooled and reused. Data is transferred internally by pointers whenever possible. It's fast in every way.

Tiny

A build of Pipy with no built-in GUI frontend resources gives you an executable merely around 10MB with zero external dependencies. You'll experience the fastest download and startup times with Pipy.

Programmable

At the core, Pipy is a script engine running PipyJS, a tailored version from ECMA standard JavaScript. By speaking the planet's most widely used programming language, Pipy gives you unparalleled freedom over what you have in other products based on YAML configuration files and the like.

Open

Pipy is more open than open source. It doesn’t try to hide details in a black box. You'll always know what you are doing. It might sound a bit daunting but fear not, it doesn’t require a rocket scientist to understand how the different parts work together. In fact, you’ll only have more fun as you have complete control over everything.

Quick Start

Build

The following prerequisites are required to build Pipy:

  • Clang 5.0+
  • CMake 3.10+
  • Node.js v12+ (only if the builtin Admin UI is enabled)

Run the build script to start building:

./build.sh

The final product can be found at bin/pipy.

Run

Run bin/pipy with zero command line options, Pipy will start in repo-mode listening on the default port 6060.

$ bin/pipy

[INF] [admin] Starting admin service...
[INF] [listener] Listening on port 6060 at ::

Open the browser of your choice, point to http://localhost:6060. You will now see the Admin UI where you can start exploring the documentation and playing around with the tutorial codebases.

Documentation

Compatibility

Pipy is being constantly tested on these platforms:

  • RHEL/CentOS
  • Fedora
  • Ubuntu
  • Debian
  • macOS
  • FreeBSD
  • OpenBSD
  • OpenEuler
  • OpenWrt
  • Deepin
  • Kylin

Pipy runs on the following architectures:

  • X86/64
  • ARM64
  • LoongArch
  • Hygon

Copyright & License

Please refer to COPYRIGHT and LICENCE.

Contact

pipy's People

Contributors

pajama-coder avatar naqvis avatar khas-flomesh avatar shader13 avatar addozhang avatar nixff avatar keveinliu avatar caishu97 avatar wanpf avatar weibaohui avatar i0r3k avatar daixiang0 avatar fleeto avatar dependabot[bot] avatar zengyuxing007 avatar

Watchers

 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.