[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73291":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},73291,"piko","andydunstall\u002Fpiko","andydunstall","An open-source alternative to Ngrok, designed to serve production traffic and be simple to host (particularly on Kubernetes)","",null,"Go",2150,85,11,0,3,7,60,"MIT License",false,"main",true,[24,25,26,27,28],"golang","http","http-proxy","reverse-proxy","tunneling","2026-06-12 04:01:08","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fimages\u002Flogo.png?raw=true\" width='40%'>\n\u003C\u002Fp>\n\n---\n\n- [What Is Piko?](#what-is-piko)\n- [Design Goals](#design-goals)\n- [Getting Started](#getting-started)\n- [How Piko Works](#how-piko-works)\n- [Support](#support)\n- [Docs](#docs)\n- [Contributing](#contributing)\n- [License](#license)\n\n## What Is Piko?\n\nPiko is a reverse proxy that provides a secure way to connect to services that\naren’t publicly routable, known as tunneling. Instead of sending traffic\ndirectly to your services, your upstream services open outbound-only\nconnections (tunnels) to Piko, then Piko forwards traffic to your services via\ntheir established connections.\n\nPiko has two key design goals:\n* Built to serve production traffic by running as a cluster of nodes for fault\ntolerance, horizontal scaling and zero-downtime deployments\n* Simple to host behind a HTTP(S) load balancer on Kubernetes\n\nTherefore Piko can be used as an open-source alternative to\n[Ngrok](https:\u002F\u002Fngrok.com\u002F).\n\nSuch as you may use Piko to expose services in a customer network, a bring your\nown cloud (BYOC) service, or to connect to user devices.\n\n## Reverse Proxy\n\nIn a traditional reverse proxy, you configure routing rules describing how to\nroute incoming traffic to your upstream services. The proxy will then open\nconnections to your services and forward incoming traffic. This means your\nupstream services must be discoverable and have an exposed port that's\naccessible from the proxy.\n\nWhereas with Piko, your upstreams open outbound-only connections to the\n[Piko server](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FServer) and specify\nwhat endpoint they are listening on. Piko then forwards incoming traffic to the\ncorrect upstream via its outbound connection.\n\nTherefore your services may run anywhere without requiring a public route, as\nlong as they can open a connection to the Piko server.\n\n## Endpoints\n\nUpstream services listen for traffic on a particular endpoint. Piko then\nmanages routing incoming connections and requests to an upstream service\nlistening on the target endpoint. If multiple upstreams are listening on the\nsame endpoint, requests are load balanced among the available upstreams.\n\nNo static configuration is required to configure endpoints, upstreams can\nlisten on any endpoint they choose.\n\nYou can open an upstream listener using the\n[Piko agent](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FAgent), which supports\nboth HTTP and TCP upstreams. Such as to listen on endpoint `my-endpoint` and\nforward traffic to `localhost:3000`:\n```\n# HTTP listener.\n$ piko agent http my-endpoint 3000\n\n# TCP listener.\n$ piko agent tcp my-endpoint 3000\n```\n\nYou can also use the [Go SDK](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FGo-SDK)\nto listen directly from your application using a standard `net.Listener`.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fimages\u002Foverview.png\" alt=\"overview\" width=\"80%\"\u002F>\n\u003C\u002Fp>\n\n### HTTP(S)\n\nPiko acts as a transparent HTTP(S) reverse proxy.\n\nIncoming HTTP(S) requests identify the target endpoint to connect to using\neither the `Host` header or `x-piko-endpoint` header.\n\nWhen using the `Host` header, Piko uses the first segment as the endpoint ID.\nSuch as if your hosting Piko with a wildcard domain at `*.piko.example.com`,\nsending a request to `foo.piko.example.com` will be routed to an upstream\nlistening on endpoint `foo`.\n\nTo avoid having to set up a wildcard domain you can instead use the\n`x-piko-endpoint` header, such as if Piko is hosted at `piko.example.com`, you\ncan send requests to endpoint `foo` using header `x-piko-endpoint: foo`.\n\n### TCP\n\nPiko supports proxying TCP traffic, though unlike HTTP it requires using either\n[Piko forward](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FForward) or the\n[Go SDK](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FGo-SDK) to map the desired\nlocal TCP port to the target endpoint.\n\nPiko forward listens on a local TCP port and forwards connections to the\nconfigured upstream endpoint via the Piko server.\n\nSuch as to listen on port `3000` and forward connections to endpoint\n`my-endpoint`:\n```\npiko forward 3000 my-endpoint\n```\n\nNote unlike with HTTP, there is no way to identify the target endpoint when\nconnecting with raw TCP, which is why you must first connect to Piko forward\ninstead of connecting directly to the Piko server. Piko forward can also\nauthenticate with the server and forward connections via TLS.\n\nYou can also use the [Go SDK](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FGo-SDK)\nto open a `net.Conn` that's connected to the configured endpoint.\n\n## Design Goals\n\n### Production Traffic\n\nPiko is built to serve production traffic by running the Piko server as a\ncluster of nodes to be fault tolerant, scale horizontally and support zero\ndowntime deployments.\n\nSay an upstream is listening for traffic on endpoint E and connects to node N.\nNode N will notify the other nodes that it has a listener for endpoint E, so\nthey can route incoming traffic for that endpoint to node N, which then\nforwards the traffic to the upstream via its outbound-only connection to the\nserver. If node N fails or is deprovisioned, the upstream listener will\nreconnect to another node and the cluster propagates the new routing\ninformation to the other nodes in the cluster. See\n[How Piko Works](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FHow-Piko-Works)\nfor details.\n\nPiko also has a Prometheus endpoint, access logging, and status API so you can\nmonitor your deployment and debug issues. See observability for details.\n\n### Hosting\n\nPiko is built to be simple to host on Kubernetes. This means it can run as a\ncluster of nodes (such as a StatefulSet), supports gradual rollouts, and can be\nhosted behind a HTTP load balancer or Kubernetes Gateway.\n\nUpstream services and downstream clients may connect to any node in the cluster\nvia the load balancer, then the cluster manages routing traffic to the\nappropriate upstream.\n\nSee [Kubernetes](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FServer-Kubernetes)\nfor details.\n\n## Getting Started\n\nSee [Getting Started](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FGetting-Started).\n\n## How Piko Works\n\nSee [How Piko Works](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002FHow-Piko-Works).\n\n## Support\n\nUse [GitHub Discussions](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fdiscussions) to\nask questions, get help, or suggest ideas.\n\n## Docs\n\nSee [Wiki](https:\u002F\u002Fgithub.com\u002Fandydunstall\u002Fpiko\u002Fwiki\u002F).\n\n## Contributing\n\nSee [CONTRIBUTING](.\u002FCONTRIBUTING.md).\n\n## License\nMIT License, please see [LICENSE](LICENSE) for details.\n","Piko 是一个开源的反向代理工具，旨在为生产环境提供安全的服务隧道连接，特别适合在 Kubernetes 上部署。它允许非公开路由的服务通过建立出站连接的方式与 Piko 服务器通信，从而实现对外部流量的安全转发。Piko 的设计目标包括支持集群模式以提高容错性和可扩展性，以及简化在 HTTP(S) 负载均衡器后的托管过程。该工具非常适合需要暴露内部服务给外部访问但又不想直接开放端口的场景，例如客户网络中的服务、自带云（BYOC）服务或用户设备连接等。基于 Go 语言开发，Piko 提供了灵活的配置选项和对 HTTP 及 TCP 协议的支持。",2,"2026-06-11 03:44:51","high_star"]