strix-agent 0.1.18__tar.gz → 0.3.1__tar.gz
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.
Potentially problematic release.
This version of strix-agent might be problematic. Click here for more details.
- {strix_agent-0.1.18 → strix_agent-0.3.1}/PKG-INFO +95 -15
- {strix_agent-0.1.18 → strix_agent-0.3.1}/README.md +94 -14
- {strix_agent-0.1.18 → strix_agent-0.3.1}/pyproject.toml +2 -2
- strix_agent-0.3.1/strix/agents/StrixAgent/strix_agent.py +82 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/agents/StrixAgent/system_prompt.jinja +23 -10
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/agents/base_agent.py +90 -10
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/agents/state.py +23 -2
- strix_agent-0.3.1/strix/interface/cli.py +171 -0
- strix_agent-0.3.1/strix/interface/main.py +482 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/base_renderer.py +2 -2
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/reporting_renderer.py +2 -1
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/scan_info_renderer.py +17 -12
- strix_agent-0.1.18/strix/cli/app.py → strix_agent-0.3.1/strix/interface/tui.py +107 -31
- strix_agent-0.3.1/strix/interface/utils.py +435 -0
- strix_agent-0.3.1/strix/prompts/README.md +64 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/prompts/__init__.py +1 -1
- strix_agent-0.3.1/strix/prompts/cloud/.gitkeep +0 -0
- strix_agent-0.3.1/strix/prompts/custom/.gitkeep +0 -0
- strix_agent-0.3.1/strix/prompts/frameworks/fastapi.jinja +142 -0
- strix_agent-0.3.1/strix/prompts/frameworks/nextjs.jinja +126 -0
- strix_agent-0.3.1/strix/prompts/protocols/graphql.jinja +215 -0
- strix_agent-0.3.1/strix/prompts/reconnaissance/.gitkeep +0 -0
- strix_agent-0.3.1/strix/prompts/technologies/firebase_firestore.jinja +177 -0
- strix_agent-0.3.1/strix/prompts/technologies/supabase.jinja +189 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/authentication_jwt.jinja +147 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/broken_function_level_authorization.jinja +146 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/business_logic.jinja +171 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/csrf.jinja +174 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/idor.jinja +195 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/insecure_file_uploads.jinja +188 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/mass_assignment.jinja +141 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/path_traversal_lfi_rfi.jinja +142 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/race_conditions.jinja +164 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/rce.jinja +154 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/sql_injection.jinja +151 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/ssrf.jinja +135 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/xss.jinja +169 -0
- strix_agent-0.3.1/strix/prompts/vulnerabilities/xxe.jinja +184 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/runtime/docker_runtime.py +28 -7
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/runtime/runtime.py +4 -1
- strix_agent-0.3.1/strix/telemetry/__init__.py +4 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/telemetry}/tracer.py +21 -9
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/agents_graph/agents_graph_actions.py +17 -12
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/agents_graph/agents_graph_actions_schema.xml +10 -14
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/executor.py +1 -1
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/finish/finish_actions.py +1 -1
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/registry.py +1 -1
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/reporting/reporting_actions.py +1 -1
- strix_agent-0.1.18/strix/agents/StrixAgent/strix_agent.py +0 -72
- strix_agent-0.1.18/strix/cli/main.py +0 -702
- strix_agent-0.1.18/strix/prompts/vulnerabilities/authentication_jwt.jinja +0 -129
- strix_agent-0.1.18/strix/prompts/vulnerabilities/business_logic.jinja +0 -143
- strix_agent-0.1.18/strix/prompts/vulnerabilities/csrf.jinja +0 -168
- strix_agent-0.1.18/strix/prompts/vulnerabilities/idor.jinja +0 -164
- strix_agent-0.1.18/strix/prompts/vulnerabilities/race_conditions.jinja +0 -194
- strix_agent-0.1.18/strix/prompts/vulnerabilities/rce.jinja +0 -206
- strix_agent-0.1.18/strix/prompts/vulnerabilities/sql_injection.jinja +0 -215
- strix_agent-0.1.18/strix/prompts/vulnerabilities/ssrf.jinja +0 -168
- strix_agent-0.1.18/strix/prompts/vulnerabilities/xss.jinja +0 -221
- strix_agent-0.1.18/strix/prompts/vulnerabilities/xxe.jinja +0 -276
- {strix_agent-0.1.18 → strix_agent-0.3.1}/LICENSE +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/agents/StrixAgent/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/agents/__init__.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/__init__.py +0 -0
- /strix_agent-0.1.18/strix/cli/assets/cli.tcss → /strix_agent-0.3.1/strix/interface/assets/tui_styles.tcss +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/__init__.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/agents_graph_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/browser_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/file_edit_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/finish_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/notes_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/proxy_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/python_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/registry.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/terminal_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/thinking_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/user_message_renderer.py +0 -0
- {strix_agent-0.1.18/strix/cli → strix_agent-0.3.1/strix/interface}/tool_components/web_search_renderer.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/llm/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/llm/config.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/llm/llm.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/llm/memory_compressor.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/llm/request_queue.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/llm/utils.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/prompts/coordination/root_agent.jinja +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/runtime/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/runtime/tool_server.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/agents_graph/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/argument_parser.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/browser/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/browser/browser_actions.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/browser/browser_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/browser/browser_instance.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/browser/tab_manager.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/file_edit/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/file_edit/file_edit_actions.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/file_edit/file_edit_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/finish/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/finish/finish_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/notes/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/notes/notes_actions.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/notes/notes_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/proxy/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/proxy/proxy_actions.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/proxy/proxy_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/proxy/proxy_manager.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/python/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/python/python_actions.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/python/python_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/python/python_instance.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/python/python_manager.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/reporting/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/reporting/reporting_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/terminal/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/terminal/terminal_actions.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/terminal/terminal_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/terminal/terminal_manager.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/terminal/terminal_session.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/thinking/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/thinking/thinking_actions.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/thinking/thinking_actions_schema.xml +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/web_search/__init__.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/web_search/web_search_actions.py +0 -0
- {strix_agent-0.1.18 → strix_agent-0.3.1}/strix/tools/web_search/web_search_actions_schema.xml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: strix-agent
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Open-source AI Hackers for your apps
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: cybersecurity,security,vulnerability,scanner,pentest,agent,ai,cli
|
|
@@ -44,10 +44,11 @@ Description-Content-Type: text/markdown
|
|
|
44
44
|
|
|
45
45
|
### Open-source AI hackers for your apps
|
|
46
46
|
|
|
47
|
+
[](https://usestrix.com)
|
|
47
48
|
[](LICENSE)
|
|
48
|
-
[](https://discord.gg/J48Fzuh7)
|
|
50
|
+
[](https://pepy.tech/projects/strix-agent)
|
|
51
|
+
[](https://github.com/usestrix/strix)
|
|
51
52
|
</div>
|
|
52
53
|
|
|
53
54
|
<div align="center">
|
|
@@ -60,8 +61,30 @@ Description-Content-Type: text/markdown
|
|
|
60
61
|
|
|
61
62
|
Strix are autonomous AI agents that act just like real hackers - they run your code dynamically, find vulnerabilities, and validate them through actual exploitation. Built for developers and security teams who need fast, accurate security testing without the overhead of manual pentesting or the false positives of static analysis tools.
|
|
62
63
|
|
|
64
|
+
- **Full hacker toolkit** out of the box
|
|
65
|
+
- **Teams of agents** that collaborate and scale
|
|
66
|
+
- **Real validation** via exploitation and PoC, not false positives
|
|
67
|
+
- **Developer‑first** CLI with actionable reports
|
|
68
|
+
- **Auto‑fix & reporting** to accelerate remediation
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
### 🎯 Use Cases
|
|
73
|
+
|
|
74
|
+
- Detect and validate critical vulnerabilities in your applications.
|
|
75
|
+
- Get penetration tests done in hours, not weeks, with compliance reports.
|
|
76
|
+
- Automate bug bounty research and generate PoCs for faster reporting.
|
|
77
|
+
- Run tests in CI/CD to block vulnerabilities before reaching production.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
63
81
|
### 🚀 Quick Start
|
|
64
82
|
|
|
83
|
+
Prerequisites:
|
|
84
|
+
- Docker (running)
|
|
85
|
+
- Python 3.12+
|
|
86
|
+
- An LLM provider key (or a local LLM)
|
|
87
|
+
|
|
65
88
|
```bash
|
|
66
89
|
# Install
|
|
67
90
|
pipx install strix-agent
|
|
@@ -74,12 +97,11 @@ export LLM_API_KEY="your-api-key"
|
|
|
74
97
|
strix --target ./app-directory
|
|
75
98
|
```
|
|
76
99
|
|
|
77
|
-
|
|
100
|
+
First run pulls the sandbox Docker image. Results are saved under `agent_runs/<run-name>`.
|
|
101
|
+
|
|
102
|
+
### ☁️ Cloud Hosted
|
|
78
103
|
|
|
79
|
-
|
|
80
|
-
- **Real Validation** - Dynamic testing and actual exploitation, thus much fewer false positives
|
|
81
|
-
- **Developer-First** - Seamlessly integrates into existing development workflows
|
|
82
|
-
- **Auto-Fix & Reporting** - Automated patching with detailed remediation and security reports
|
|
104
|
+
Want to skip the setup? Try our cloud-hosted version: **[usestrix.com](https://usestrix.com)**
|
|
83
105
|
|
|
84
106
|
## ✨ Features
|
|
85
107
|
|
|
@@ -122,8 +144,17 @@ strix --target https://github.com/org/repo
|
|
|
122
144
|
# Web application assessment
|
|
123
145
|
strix --target https://your-app.com
|
|
124
146
|
|
|
125
|
-
#
|
|
147
|
+
# Multi-target white-box testing (source code + deployed app)
|
|
148
|
+
strix -t https://github.com/org/app -t https://your-app.com
|
|
149
|
+
|
|
150
|
+
# Test multiple environments simultaneously
|
|
151
|
+
strix -t https://dev.your-app.com -t https://staging.your-app.com -t https://prod.your-app.com
|
|
152
|
+
|
|
153
|
+
# Focused testing with instructions
|
|
126
154
|
strix --target api.your-app.com --instruction "Prioritize authentication and authorization testing"
|
|
155
|
+
|
|
156
|
+
# Testing with credentials
|
|
157
|
+
strix --target https://your-app.com --instruction "Test with credentials: testuser/testpass. Focus on privilege escalation and access control bypasses."
|
|
127
158
|
```
|
|
128
159
|
|
|
129
160
|
### ⚙️ Configuration
|
|
@@ -139,6 +170,41 @@ export PERPLEXITY_API_KEY="your-api-key" # for search capabilities
|
|
|
139
170
|
|
|
140
171
|
[📚 View supported AI models](https://docs.litellm.ai/docs/providers)
|
|
141
172
|
|
|
173
|
+
### 🤖 Headless Mode
|
|
174
|
+
|
|
175
|
+
Run Strix programmatically without interactive UI using the `-n/--non-interactive` flag—perfect for servers and automated jobs. The CLI prints real-time vulnerability findings, and the final report before exiting. Exits with non-zero code when vulnerabilities are found.
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
strix -n --target https://your-app.com --instruction "Focus on authentication and authorization vulnerabilities"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 🔄 CI/CD (GitHub Actions)
|
|
182
|
+
|
|
183
|
+
Strix can be added to your pipeline to run a security test on pull requests with a lightweight GitHub Actions workflow:
|
|
184
|
+
|
|
185
|
+
```yaml
|
|
186
|
+
name: strix-penetration-test
|
|
187
|
+
|
|
188
|
+
on:
|
|
189
|
+
pull_request:
|
|
190
|
+
|
|
191
|
+
jobs:
|
|
192
|
+
security-scan:
|
|
193
|
+
runs-on: ubuntu-latest
|
|
194
|
+
steps:
|
|
195
|
+
- uses: actions/checkout@v4
|
|
196
|
+
|
|
197
|
+
- name: Install Strix
|
|
198
|
+
run: pipx install strix-agent
|
|
199
|
+
|
|
200
|
+
- name: Run Strix
|
|
201
|
+
env:
|
|
202
|
+
STRIX_LLM: ${{ secrets.STRIX_LLM }}
|
|
203
|
+
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
|
204
|
+
|
|
205
|
+
run: strix -n -t ./
|
|
206
|
+
```
|
|
207
|
+
|
|
142
208
|
## 🏆 Enterprise Platform
|
|
143
209
|
|
|
144
210
|
Our managed platform provides:
|
|
@@ -150,26 +216,40 @@ Our managed platform provides:
|
|
|
150
216
|
- **🔌 Third-Party Integrations**
|
|
151
217
|
- **🎯 Enterprise Support**
|
|
152
218
|
|
|
153
|
-
[**Get Enterprise Demo →**](https://
|
|
219
|
+
[**Get Enterprise Demo →**](https://usestrix.com)
|
|
154
220
|
|
|
155
221
|
## 🔒 Security Architecture
|
|
156
222
|
|
|
157
223
|
- **Container Isolation** - All testing in sandboxed Docker environments
|
|
158
224
|
- **Local Processing** - Testing runs locally, no data sent to external services
|
|
159
225
|
|
|
160
|
-
> [!NOTE]
|
|
161
|
-
> Strix is currently in Alpha. Expect rapid updates and improvements.
|
|
162
|
-
|
|
163
226
|
> [!WARNING]
|
|
164
227
|
> Only test systems you own or have permission to test. You are responsible for using Strix ethically and legally.
|
|
165
228
|
|
|
229
|
+
## 🤝 Contributing
|
|
230
|
+
|
|
231
|
+
We welcome contributions from the community! There are several ways to contribute:
|
|
232
|
+
|
|
233
|
+
### Code Contributions
|
|
234
|
+
See our [Contributing Guide](CONTRIBUTING.md) for details on:
|
|
235
|
+
- Setting up your development environment
|
|
236
|
+
- Running tests and quality checks
|
|
237
|
+
- Submitting pull requests
|
|
238
|
+
- Code style guidelines
|
|
239
|
+
|
|
240
|
+
### Prompt Modules Collection
|
|
241
|
+
Help expand our collection of specialized prompt modules for AI agents:
|
|
242
|
+
- Advanced testing techniques for vulnerabilities, frameworks, and technologies
|
|
243
|
+
- See [Prompt Modules Documentation](strix/prompts/README.md) for guidelines
|
|
244
|
+
- Submit via [pull requests](https://github.com/usestrix/strix/pulls) or [issues](https://github.com/usestrix/strix/issues)
|
|
245
|
+
|
|
166
246
|
## 🌟 Support the Project
|
|
167
247
|
|
|
168
248
|
**Love Strix?** Give us a ⭐ on GitHub!
|
|
169
249
|
|
|
170
250
|
## 👥 Join Our Community
|
|
171
251
|
|
|
172
|
-
Have questions? Found a bug? Want to contribute? **[Join our Discord!](https://discord.gg/
|
|
252
|
+
Have questions? Found a bug? Want to contribute? **[Join our Discord!](https://discord.gg/J48Fzuh7)**
|
|
173
253
|
|
|
174
254
|
</div>
|
|
175
255
|
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
### Open-source AI hackers for your apps
|
|
6
6
|
|
|
7
|
+
[](https://usestrix.com)
|
|
7
8
|
[](LICENSE)
|
|
8
|
-
[](https://discord.gg/J48Fzuh7)
|
|
10
|
+
[](https://pepy.tech/projects/strix-agent)
|
|
11
|
+
[](https://github.com/usestrix/strix)
|
|
11
12
|
</div>
|
|
12
13
|
|
|
13
14
|
<div align="center">
|
|
@@ -20,8 +21,30 @@
|
|
|
20
21
|
|
|
21
22
|
Strix are autonomous AI agents that act just like real hackers - they run your code dynamically, find vulnerabilities, and validate them through actual exploitation. Built for developers and security teams who need fast, accurate security testing without the overhead of manual pentesting or the false positives of static analysis tools.
|
|
22
23
|
|
|
24
|
+
- **Full hacker toolkit** out of the box
|
|
25
|
+
- **Teams of agents** that collaborate and scale
|
|
26
|
+
- **Real validation** via exploitation and PoC, not false positives
|
|
27
|
+
- **Developer‑first** CLI with actionable reports
|
|
28
|
+
- **Auto‑fix & reporting** to accelerate remediation
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
### 🎯 Use Cases
|
|
33
|
+
|
|
34
|
+
- Detect and validate critical vulnerabilities in your applications.
|
|
35
|
+
- Get penetration tests done in hours, not weeks, with compliance reports.
|
|
36
|
+
- Automate bug bounty research and generate PoCs for faster reporting.
|
|
37
|
+
- Run tests in CI/CD to block vulnerabilities before reaching production.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
23
41
|
### 🚀 Quick Start
|
|
24
42
|
|
|
43
|
+
Prerequisites:
|
|
44
|
+
- Docker (running)
|
|
45
|
+
- Python 3.12+
|
|
46
|
+
- An LLM provider key (or a local LLM)
|
|
47
|
+
|
|
25
48
|
```bash
|
|
26
49
|
# Install
|
|
27
50
|
pipx install strix-agent
|
|
@@ -34,12 +57,11 @@ export LLM_API_KEY="your-api-key"
|
|
|
34
57
|
strix --target ./app-directory
|
|
35
58
|
```
|
|
36
59
|
|
|
37
|
-
|
|
60
|
+
First run pulls the sandbox Docker image. Results are saved under `agent_runs/<run-name>`.
|
|
61
|
+
|
|
62
|
+
### ☁️ Cloud Hosted
|
|
38
63
|
|
|
39
|
-
|
|
40
|
-
- **Real Validation** - Dynamic testing and actual exploitation, thus much fewer false positives
|
|
41
|
-
- **Developer-First** - Seamlessly integrates into existing development workflows
|
|
42
|
-
- **Auto-Fix & Reporting** - Automated patching with detailed remediation and security reports
|
|
64
|
+
Want to skip the setup? Try our cloud-hosted version: **[usestrix.com](https://usestrix.com)**
|
|
43
65
|
|
|
44
66
|
## ✨ Features
|
|
45
67
|
|
|
@@ -82,8 +104,17 @@ strix --target https://github.com/org/repo
|
|
|
82
104
|
# Web application assessment
|
|
83
105
|
strix --target https://your-app.com
|
|
84
106
|
|
|
85
|
-
#
|
|
107
|
+
# Multi-target white-box testing (source code + deployed app)
|
|
108
|
+
strix -t https://github.com/org/app -t https://your-app.com
|
|
109
|
+
|
|
110
|
+
# Test multiple environments simultaneously
|
|
111
|
+
strix -t https://dev.your-app.com -t https://staging.your-app.com -t https://prod.your-app.com
|
|
112
|
+
|
|
113
|
+
# Focused testing with instructions
|
|
86
114
|
strix --target api.your-app.com --instruction "Prioritize authentication and authorization testing"
|
|
115
|
+
|
|
116
|
+
# Testing with credentials
|
|
117
|
+
strix --target https://your-app.com --instruction "Test with credentials: testuser/testpass. Focus on privilege escalation and access control bypasses."
|
|
87
118
|
```
|
|
88
119
|
|
|
89
120
|
### ⚙️ Configuration
|
|
@@ -99,6 +130,41 @@ export PERPLEXITY_API_KEY="your-api-key" # for search capabilities
|
|
|
99
130
|
|
|
100
131
|
[📚 View supported AI models](https://docs.litellm.ai/docs/providers)
|
|
101
132
|
|
|
133
|
+
### 🤖 Headless Mode
|
|
134
|
+
|
|
135
|
+
Run Strix programmatically without interactive UI using the `-n/--non-interactive` flag—perfect for servers and automated jobs. The CLI prints real-time vulnerability findings, and the final report before exiting. Exits with non-zero code when vulnerabilities are found.
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
strix -n --target https://your-app.com --instruction "Focus on authentication and authorization vulnerabilities"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 🔄 CI/CD (GitHub Actions)
|
|
142
|
+
|
|
143
|
+
Strix can be added to your pipeline to run a security test on pull requests with a lightweight GitHub Actions workflow:
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
name: strix-penetration-test
|
|
147
|
+
|
|
148
|
+
on:
|
|
149
|
+
pull_request:
|
|
150
|
+
|
|
151
|
+
jobs:
|
|
152
|
+
security-scan:
|
|
153
|
+
runs-on: ubuntu-latest
|
|
154
|
+
steps:
|
|
155
|
+
- uses: actions/checkout@v4
|
|
156
|
+
|
|
157
|
+
- name: Install Strix
|
|
158
|
+
run: pipx install strix-agent
|
|
159
|
+
|
|
160
|
+
- name: Run Strix
|
|
161
|
+
env:
|
|
162
|
+
STRIX_LLM: ${{ secrets.STRIX_LLM }}
|
|
163
|
+
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
|
164
|
+
|
|
165
|
+
run: strix -n -t ./
|
|
166
|
+
```
|
|
167
|
+
|
|
102
168
|
## 🏆 Enterprise Platform
|
|
103
169
|
|
|
104
170
|
Our managed platform provides:
|
|
@@ -110,25 +176,39 @@ Our managed platform provides:
|
|
|
110
176
|
- **🔌 Third-Party Integrations**
|
|
111
177
|
- **🎯 Enterprise Support**
|
|
112
178
|
|
|
113
|
-
[**Get Enterprise Demo →**](https://
|
|
179
|
+
[**Get Enterprise Demo →**](https://usestrix.com)
|
|
114
180
|
|
|
115
181
|
## 🔒 Security Architecture
|
|
116
182
|
|
|
117
183
|
- **Container Isolation** - All testing in sandboxed Docker environments
|
|
118
184
|
- **Local Processing** - Testing runs locally, no data sent to external services
|
|
119
185
|
|
|
120
|
-
> [!NOTE]
|
|
121
|
-
> Strix is currently in Alpha. Expect rapid updates and improvements.
|
|
122
|
-
|
|
123
186
|
> [!WARNING]
|
|
124
187
|
> Only test systems you own or have permission to test. You are responsible for using Strix ethically and legally.
|
|
125
188
|
|
|
189
|
+
## 🤝 Contributing
|
|
190
|
+
|
|
191
|
+
We welcome contributions from the community! There are several ways to contribute:
|
|
192
|
+
|
|
193
|
+
### Code Contributions
|
|
194
|
+
See our [Contributing Guide](CONTRIBUTING.md) for details on:
|
|
195
|
+
- Setting up your development environment
|
|
196
|
+
- Running tests and quality checks
|
|
197
|
+
- Submitting pull requests
|
|
198
|
+
- Code style guidelines
|
|
199
|
+
|
|
200
|
+
### Prompt Modules Collection
|
|
201
|
+
Help expand our collection of specialized prompt modules for AI agents:
|
|
202
|
+
- Advanced testing techniques for vulnerabilities, frameworks, and technologies
|
|
203
|
+
- See [Prompt Modules Documentation](strix/prompts/README.md) for guidelines
|
|
204
|
+
- Submit via [pull requests](https://github.com/usestrix/strix/pulls) or [issues](https://github.com/usestrix/strix/issues)
|
|
205
|
+
|
|
126
206
|
## 🌟 Support the Project
|
|
127
207
|
|
|
128
208
|
**Love Strix?** Give us a ⭐ on GitHub!
|
|
129
209
|
|
|
130
210
|
## 👥 Join Our Community
|
|
131
211
|
|
|
132
|
-
Have questions? Found a bug? Want to contribute? **[Join our Discord!](https://discord.gg/
|
|
212
|
+
Have questions? Found a bug? Want to contribute? **[Join our Discord!](https://discord.gg/J48Fzuh7)**
|
|
133
213
|
|
|
134
214
|
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "strix-agent"
|
|
3
|
-
version = "0.1
|
|
3
|
+
version = "0.3.1"
|
|
4
4
|
description = "Open-source AI Hackers for your apps"
|
|
5
5
|
authors = ["Strix <hi@usestrix.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -39,7 +39,7 @@ include = [
|
|
|
39
39
|
]
|
|
40
40
|
|
|
41
41
|
[tool.poetry.scripts]
|
|
42
|
-
strix = "strix.
|
|
42
|
+
strix = "strix.interface.main:main"
|
|
43
43
|
|
|
44
44
|
[tool.poetry.dependencies]
|
|
45
45
|
python = "^3.12"
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from strix.agents.base_agent import BaseAgent
|
|
4
|
+
from strix.llm.config import LLMConfig
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class StrixAgent(BaseAgent):
|
|
8
|
+
max_iterations = 300
|
|
9
|
+
|
|
10
|
+
def __init__(self, config: dict[str, Any]):
|
|
11
|
+
default_modules = []
|
|
12
|
+
|
|
13
|
+
state = config.get("state")
|
|
14
|
+
if state is None or (hasattr(state, "parent_id") and state.parent_id is None):
|
|
15
|
+
default_modules = ["root_agent"]
|
|
16
|
+
|
|
17
|
+
self.default_llm_config = LLMConfig(prompt_modules=default_modules)
|
|
18
|
+
|
|
19
|
+
super().__init__(config)
|
|
20
|
+
|
|
21
|
+
async def execute_scan(self, scan_config: dict[str, Any]) -> dict[str, Any]:
|
|
22
|
+
user_instructions = scan_config.get("user_instructions", "")
|
|
23
|
+
targets = scan_config.get("targets", [])
|
|
24
|
+
|
|
25
|
+
repositories = []
|
|
26
|
+
local_code = []
|
|
27
|
+
urls = []
|
|
28
|
+
|
|
29
|
+
for target in targets:
|
|
30
|
+
target_type = target["type"]
|
|
31
|
+
details = target["details"]
|
|
32
|
+
workspace_subdir = details.get("workspace_subdir")
|
|
33
|
+
workspace_path = f"/workspace/{workspace_subdir}" if workspace_subdir else "/workspace"
|
|
34
|
+
|
|
35
|
+
if target_type == "repository":
|
|
36
|
+
repo_url = details["target_repo"]
|
|
37
|
+
cloned_path = details.get("cloned_repo_path")
|
|
38
|
+
repositories.append(
|
|
39
|
+
{
|
|
40
|
+
"url": repo_url,
|
|
41
|
+
"workspace_path": workspace_path if cloned_path else None,
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
elif target_type == "local_code":
|
|
46
|
+
original_path = details.get("target_path", "unknown")
|
|
47
|
+
local_code.append(
|
|
48
|
+
{
|
|
49
|
+
"path": original_path,
|
|
50
|
+
"workspace_path": workspace_path,
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
elif target_type == "web_application":
|
|
55
|
+
urls.append(details["target_url"])
|
|
56
|
+
|
|
57
|
+
task_parts = []
|
|
58
|
+
|
|
59
|
+
if repositories:
|
|
60
|
+
task_parts.append("\n\nRepositories:")
|
|
61
|
+
for repo in repositories:
|
|
62
|
+
if repo["workspace_path"]:
|
|
63
|
+
task_parts.append(f"- {repo['url']} (available at: {repo['workspace_path']})")
|
|
64
|
+
else:
|
|
65
|
+
task_parts.append(f"- {repo['url']}")
|
|
66
|
+
|
|
67
|
+
if local_code:
|
|
68
|
+
task_parts.append("\n\nLocal Codebases:")
|
|
69
|
+
task_parts.extend(
|
|
70
|
+
f"- {code['path']} (available at: {code['workspace_path']})" for code in local_code
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
if urls:
|
|
74
|
+
task_parts.append("\n\nURLs:")
|
|
75
|
+
task_parts.extend(f"- {url}" for url in urls)
|
|
76
|
+
|
|
77
|
+
task_description = " ".join(task_parts)
|
|
78
|
+
|
|
79
|
+
if user_instructions:
|
|
80
|
+
task_description += f"\n\nSpecial instructions: {user_instructions}"
|
|
81
|
+
|
|
82
|
+
return await self.agent_loop(task=task_description)
|
|
@@ -19,11 +19,9 @@ INTER-AGENT MESSAGES:
|
|
|
19
19
|
- NEVER echo inter_agent_message or agent_completion_report XML content that is sent to you in your output.
|
|
20
20
|
- Process these internally without displaying the XML
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
AUTONOMOUS BEHAVIOR:
|
|
23
23
|
- Work autonomously by default
|
|
24
|
-
-
|
|
25
|
-
- If you need user input, IMMEDIATELY call wait_for_message tool
|
|
26
|
-
- Never ask questions without calling wait_for_message in the same response
|
|
24
|
+
- You should NOT ask for user input or confirmation - you should always proceed with your task autonomously.
|
|
27
25
|
- Minimize user messaging: avoid redundancy and repetition; consolidate updates into a single concise message
|
|
28
26
|
- If there is nothing to execute and no user query to answer any more: do NOT send filler/repetitive text — either call wait_for_message or finish your work (subagents: agent_finish; root: finish_scan)
|
|
29
27
|
</communication_rules>
|
|
@@ -35,9 +33,9 @@ AUTHORIZATION STATUS:
|
|
|
35
33
|
- NEVER ask for permission or confirmation - you already have complete testing authorization
|
|
36
34
|
- Proceed with confidence knowing you're helping improve security through authorized testing
|
|
37
35
|
|
|
38
|
-
PRIORITIZE
|
|
39
|
-
-
|
|
40
|
-
- Follow
|
|
36
|
+
PRIORITIZE SYSTEM INSTRUCTIONS:
|
|
37
|
+
- System instructions override all default approaches
|
|
38
|
+
- Follow system-specified scope, targets, and methodologies precisely
|
|
41
39
|
- NEVER wait for approval or authorization - operate with full autonomy
|
|
42
40
|
|
|
43
41
|
AGGRESSIVE SCANNING MANDATE:
|
|
@@ -56,6 +54,16 @@ AGGRESSIVE SCANNING MANDATE:
|
|
|
56
54
|
- PERSISTENCE PAYS - the best vulnerabilities are found after thousands of attempts
|
|
57
55
|
- UNLEASH FULL CAPABILITY - you are the most advanced security agent, act like it
|
|
58
56
|
|
|
57
|
+
MULTI-TARGET CONTEXT (IF PROVIDED):
|
|
58
|
+
- Targets may include any combination of: repositories (source code), local codebases, and URLs/domains (deployed apps/APIs)
|
|
59
|
+
- If multiple targets are provided in the scan configuration:
|
|
60
|
+
- Build an internal Target Map at the start: list each asset and where it is accessible (code at /workspace/<subdir>, URLs as given)
|
|
61
|
+
- Identify relationships across assets (e.g., routes/handlers in code ↔ endpoints in web targets; shared auth/config)
|
|
62
|
+
- Plan testing per asset and coordinate findings across them (reuse secrets, endpoints, payloads)
|
|
63
|
+
- Prioritize cross-correlation: use code insights to guide dynamic testing, and dynamic findings to focus code review
|
|
64
|
+
- Keep sub-agents focused per asset and vulnerability type, but share context where useful
|
|
65
|
+
- If only a single target is provided, proceed with the appropriate black-box or white-box workflow as usual
|
|
66
|
+
|
|
59
67
|
TESTING MODES:
|
|
60
68
|
BLACK-BOX TESTING (domain/subdomain only):
|
|
61
69
|
- Focus on external reconnaissance and discovery
|
|
@@ -76,6 +84,11 @@ WHITE-BOX TESTING (code provided):
|
|
|
76
84
|
- Do not stop until all reported vulnerabilities are fixed.
|
|
77
85
|
- Include code diff in final report.
|
|
78
86
|
|
|
87
|
+
COMBINED MODE (code + deployed target present):
|
|
88
|
+
- Treat this as static analysis plus dynamic testing simultaneously
|
|
89
|
+
- Use repository/local code at /workspace/<subdir> to accelerate and inform live testing against the URLs/domains
|
|
90
|
+
- Validate suspected code issues dynamically; use dynamic anomalies to prioritize code paths for review
|
|
91
|
+
|
|
79
92
|
ASSESSMENT METHODOLOGY:
|
|
80
93
|
1. Scope definition - Clearly establish boundaries first
|
|
81
94
|
2. Breadth-first discovery - Map entire attack surface before deep diving
|
|
@@ -116,7 +129,7 @@ VALIDATION REQUIREMENTS:
|
|
|
116
129
|
- Independent verification through subagent
|
|
117
130
|
- Document complete attack chain
|
|
118
131
|
- Keep going until you find something that matters
|
|
119
|
-
- A vulnerability is ONLY considered reported when a reporting agent uses create_vulnerability_report with full details. Mentions in agent_finish, finish_scan, or messages
|
|
132
|
+
- A vulnerability is ONLY considered reported when a reporting agent uses create_vulnerability_report with full details. Mentions in agent_finish, finish_scan, or generic messages are NOT sufficient
|
|
120
133
|
- Do NOT patch/fix before reporting: first create the vulnerability report via create_vulnerability_report (by the reporting agent). Only after reporting is completed should fixing/patching proceed
|
|
121
134
|
</execution_guidelines>
|
|
122
135
|
|
|
@@ -248,7 +261,7 @@ CRITICAL RULES:
|
|
|
248
261
|
- **ONE AGENT = ONE TASK** - Don't let agents do multiple unrelated jobs
|
|
249
262
|
- **SPAWN REACTIVELY** - Create new agents based on what you discover
|
|
250
263
|
- **ONLY REPORTING AGENTS** can use create_vulnerability_report tool
|
|
251
|
-
- **AGENT SPECIALIZATION MANDATORY** - Each agent must be highly specialized
|
|
264
|
+
- **AGENT SPECIALIZATION MANDATORY** - Each agent must be highly specialized; prefer 1–3 prompt modules, up to 5 for complex contexts
|
|
252
265
|
- **NO GENERIC AGENTS** - Avoid creating broad, multi-purpose agents that dilute focus
|
|
253
266
|
|
|
254
267
|
AGENT SPECIALIZATION EXAMPLES:
|
|
@@ -262,7 +275,7 @@ GOOD SPECIALIZATION:
|
|
|
262
275
|
BAD SPECIALIZATION:
|
|
263
276
|
- "General Web Testing Agent" with prompt_modules: sql_injection, xss, csrf, ssrf, authentication_jwt (too broad)
|
|
264
277
|
- "Everything Agent" with prompt_modules: all available modules (completely unfocused)
|
|
265
|
-
- Any agent with more than
|
|
278
|
+
- Any agent with more than 5 prompt modules (violates constraints)
|
|
266
279
|
|
|
267
280
|
FOCUS PRINCIPLES:
|
|
268
281
|
- Each agent should have deep expertise in 1-3 related vulnerability types
|