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

https://github.com/edycutjong/vetoblast

๐Ÿ›ก๏ธ Zero-Trust AI Agent Terminal Proxy and Runtime Guard protecting developer credentials and workspaces.
https://github.com/edycutjong/vetoblast

ai-agents deberta nextjs react sandbox security tailwind zero-trust

Last synced: 16 days ago
JSON representation

๐Ÿ›ก๏ธ Zero-Trust AI Agent Terminal Proxy and Runtime Guard protecting developer credentials and workspaces.

Awesome Lists containing this project

README

          


VetoBlast icon

VetoBlast ๐Ÿ›ก๏ธ


Zero-trust runtime proxy that intercepts AI agent commands, redacts secrets, and vetoes destructive executions


VetoBlast


[![Live Demo](https://img.shields.io/badge/๐Ÿš€_Live-Demo-ef4444?style=for-the-badge)](https://vetoblast.edycu.dev)
[![Pitch Deck](https://img.shields.io/badge/๐Ÿ“Š_Pitch-Deck-10b981?style=for-the-badge)](https://vetoblast.edycu.dev/pitch.html)
[![YouTube Demo](https://img.shields.io/badge/โ–ถ_YouTube-Demo-FF0000?style=for-the-badge&logo=youtube&logoColor=white)](https://youtu.be/2yhqErPzRI8)
[![Tests](https://img.shields.io/badge/โœ…_Tests-51_passing-22c55e?style=for-the-badge)](#-testing--ci)
[![Built for UOE](https://img.shields.io/badge/UOE-Summer_of_Code_2026-8b5cf6?style=for-the-badge)](https://uoe-summer-of-code.devpost.com/)


![Next.js](https://img.shields.io/badge/Next.js_16-black?style=flat&logo=next.js)
![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)
![React](https://img.shields.io/badge/React_19-61DAFB?style=flat&logo=react&logoColor=black)
![Tailwind](https://img.shields.io/badge/Tailwind_v4-38B2AC?style=flat&logo=tailwindcss&logoColor=white)
![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat&logo=node.js&logoColor=white)
![Python](https://img.shields.io/badge/Python_3.12-3776AB?style=flat&logo=python&logoColor=white)
[![CI](https://github.com/edycutjong/vetoblast/actions/workflows/ci.yml/badge.svg)](https://github.com/edycutjong/vetoblast/actions/workflows/ci.yml)

---

## ๐Ÿ’ก The Problem & Solution

AI coding agents scan `.env` files, execute shell commands, and send prompts to external LLMs โ€” **without security awareness**. An intern's agent accidentally pushed production AWS credentials to a public repo, costing **$85,000** before the alert fired.

**VetoBlast** is a zero-trust terminal proxy that intercepts every AI agent command in real-time. It uses entropy analysis + a local DeBERTa-Sec classifier to distinguish real secrets from harmless hashes, redacts credentials in-flight, and vetoes destructive commands โ€” all in **<10ms** overhead.

**Key Features:**
- ๐Ÿ”’ **In-Flight Secret Redaction**: Detects and replaces API keys, tokens, and passwords before they reach external services
- ๐Ÿง  **DeBERTa-Sec AI Classifier**: Local ONNX model distinguishes real secrets from commit hashes (2% false positive rate)
- ๐Ÿšซ **Command Veto Gate**: Blocks destructive patterns (`rm -rf`, `chmod 777`, `DROP TABLE`) instantly
- ๐Ÿ“Š **Cyberpunk SOC Dashboard**: Real-time terminal tracer, threat speedometer, and incident review console
- ๐Ÿ  **100% Local**: No credentials ever leave the developer's machine

## ๐Ÿ“ธ Screenshots

Click to expand all dashboard screenshots

### Stripe API Key Exfiltration โ€” BLOCKED
> Agent `copilot-agent-v1` attempted a git commit + push containing a Stripe live API key. VetoBlast detected the secret with 97% confidence and blocked execution.

Incident 001 โ€” Stripe key exfiltration blocked

---

### AWS Secret Key Leak via curl โ€” BLOCKED
> Agent `cursor-agent-v3` piped config JSON containing an AWS secret key to an external LLM API endpoint. Entropy analysis flagged it at 4.91.

Incident 002 โ€” AWS secret key leak blocked

---

### Destructive Shell Command โ€” VETOED
> Agent attempted `rm -rf /usr/local/bin && chmod 777 /etc/passwd`. Pattern-matched and vetoed before execution.

Incident 003 โ€” Destructive command vetoed

---

### Safe Command โ€” APPROVED
> `npm run build` passed all scans. No secrets detected, no destructive patterns.

Incident 004 โ€” Safe command approved

---

### Deploy Script with GitHub PAT โ€” BLOCKED
> `python deploy.sh` contained a GitHub Personal Access Token in plaintext. DeBERTa classified intent as exfiltration.

Incident 005 โ€” GitHub PAT in deploy script

---

### Git Config Password Exposure โ€” REDACTED
> Agent attempted `git config --global user.password` with a plaintext password. VetoBlast redacted to `[REDACTED_PWD]`.

Incident 006 โ€” Git password redacted

## ๐Ÿ—๏ธ Architecture & Tech Stack

```mermaid
graph TD
Agent[Autonomous AI Agent] <-->|Terminal Commands / Stdin| Proxy[VetoBlast Proxy
Node.js / node-pty]
Proxy -->|Raw Streams| ONNX[DeBERTa-Sec Classifier
Python FastAPI / ONNX-runtime]
Proxy <-->|WebSocket Stream| UI[Next.js 16 / React 19 Dashboard]
UI <-->|Approve/Reject Signals| Proxy
Proxy -->|Log Actions| Supabase[Supabase Database]
Proxy <-->|Filter Output / Stdout| Agent
```

| Layer | Technology |
|---|---|
| **Dashboard** | Next.js 16 (App Router), React 19, Tailwind CSS v4 |
| **Proxy Engine** | Node.js, node-pty (terminal stream interception) |
| **AI Classifier** | Python 3.12, FastAPI, DeBERTa-Sec (ONNX-runtime) |
| **Audit Log** | Supabase (PostgreSQL) |
| **Communication** | WebSocket (real-time threat stream) |

## ๐Ÿ—„๏ธ Database Schema

Data is persisted in **Supabase (PostgreSQL)** with Row-Level Security enabled. All tables use the `vb_` prefix to namespace within the shared Supabase instance.

```mermaid
erDiagram
vb_incidents {
text id PK
timestamptz timestamp
text agent_id
text command_attempted
varchar threat_category
varchar threat_level
text redacted_payload
jsonb detected_secrets
varchar status
timestamptz created_at
}
vb_metrics {
serial id PK
int total_scans
int total_blocked
int total_approved
numeric avg_scan_latency_ms
numeric false_positive_rate
int secrets_caught
text uptime
}
vb_terminal_feed {
serial id PK
text time
text type
text msg
timestamptz created_at
}
```

| Table | Purpose | Rows |
|---|---|---|
| `vb_incidents` | Intercepted agent commands โ€” threat level, redacted payload, detected secrets (JSONB) | 6 |
| `vb_metrics` | Aggregate scanner stats โ€” total scans, blocked count, latency, false positive rate | 1 |
| `vb_terminal_feed` | Live terminal proxy log โ€” timestamped block/pass/scan events | 8 |

> **RLS Policy**: Anonymous read access enabled on all tables. Write operations require `service_role` key.

## ๐Ÿš€ Getting Started

### Prerequisites
- Node.js โ‰ฅ 20
- npm

### Installation
```bash
git clone https://github.com/edycutjong/vetoblast.git
cd vetoblast
npm install
cp .env.example .env.local
npm run dev
```

## ๐Ÿงช Testing & CI

**51 passing tests** across 4 test suites โ€” covering mock data integrity, incident log consistency, entropy/confidence validation, threat level coverage, metrics cross-validation, terminal feed type validation, and all interactive dashboard state transitions.

```bash
npm test # Run all 51 tests
npm run test:coverage # Coverage report
npm run lint # ESLint
npm run typecheck # TypeScript check
npm run build # Production build
npm run ci # Full CI pipeline (lint + typecheck + test + build)
```

CI runs on Node.js 20, 22, and 24 via GitHub Actions on every push.

## ๐Ÿ“ Project Structure
```
vetoblast/
โ”œโ”€โ”€ docs/ # README assets
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ app/ # Next.js pages + __tests__/
โ”‚ โ””โ”€โ”€ lib/ # Mock data & utilities + __tests__/
โ”œโ”€โ”€ .github/ # CI workflows
โ”œโ”€โ”€ .env.example # Environment template
โ”œโ”€โ”€ LICENSE # MIT
โ””โ”€โ”€ README.md # You are here
```

## Acknowledged Limitation
**Obfuscated Key Split**: If a secret key is split across multiple variables and concatenated during execution, raw stream evaluations may fail to identify the pattern, requiring supplementary environment inspection rules.

## ๐Ÿ”จ Built With

- [Next.js 16](https://nextjs.org/) โ€” App Router, React Server Components
- [React 19](https://react.dev/) โ€” UI framework
- [TypeScript](https://www.typescriptlang.org/) โ€” Type-safe JavaScript
- [Tailwind CSS v4](https://tailwindcss.com/) โ€” Utility-first styling
- [Node.js](https://nodejs.org/) + [node-pty](https://github.com/nickarora/node-pty) โ€” Terminal stream interception
- [Python 3.12](https://www.python.org/) โ€” AI classifier backend
- [FastAPI](https://fastapi.tiangolo.com/) โ€” REST API server
- [DeBERTa-Sec](https://huggingface.co/microsoft/deberta-v3-base) โ€” Fine-tuned ONNX classifier for command intent
- [ONNX Runtime](https://onnxruntime.ai/) โ€” Local model inference
- [Supabase](https://supabase.com/) โ€” PostgreSQL audit log with RLS
- [Jest](https://jestjs.io/) โ€” Testing framework (51 passing tests)
- [GitHub Actions](https://github.com/features/actions) โ€” CI/CD pipeline
- [Vercel](https://vercel.com/) โ€” Frontend deployment

## ๐Ÿ“„ License
[MIT](LICENSE) ยฉ 2026 Edy Cu

## ๐Ÿ™ Acknowledgments
Built for **UOE Summer of Code 2026**. Thank you to the organizers and judges for the opportunity.