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.
Open-source enforcement at runtime that masks sensitive data and blocks destructive commands from AI agents. You change one thing: your agent's port.
| Date | Stars |
|---|---|
| 2026-08-05 | 776 |
| 2026-08-06 | 776 |
| 2026-08-14 | 780 |
| 2026-08-18 | 789 |
| 2026-08-19 | 791 |
| 2026-08-21 | 792 |
| 2026-08-22 | 794 |
| 2026-08-23 | 795 |
| 2026-08-24 | 796 |
| 2026-08-25 | 797 |
| 2026-08-26 | 800 |
| 2026-08-27 | 801 |
| 2026-08-28 | 801 |
| 2026-08-29 | 804 |
| 2026-08-30 | 805 |
| 2026-08-31 | 805 |
| 2026-09-02 | 806 |
| 2026-09-04 | 807 |
| 2026-09-06 | 807 |
| 2026-09-07 | 808 |
| 2026-09-08 | 808 |
| 2026-09-09 | 810 |
| 2026-09-10 | 811 |
| 2026-09-11 | 810 |
| 2026-09-15 | 811 |
| 2026-09-16 | 812 |
| 2026-09-17 | 814 |
| 2026-09-18 | 815 |
| 2026-09-19 | 816 |
| 2026-09-20 | 817 |
| 2026-09-23 | 819 |
| 2026-09-24 | 820 |
| 2026-09-25 | 820 |
| 2026-09-26 | 823 |
| 2026-09-30 | 823 |
| 2026-10-01 | 826 |
| 2026-10-02 | 828 |
| 2026-10-03 | 830 |
| 2026-10-06 | 831 |
| 2026-10-08 | 831 |
| 2026-10-09 | 832 |
| 2026-10-10 | 831 |
| 2026-10-12 | 831 |
| 2026-10-13 | 830 |
| 2026-10-14 | 831 |
| 2026-10-19 | 831 |
| 2026-10-21 | 832 |
| 2026-10-22 | 833 |
| 2026-10-23 | 834 |
| 2026-10-24 | 836 |
| 2026-10-25 | 837 |
| 2026-10-27 | 837 |
| 2026-10-28 | 839 |
| 2026-10-31 | 840 |
| 2026-11-01 | 841 |
| 2026-11-03 | 842 |
| 2026-11-04 | 842 |
Today
— stars today
This week
+3 stars this week
This month
+12 stars this month
Momentum
63.0
growth rate 0.36%/day
<h1 align="center">Runtime control for agents</h1>
<p align="center">
Data and context make agents useful. Runtime controls make them safe.<br>
An open-source sidecar. One binary, one config file, MIT.
</p>
<p align="center">
<a href="https://github.com/hoophq/hoop/releases"><img src="https://img.shields.io/github/v/release/hoophq/hoop?style=flat-square" alt="release"></a>
<a href="https://github.com/hoophq/hoop/blob/main/LICENSE"><img src="https://img.shields.io/github/license/hoophq/hoop?style=flat-square" alt="license"></a>
<a href="https://hub.docker.com/r/hoophq/hoop"><img src="https://img.shields.io/docker/pulls/hoophq/hoop?style=flat-square" alt="docker pulls"></a>
<a href="https://github.com/hoophq/hoop/stargazers"><img src="https://img.shields.io/github/stars/hoophq/hoop?style=flat-square" alt="stars"></a>
</p>
## What Your Agent Sees
**The query runs. The sensitive fields stay hidden.**
```
> pull the customer list for the churn report
● postgres(SELECT name, email FROM customers)
⎿ name email
Ada Lovelace [REDACTED:EMAIL_ADDRESS]
Grace Hopper [REDACTED:EMAIL_ADDRESS]
hoop.dev · emails redacted at the wire
```
Masking rewrites the response in memory. The request itself is never touched.
**The statement never reaches the database.**
```
> clean up the old test rows in customers
● postgres(DELETE FROM customers WHERE id = 1)
⎿ FATAL: destructive statements are not permitted
hoop.dev · guardrail: no-destructive-sql
```
A real pgwire error carrying the message you wrote in the config. The agent reads why it was refused instead of guessing at a dropped connection.
The agent never knows the sidecar exists. No SDK, no prompt changes, no agent-side config.
## Install
```bash
brew tap hoophq/brew https://github.com/hoophq/brew.git
brew install hoop
```
## Configure
One file. This one redacts emails and refuses destructive SQL.
```yaml
log_level: info
admin:
listen: 127.0.0.1:19000 # /healthz /stats /config /events
mask: # Data Masking
enabled: true
rules:
- {name: emails, entity: EMAIL_ADDRESS, strategy: redact}
policy: # Guardrails
enforce: true
rules:
- name: no-destructive-sql
type: operation
operations: [drop, delete, truncate]
guardails:
rules:
- name: no-destructive-sql
type: operation
operations: [drop, delete, truncate]
message: destructive statements are not permitted
listeners:
- name: localdb
protocol: postgres # postgres | mssql | http
listen: 127.0.0.1:15432 # where clients connect
upstream: 127.0.0.1:5432 # your real resource
connection: localdb
```
## Run
```bash
hoop start sidecar # no config: a built-in default
hoop start sidecar --config config.yaml # start
hoop start sidecar --config config.yaml --validate # check the config, then exit
```
With no config at all, the sidecar starts anyway: one loopback URL that
forwards to the [getting-started guide](https://hoop.dev/docs). It inspects
no traffic — it exists so your first run works — and the terminal says how
to replace it with a real config.
Point your agent at `127.0.0.1:15432` instead of the database. Your agents change one thing: the port in their connection string. The sidecar runs next to your database, not in place of it.
## The Four Controls
**Data Masking.** Rewrites sensitive values in the response, in memory, before they reach the client. The request itself is never touched.
**Guardrails.** An ordered deny list checked against every statement. Destructive ones never reach the database, and the client reads the reason you wrote.
**Session Analyzer.** An agent scores every action's intent and syntax for risk before it executes. Local rules run first, so a statement a guardrail already refuses never costs a model call.
**Reviews.** Risky operations are escalated to a human for one-off approvaExcerpt of 8,760 characters
Read on GitHub732
288
107
98
73
70
66
34
16
15
7
6
3
2
1
1
Dat Tran · DATANOMIQ · Germany
1
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:7ba817bb9ca226e6, topic:llm
matched fp:7ba817bb9ca226e6, topic:mcp