Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A golang implementation of endlessh (SSH tarpit) exporting Prometheus metrics, visualized by a Grafana dashboard.
| Date | Stars |
|---|---|
| 2026-07-24 | 1273 |
| 2026-07-25 | 1273 |
| 2026-07-28 | 1273 |
| 2026-07-30 | 1273 |
| 2026-08-06 | 1273 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
5.0
growth rate 0.00%/day
# endlessh-go
[](https://github.com/shizunge/endlessh-go/releases/latest)
[](https://github.com/shizunge/endlessh-go/blob/main/LICENSE)
[](https://hub.docker.com/r/shizunge/endlessh-go)
[](https://hub.docker.com/r/shizunge/endlessh-go)
[](https://github.com/shizunge/endlessh-go/actions/workflows/on-push.yml)
[](https://www.codefactor.io/repository/github/shizunge/endlessh-go)
A golang implementation of [endlessh](https://nullprogram.com/blog/2019/03/22/) exporting Prometheus metrics, visualized by a Grafana dashboard.

## Introduction
[Endlessh](https://nullprogram.com/blog/2019/03/22/) is a great idea that not only blocks the brute force SSH attacks, but also wastes attackers time as a kind of counter-attack. Besides trapping the attackers, I also want to visualize the Geolocations and other statistics of the sources of attacks. Unfortunately the wonderful original [C implementation of endlessh](https://github.com/skeeto/endlessh) only provides text based log, but I do not like the solution that writes extra scripts to parse the log outputs, then exports the results to a dashboard, because it would introduce extra layers in my current setup and it would depend on the format of the text log file rather than some structured data. Thus I create this golang implementation of endlessh to export [Prometheus](https://prometheus.io/) metrics and a [Grafana](https://grafana.com/) dashboard to visualize them.
If you want a dashboard of sources of attacks and do not mind the endlessh server, besides trapping the attackers, does extra things including: translating IP to Geohash, exporting Prometheus metrics, and using more memory (about 10MB), this is the solution for you.
## Getting Started
Clone the repo then build from source:
```
go build .
./endlessh-go &
```
Alternatively, you can use the [docker image](https://hub.docker.com/r/shizunge/endlessh-go):
```
docker run -d -p 2222:2222 shizunge/endlessh-go -logtostderr -v=1
```
It listens to port `2222` by default.
Then you can try to connect to the endlessh server. Your SSH client should hang there.
```
ssh -p 2222 localhost
```
If you want log like the [C implementation](https://github.com/skeeto/endlessh), you need to set both CLI arguments `-logtostderr` and `-v=1`, then the log will go to stderr. You can set different log destinations via CLI arguments.
Also check out [examples](./examples/README.md) for the setup of the full stack.
## Usage
`./endlessh-go --help`
```
Usage of ./endlessh-go
-alsologtostderr
log to standard error as well as files
-conn_type string
Connection type. Possible values are tcp, tcp4, tcp6 (default "tcp")
-enable_prometheus
Enable prometheus (deprecated, use prometheus_enabled)
-geoip_supplier string
Supplier to obtain Geohash of IPs. Possible values are "off", "ip-api", "max-mind-db" (default "off")
-healthcheck
Perform healthcheck and exit. GET healthcheck_host:healthcheck_port/health and exit 1 if status is not ok or timeout is exceeded.
-healthcheck_enabled
Enable healthcheck
-healthcheck_host string
The address for healthcheck. (default "127.0.0.1")
-healthcheck_port string
HTTP port for healthcheck; Serves JSON with status and uptime at /health. (default "51000")Excerpt of 8,957 characters
Read on GitHub251
122
8
7
5
4
2
2
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:695acfa9fe21b06f, topic:monitoring