{"id":34225584,"url":"https://github.com/pme-sh/pmesh","last_synced_at":"2026-03-11T09:03:42.500Z","repository":{"id":225719331,"uuid":"766658838","full_name":"pme-sh/pmesh","owner":"pme-sh","description":"pmesh: rethinking application proxies","archived":false,"fork":false,"pushed_at":"2024-04-04T08:26:01.000Z","size":1036,"stargazers_count":59,"open_issues_count":0,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-12-19T05:26:52.625Z","etag":null,"topics":["esb","golang","kv-store","load-balancer","message-broker","mqtt","object-storage","reverse-proxy","service-discovery","service-manager"],"latest_commit_sha":null,"homepage":"https://pme.sh","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pme-sh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security/cert.go","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-03T21:19:28.000Z","updated_at":"2025-03-18T09:55:55.000Z","dependencies_parsed_at":"2024-06-21T12:52:48.904Z","dependency_job_id":null,"html_url":"https://github.com/pme-sh/pmesh","commit_stats":null,"previous_names":["pme-sh/pmesh"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/pme-sh/pmesh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pme-sh%2Fpmesh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pme-sh%2Fpmesh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pme-sh%2Fpmesh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pme-sh%2Fpmesh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pme-sh","download_url":"https://codeload.github.com/pme-sh/pmesh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pme-sh%2Fpmesh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30376784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esb","golang","kv-store","load-balancer","message-broker","mqtt","object-storage","reverse-proxy","service-discovery","service-manager"],"created_at":"2025-12-16T00:09:57.648Z","updated_at":"2026-03-11T09:03:42.494Z","avatar_url":"https://github.com/pme-sh.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pme.sh\"\u003e\n    \u003cimg src=\"logos/pmesh_title.png\" width=\"248\" alt=\"pme.sh\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n   \u003ca href=\"https://github.com/pme-sh/pmesh/actions/workflows/build.yml\"\u003e\n      \u003cimg src=\"https://github.com/pme-sh/pmesh/actions/workflows/build.yml/badge.svg\" alt=\"Build status\"\u003e\n   \u003c/a\u003e\n   \u003ca href=\"https://github.com/pme-sh/pmesh/actions/workflows/release.yml\"\u003e\n      \u003cimg src=\"https://github.com/pme-sh/pmesh/actions/workflows/release.yml/badge.svg\" alt=\"Release status\"\u003e\n   \u003c/a\u003e\n\u003c/p\u003e\n\n[pmesh](https://pme.sh) is an all-in-one service manager, reverse proxy, and enterprise service bus. It is designed to be a simple and powerful all-in-one replacement for a wide variety of tools commonly deployed in web services. It is currently in alpha and under active development.\n\nYou can find the documentation at [pme.sh](https://pme.sh), although it is still a work in progress.\n\n## Features\n\npmesh is designed to streamline what was previously a complex web of separate tools into a single, efficient framework\n\n- **As a Reverse Proxy**: As an alternative to Nginx, HAProxy, and similar tools, pmesh delivers lightning-fast SSL termination, routing, rate-limiting, and load balancing, handling over 200k requests per second on a 12-core server. Beyond the basics, pmesh offers GeoIP identification, automatic TLS certificate management, URL signing, and even integrating webhooks into a message queue, all without breaking a sweat.\n\n- **For Service Management**: Taking on the role of systemd, pm2, and similar tools, pmesh simplifies service lifecycle management. It ensures services are always running, scales them according to demand, and provides a robust API for management tasks like rolling updates, health checks, and more. Its ability to support zero-downtime hot-swaps and built-in compatibility with a wide range of languages and frameworks means you spend less time on configuration and more on development.\n\n- **In Service Discovery**: Like consul and etcd, pmesh automates the discovery and registration of services, directing traffic based on service health and other metrics. It facilitates inter-service communication with straightforward APIs, making setup and maintenance a breeze.\n\n- **As a Message Bus**: Integrating the functionality of systems like RabbitMQ and Kafka, pmesh offers a high-performance, low-latency messaging system for inter-service communication and event-driven architectures. Embedded within pmesh is a fork of NATS.io, a high-performance messaging system, designed for high-throughput, low-latency messaging.\n\n- **As a KV and Object Store**: pmesh offers a high-availability key-value store and object storage, with features like auto-replication and sharding, simplifying data management and storage, making your services more resilient and responsive.\n\n- **With Topology Management**: Written with distibuted systems in mind, pmesh is designed to allow any number of pmesh instances to form a self-discovering, self-healing, and optimizing topology. Making it easy to manage and scale your infrastructure all with a single `pmesh join pmtp://...` command. No impossible to maintain configuration of servers, no manual assignment of routes and regions, no need to restart any service. It automates local DNS management, issues TLS certificates transparently, and ensures security with mutual authentication between nodes using client certificates.\n\n- **Through Distributed Logging**: pmesh captures the logs from all services into a centralized system you can query, search, and even tail in real-time across your entire infrastructure. For any request, pmesh assigns a unique Ray ID, allowing you to track it across all services, making it easy to debug and monitor your infrastructure.\n\n## Installation\n\nThe unzip package is required to install pmesh. Use `sudo apt install unzip` to install unzip package.\n\n```sh\ncurl -fsSL https://get.pme.sh/install.sh | bash\n# to install a specific version\ncurl -fsSL https://get.pme.sh/install.sh | bash -s \"v0.1.5\"\n```\n\n## Building from source\n\nMake sure you have the latest version of Go installed and run:\n\n```sh\ngo install get.pme.sh/pmesh@latest\n```\n\n## Usage\n\n```\nUsage:\n  pmesh [command]\n\nLogs:\n  raytrace    Find logs by ray ID\n  tail        Tail logs\n\nManagement:\n  reload      Reloads the manifest, restarts all services\n  shutdown    Shuts down the pmesh node\n\nService:\n  ls          List services\n  rebuild     Invalidates build cache and restarts service\n  restart     Restart service\n  stop        Stops service\n  view        Show service details\n\nConfiguration:\n  get         Get the pmesh node configuration\n  get-seed    Get the seed URL\n  set         Set the pmesh node configuration\n  setup       Run the setup utility\n\nDaemon:\n  go          Start the pmesh node with a manifest\n  preview     Previews the rendered manifest\n\nAdditional Commands:\n  completion  Generate the autocompletion script for the specified shell\n  create      Create a new manifest\n  help        Help about any command\n\nFlags:\n  -B, --bind string             Bind address for public connections (default \"0.0.0.0\")\n  -C, --cwd string              Sets the working directory before running the command\n  -D, --dumb                    Disable interactive prompts and complex ui\n  -E, --env string              Environment name, used for running multiple instances of pmesh\n  -h, --help                    help for pmesh\n  -H, --http int                Listen port for public HTTP (default 80)\n  -S, --https int               Listen port for public HTTPS (default 443)\n      --internal-port int       Internal port (default 8443)\n  -L, --local-bind string       Bind address for local connections (default \"127.0.0.1\")\n      --subnet-dialer string    Dialer subnet (default \"127.2.0.0/16\")\n      --subnet-service string   Service subnet (default \"127.1.0.0/16\")\n  -R, --url string              Specifies the node URL for the command if relevant\n  -V, --verbose                 Enable verbose logging\n\nUse \"pmesh [command] --help\" for more information about a command.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpme-sh%2Fpmesh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpme-sh%2Fpmesh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpme-sh%2Fpmesh/lists"}