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 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 &rarr;</strong> <a href="https://github.com/theonaai/Heron">View on GitHub</a>
21
+ </p>
22
+
19
23
  ---
20
24
 
21
- > You wouldn't give a contractor the keys to your office without checking their ID.
22
- > Why give an AI agent production access without an audit?
25
+ ## Why I built this
23
26
 
24
- ## Why Heron?
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 &mdash; now he can ask the agent himself.
25
28
 
26
- AI agents are requesting access to production systems &mdash; CRMs, databases, APIs, internal tools. Before granting access, someone needs to answer:
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
- - **What** does this agent actually do in this specific project?
29
- - **What data** does it handle &mdash; and does it need write access?
30
- - **What happens** if something goes wrong?
31
+ Heron interviews the agent directly. The agent answers about itself &mdash; 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
- Today these questions are answered in Slack threads, docs, or not at all.
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
- **Heron answers them automatically.** Point agents at it, get a structured audit report. No SDK integration, no code changes to the agent.
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
- ### Option 1: Interactive CLI
51
+ Three ways to use Heron, depending on your setup.
51
52
 
52
- ```bash
53
- git clone https://github.com/theonaai/Heron.git
54
- cd Heron && npm install
53
+ ### Option 1: Local CLI (open source)
55
54
 
56
- export HERON_LLM_API_KEY=sk-xxx # Anthropic, OpenAI, or Gemini key auto-detected
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
- ### Option 2: Use the hosted version
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 this into your AI agent's chat:
74
+ **1) Paste a prompt into your agent's chat** &mdash; 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 https://heron-open-source-production.up.railway.app/v1/chat/completions
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 text and in the "heron_session_id" JSON field).
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 https://heron-open-source-production.up.railway.app/v1/chat/completions
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 with each new answer until the response says "Interview complete".
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
- View reports at: https://heron-open-source-production.up.railway.app
97
+ **2) Override `OPENAI_BASE_URL`** &mdash; zero code changes to the agent
96
98
 
97
- ### Option 3: OPENAI_BASE_URL
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
- Redirect any OpenAI-compatible agent to Heron without changing the agent's code:
107
+ Heron connects directly to your agent's chat API and runs the interview itself.
100
108
 
101
109
  ```bash
102
- OPENAI_BASE_URL=http://localhost:3700/v1 python your_agent.py
110
+ npx heron-ai scan --target http://your-agent/v1/chat/completions
103
111
  ```
104
112
 
105
- The agent thinks it's talking to GPT. Heron intercepts, runs the interview, generates a report.
113
+ ### Option 2: Hosted version (no setup)
106
114
 
107
- ### Option 4: Claude Code skill (zero setup)
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 &rarr;](examples/example-report.md)**
247
280
 
248
- A real audit of a LinkedIn ICP matching agent &mdash; scans connections, evaluates profiles, saves leads to Google Sheets. The report covers findings, per-system access cards, regulatory flags, and a verdict with recommendations.
281
+ A real audit of an educational content pipeline agent &mdash; 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 # that's it — provider and model auto-selected
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
- HERON_LLM_API_KEY=sk-xxx npx heron-ai serve
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.0');
11
+ .version('0.1.3');
12
12
  // ─── scan: active mode (Heron → Agent) ───────────────────────────────────
13
13
  program
14
14
  .command('scan')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "heron-ai",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Open-source agent interrogator — audit what your AI agents do, need, and access",
5
5
  "type": "module",
6
6
  "bin": {