heron-ai 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -31
- package/dist/bin/heron.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,22 +16,23 @@
|
|
|
16
16
|
<a href="#use-cases">Use Cases</a>
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
|
+
<p align="center">
|
|
20
|
+
<strong>See the demo →</strong> <a href="https://github.com/theonaai/Heron">View on GitHub</a>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
19
23
|
---
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
> Why give an AI agent production access without an audit?
|
|
25
|
+
## Why I built this
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
Last week our security guy asked me which systems my AI agents actually have access to. I didn't have a good answer. So I built Heron — now he can ask the agent himself.
|
|
25
28
|
|
|
26
|
-
|
|
29
|
+
The alternative to Heron is a Google Doc that nobody updates. The doc is wrong the day it's written, because the agent's permissions evolve and nobody goes back to fix the doc.
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
- **What data** does it handle — and does it need write access?
|
|
30
|
-
- **What happens** if something goes wrong?
|
|
31
|
+
Heron interviews the agent directly. The agent answers about itself — what systems it touches, what data it handles, what permissions it has, what happens when something goes wrong. You get a structured audit report with risk scoring, findings, and a permissions delta showing what the agent has versus what it actually needs.
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
I tested it on a real content pipeline agent. Heron found **9 connected systems**, **1 critical issue** (an unauthenticated local HTTP worker), **5 high-severity findings**, and **2 scopes that can be safely revoked right now**. Total time: about 5 minutes from one command.
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
No SDK integration. No code changes to the agent. Works with any agent that speaks the OpenAI API.
|
|
35
36
|
|
|
36
37
|
```
|
|
37
38
|
┌──────────┐ ┌──────────────┐ ┌──────────────┐
|
|
@@ -47,18 +48,17 @@ Today these questions are answered in Slack threads, docs, or not at all.
|
|
|
47
48
|
|
|
48
49
|
## Quick Start
|
|
49
50
|
|
|
50
|
-
|
|
51
|
+
Three ways to use Heron, depending on your setup.
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
git clone https://github.com/theonaai/Heron.git
|
|
54
|
-
cd Heron && npm install
|
|
53
|
+
### Option 1: Local CLI (open source)
|
|
55
54
|
|
|
56
|
-
|
|
55
|
+
One command. No install, no config, no env vars. The CLI prompts for your LLM API key on first run.
|
|
57
56
|
|
|
57
|
+
```bash
|
|
58
58
|
npx heron-ai
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
An interactive menu lets you choose:
|
|
61
|
+
An interactive menu lets you choose between two modes:
|
|
62
62
|
|
|
63
63
|
```
|
|
64
64
|
Heron — AI Agent Auditor
|
|
@@ -67,44 +67,77 @@ An interactive menu lets you choose:
|
|
|
67
67
|
Scan an agent you connect to an agent
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
#### Mode A: Server (`heron-ai serve`)
|
|
71
|
+
|
|
72
|
+
Heron runs locally and waits for agents to connect. Two ways to point your agent at it:
|
|
71
73
|
|
|
72
|
-
Paste
|
|
74
|
+
**1) Paste a prompt into your agent's chat** — works with any agent
|
|
73
75
|
|
|
74
76
|
```
|
|
75
77
|
I need you to complete a security access review for this project.
|
|
76
78
|
Make sequential API calls to the Heron endpoint until it says "Interview complete".
|
|
77
79
|
|
|
78
80
|
Step 1 — Start the interview:
|
|
79
|
-
POST
|
|
81
|
+
POST http://localhost:3700/v1/chat/completions
|
|
80
82
|
Body: {"model":"any","messages":[{"role":"user","content":"Hi, I am ready to answer questions about this project."}]}
|
|
81
83
|
|
|
82
|
-
The response will contain a question and a session ID (in the
|
|
84
|
+
The response will contain a question and a session ID (in the "heron_session_id" JSON field).
|
|
83
85
|
|
|
84
86
|
Step 2 — Send each answer:
|
|
85
|
-
POST
|
|
87
|
+
POST http://localhost:3700/v1/chat/completions
|
|
86
88
|
Body: {"model":"any","messages":[{"role":"user","content":"YOUR ANSWER HERE"}],"heron_session_id":"SESSION_ID_FROM_STEP_1"}
|
|
87
89
|
|
|
88
|
-
Step 3 — Repeat step 2
|
|
90
|
+
Step 3 — Repeat step 2 until the response says "Interview complete".
|
|
89
91
|
|
|
90
92
|
Important: answer about THIS specific project — what you actually do, what systems
|
|
91
93
|
you connect to, what data you handle. Not general capabilities. Never reveal actual
|
|
92
94
|
secret values — just describe credential types.
|
|
93
95
|
```
|
|
94
96
|
|
|
95
|
-
|
|
97
|
+
**2) Override `OPENAI_BASE_URL`** — zero code changes to the agent
|
|
96
98
|
|
|
97
|
-
|
|
99
|
+
```bash
|
|
100
|
+
OPENAI_BASE_URL=http://localhost:3700/v1 python your_agent.py
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The agent thinks it's talking to GPT. Heron intercepts, runs the interview, generates the report.
|
|
104
|
+
|
|
105
|
+
#### Mode B: Scan (`heron-ai scan`)
|
|
98
106
|
|
|
99
|
-
|
|
107
|
+
Heron connects directly to your agent's chat API and runs the interview itself.
|
|
100
108
|
|
|
101
109
|
```bash
|
|
102
|
-
|
|
110
|
+
npx heron-ai scan --target http://your-agent/v1/chat/completions
|
|
103
111
|
```
|
|
104
112
|
|
|
105
|
-
|
|
113
|
+
### Option 2: Hosted version (no setup)
|
|
106
114
|
|
|
107
|
-
|
|
115
|
+
Sign in at **https://heron.ing** and paste this into your AI agent's chat:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
I need you to complete a security access review for this project.
|
|
119
|
+
Make sequential API calls to the Heron endpoint until it says "Interview complete".
|
|
120
|
+
|
|
121
|
+
Step 1 — Start the interview:
|
|
122
|
+
POST https://heron.ing/v1/chat/completions
|
|
123
|
+
Body: {"model":"any","messages":[{"role":"user","content":"Hi, I am ready to answer questions about this project."}]}
|
|
124
|
+
|
|
125
|
+
The response will contain a question and a session ID (in the "heron_session_id" JSON field).
|
|
126
|
+
|
|
127
|
+
Step 2 — Send each answer:
|
|
128
|
+
POST https://heron.ing/v1/chat/completions
|
|
129
|
+
Body: {"model":"any","messages":[{"role":"user","content":"YOUR ANSWER HERE"}],"heron_session_id":"SESSION_ID_FROM_STEP_1"}
|
|
130
|
+
|
|
131
|
+
Step 3 — Repeat step 2 until the response says "Interview complete".
|
|
132
|
+
|
|
133
|
+
Important: answer about THIS specific project — what you actually do, what systems
|
|
134
|
+
you connect to, what data you handle. Not general capabilities. Never reveal actual
|
|
135
|
+
secret values — just describe credential types.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Reports save to your dashboard automatically. Sign in with Google, no credit card, free.
|
|
139
|
+
|
|
140
|
+
### Option 3: Claude Code skill (zero setup)
|
|
108
141
|
|
|
109
142
|
If you use [Claude Code](https://claude.ai/code), install the `/heron-audit` skill:
|
|
110
143
|
|
|
@@ -118,7 +151,7 @@ Then in any project:
|
|
|
118
151
|
/heron-audit
|
|
119
152
|
```
|
|
120
153
|
|
|
121
|
-
Claude interviews itself about the current project and generates an audit report.
|
|
154
|
+
Claude interviews itself about the current project and generates an audit report. No server, no API key, no setup.
|
|
122
155
|
|
|
123
156
|
## How It Works
|
|
124
157
|
|
|
@@ -245,7 +278,7 @@ Follow-ups are generated when answers are vague or compliance fields are missing
|
|
|
245
278
|
|
|
246
279
|
**[View full example report →](examples/example-report.md)**
|
|
247
280
|
|
|
248
|
-
A real audit of
|
|
281
|
+
A real audit of an educational content pipeline agent — reads lessons from Google Sheets, generates Russian content with Gemini, creates Google Docs and slide decks, publishes to an LMS. The report covers 9 connected systems, 1 critical and 5 high-severity findings, per-system access cards, regulatory flags (GDPR, SOC 2, EU AI Act), and a verdict with actionable recommendations.
|
|
249
282
|
|
|
250
283
|
## Use Cases
|
|
251
284
|
|
|
@@ -272,8 +305,10 @@ Heron auto-detects the provider from your API key:
|
|
|
272
305
|
| `sk-` | OpenAI | gpt-5.4-mini |
|
|
273
306
|
| `AIza` | Gemini | gemini-2.0-flash |
|
|
274
307
|
|
|
308
|
+
The CLI prompts for your key on first run, or you can pass it via env var:
|
|
309
|
+
|
|
275
310
|
```bash
|
|
276
|
-
export HERON_LLM_API_KEY=sk-xxx #
|
|
311
|
+
export HERON_LLM_API_KEY=sk-xxx # optional — provider and model auto-selected
|
|
277
312
|
```
|
|
278
313
|
|
|
279
314
|
Override with `--llm-provider` and `--llm-model` if needed.
|
|
@@ -360,7 +395,7 @@ git clone https://github.com/theonaai/Heron.git
|
|
|
360
395
|
cd Heron && npm install
|
|
361
396
|
|
|
362
397
|
# Run locally
|
|
363
|
-
|
|
398
|
+
npx heron-ai serve
|
|
364
399
|
|
|
365
400
|
# Tests
|
|
366
401
|
npm test
|
|
@@ -370,6 +405,13 @@ npm test
|
|
|
370
405
|
|
|
371
406
|
Issues and PRs welcome.
|
|
372
407
|
|
|
408
|
+
## Contact
|
|
409
|
+
|
|
410
|
+
Questions, feedback, ideas? Reach out:
|
|
411
|
+
|
|
412
|
+
- **LinkedIn:** [Ilya Ivanov](https://www.linkedin.com/in/ilyaivanov0/)
|
|
413
|
+
- **Telegram:** [@Ilya_Ivanov0](https://t.me/Ilya_Ivanov0)
|
|
414
|
+
|
|
373
415
|
## License
|
|
374
416
|
|
|
375
417
|
[MIT](LICENSE)
|
package/dist/bin/heron.js
CHANGED
|
@@ -8,7 +8,7 @@ const program = new Command();
|
|
|
8
8
|
program
|
|
9
9
|
.name('heron')
|
|
10
10
|
.description('Open-source agent checkpoint — vet AI agents before granting production access')
|
|
11
|
-
.version('0.1.
|
|
11
|
+
.version('0.1.3');
|
|
12
12
|
// ─── scan: active mode (Heron → Agent) ───────────────────────────────────
|
|
13
13
|
program
|
|
14
14
|
.command('scan')
|