An open API service indexing awesome lists of open source software.

https://github.com/node9-ai/node9-proxy

The Execution Security Layer for the Agentic Era. Providing deterministic "Sudo" governance and audit logs for autonomous AI agents.
https://github.com/node9-ai/node9-proxy

ai-safety ai-security claude-code gemini gemini-cli llm llm-agent mcp-server

Last synced: 10 days ago
JSON representation

The Execution Security Layer for the Agentic Era. Providing deterministic "Sudo" governance and audit logs for autonomous AI agents.

Awesome Lists containing this project

README

          

๐Ÿ›ก๏ธ Node9


What did your AI agent actually do? Find out.



npm version
monthly downloads
License: Apache 2.0
Documentation
Try on HF Spaces

Node9 sits between your AI agent and the tools it can use โ€” **discover** what it's already been doing, **protect** against risky actions in real time, and **review** what happened over any time window.

Works with **Claude Code ยท Codex CLI ยท Gemini CLI ยท Cursor ยท Windsurf ยท any MCP server**.

## What Node9 does

- ๐Ÿ” **Discover** โ€” scan every past AI session for credential leaks, agent loops, blocked operations, and every secret on disk an agent could reach right now
- ๐Ÿ›ก **Protect** โ€” review or block risky commands before they run โ€” `rm -rf`, `git push --force`, `DROP TABLE`, credential reads, `curl | bash`, AWS/GitHub/Stripe key leaks
- ๐Ÿ“Š **Review** โ€” period-windowed report (today / week / month / 90 days) โ€” cost per agent, top tools, shields fired, blast radius

## Retrospective scan

This is my own machine โ€” 90 days while building Node9. Score 25/100, 5 credential files an AI agent could reach right now.

```bash
npx node9-ai scan # before installation, runs in ~10s, nothing uploads
node9 scan # after installation, same output
```


Node9 scan scorecard

## Live monitoring


Node9 monitor dashboard

`node9 monitor` opens an interactive terminal dashboard with two views:

- **`[1]` Realtime** โ€” live activity, approvals, security alerts, current risk score
- **`[2]` Report** โ€” period-windowed summary: cost, top tools, shields fired, blast radius

## Report

Press `[2]` in monitor for a period-windowed summary. Toggle the window with `[T]oday` ยท `[W]eek` ยท `[M]onth` ยท `[N]inety` โ€” same panels as the scan above, driven by your post-install audit log.


Node9 monitor [2] Report

```bash
node9 monitor # press [2] for Report view
node9 report --period 7d # CLI form, no TUI
```

## Install

```bash
# macOS / Linux
brew tap node9-ai/node9 && brew install node9

# or via npm (any platform)
npm install -g node9-ai
```

```bash
node9 init # auto-wires Claude Code, Gemini CLI, Cursor, Codex, MCP servers
node9 doctor # verify everything is wired correctly
```

Requires Node.js 18+.

## Shields โ€” curated rule packs

Each shield is a curated rule set for a service or domain. Enable only what you need.

| Shield | What it catches | Enable |
| ----------------- | ------------------------------------------------------------------------------ | ------------------------------------- |
| `project-jail` | Blocks reads of `~/.ssh`, `~/.aws`, `.env`, credentials via Bash and Read tool | `node9 shield enable project-jail` |
| `bash-safe` | `curl \| bash`, `rm -rf /`, disk overwrite, `eval` of remote | `node9 shield enable bash-safe` |
| `postgres` | `DROP TABLE`, `TRUNCATE`, `DROP COLUMN`, `DELETE` without `WHERE` | `node9 shield enable postgres` |
| `mongodb` | `dropDatabase`, `drop()`, `deleteMany({})`, index drops | `node9 shield enable mongodb` |
| `redis` | `FLUSHALL`, `FLUSHDB`, `CONFIG SET` on a live server | `node9 shield enable redis` |
| `aws` | S3 delete, EC2 terminate, IAM changes, RDS destroy | `node9 shield enable aws` |
| `k8s` | namespace delete, `helm uninstall`, cluster role wipes | `node9 shield enable k8s` |
| `docker` | `system prune`, `volume prune`, `rm -f` containers | `node9 shield enable docker` |
| `github` | `gh repo delete`, remote branch deletion, settings changes | `node9 shield enable github` |
| `filesystem` | `chmod 777`, writes under `/etc/`, `/boot/`, `/usr/` | `node9 shield enable filesystem` |
| `mcp-tool-gating` | unapproved MCP tools silently activating new capabilities | `node9 shield enable mcp-tool-gating` |

```bash
node9 shield list # show all shields + status
```

## Always on โ€” no config needed

- **Git** โ€” catches `git push --force`, `git reset --hard`, `git clean -fd`
- **SQL** โ€” catches `DELETE` / `UPDATE` without `WHERE`, `DROP TABLE`, `TRUNCATE`
- **Shell** โ€” catches `curl | bash`, unauthorized `sudo`
- **DLP** โ€” flags AWS keys, GitHub tokens, Stripe keys, PEM private keys in any tool argument, file contents, or shell config (`~/.zshrc`, `~/.bashrc`)
- **Response DLP** โ€” background scanner reads Claude's conversation history and alerts you if Claude _wrote_ a secret in its response text
- **Auto-undo** โ€” git snapshot before every AI file edit โ†’ `node9 undo` to revert
- **Skills pinning** โ€” SHA-256 verification of installed Claude skills / plugins between sessions

## MCP gateway

Wrap any MCP server transparently. The agent sees the same server โ€” Node9 intercepts every tool call.

```json
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
```

Or just run `node9 init` โ€” it wraps your existing MCP servers automatically.

๐Ÿ” MCP tool pinning โ€” rug-pull defense

MCP servers can change their tool definitions between sessions. A compromised or malicious server could silently add, remove, or modify tools after you first trusted it โ€” a **rug pull** attack.

Node9 pins tool definitions on first use:

1. **First connection** โ€” gateway records a SHA-256 hash of every tool's name, description, and schema
2. **Subsequent connections** โ€” hash is compared; if tools changed, the session is **quarantined** and every tool call is blocked until a human reviews and approves the change
3. **Corrupt pin state** โ€” fails closed (blocks), never silently re-trusts

```bash
node9 mcp pin list # show all pinned servers and hashes
node9 mcp pin update # remove pin, re-pin on next connection
node9 mcp pin reset # clear all pins
```

## Other commands

Beyond the three flow commands above (`scan` / `monitor` / `report`):

| Command | What it shows | When to use |
| ---------------- | --------------------------------------------------------- | --------------------------------------- |
| `node9 blast` | What an AI agent can reach right now โ€” files, creds, env | First thing to run on any machine |
| `node9 tail` | Live stream of every tool call (text-only, no TUI) | Piping into other tools, CI, logs |
| `node9 sessions` | Session history with prompt, tool trace, cost, snapshot | Reviewing a handoff or past work |
| `node9 dlp` | Credential-leak findings in Claude response text | Any time a DLP desktop alert fires |
| `node9 mask` | Redact plaintext secrets from local session history files | After a DLP finding โ€” cleans local disk |

Plus a **live HUD** in your Claude Code statusline:

```
๐Ÿ›ก node9 | standard | [bash-safe] | โœ… 12 allowed ๐Ÿ›‘ 2 blocked ๐Ÿšจ 0 dlp | ~$0.43
๐Ÿ“Š claude-opus-4-7 | ctx [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘] 54% | 5h [โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘] 12% | 7d [โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘] 7%
๐Ÿ—‚ 2 CLAUDE.md | 8 rules | 3 MCPs | 4 hooks
```

## Reading the data โ€” what the numbers mean

Node9 surfaces the signal. Here are the patterns worth knowing:

| Signal | Likely meaning |
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| `Would have blocked` โ‰ฅ 5 in a week | Agent is attempting high-impact ops; shields are worth reviewing |
| Single `review-git-push` rule >50% of findings | Your own rule is firing as intended โ€” not a risk, just supervision |
| DLP finding in `user-prompt` tool | You pasted a secret into your own prompt โ€” rotate the key |
| Agent Loop ร—50+ on same file | Agent stuck in edit/test/fix cycle โ€” check context or slow down |
| MCP tool pin mismatch | Server changed its tools โ€” review before re-trusting |
| Large MCP response warning | That server is inflating your context window for every subsequent turn |
| `Response DLP` alert | Claude wrote a secret in its response text โ€” not blocked, rotate immediately |
| DLP finding in `tool-result` | Claude read a file containing a secret (`.env`, credentials) โ€” rotate the key and run `node9 mask` |
| DLP finding in `[Shell]` | Plaintext secret in `~/.zshrc` or `~/.bashrc` โ€” every AI session can see it |

One-off signals are normal; persistent patterns are what you act on.

## Python SDK โ€” govern any Python agent

```python
from node9 import configure, protect

configure(agent_name="my-agent", policy="require_approval")

@protect("bash")
def run_command(cmd: str) -> str:
...
```

**[Python SDK โ†’](https://github.com/node9-ai/node9-python)** ยท **[CI code review agent example โ†’](https://github.com/node9-ai/node9-pr-agent)**

## Under the hood

- **Scan** reads raw agent history from `~/.claude/projects/`, `~/.gemini/tmp/`, `~/.codex/sessions/` โ€” no API calls, fully offline
- **Runtime** wires PreToolUse hooks into Claude Code, Gemini CLI, and Codex โ€” hooks write to `~/.node9/audit.log` atomically
- **MCP gateway** is a stdio proxy; intercepts `tools/list` + `tools/call` JSON-RPC, forwards the rest
- **Policy engine** uses [mvdan-sh](https://github.com/mvdan/sh) for bash AST analysis โ€” defeats obfuscation via backslash escaping, variable substitution, eval of remote download
- **Shadow repo** for auto-undo lives at `~/.node9/snapshots//` โ€” never touches your `.git`

## Full docs

Config reference, smart rules, stateful rules, trusted hosts, approval modes, CLI reference โ€” at **[node9.ai/docs](https://node9.ai/docs)**.

## Related projects

- **[node9-python](https://github.com/node9-ai/node9-python)** โ€” Python SDK
- **[node9-pr-agent](https://github.com/node9-ai/node9-pr-agent)** โ€” GitHub Action that reviews PRs through Node9

## Enterprise

**Node9 Pro** adds governance locking, SAML/SSO, central audit export, and VPC deployment. See [node9.ai](https://node9.ai).

## License

Apache-2.0


Built with โ˜• and healthy paranoia.