@UnTalNixon_exe: THIS IS INSANE An open-source AI that hacks your app BEFORE real attackers do +56,000 stars. Multi-agent. Real working …
Summary
Strix is an open-source AI tool that uses multi-agent architecture to autonomously perform security testing, covering OWASP Top 10 vulnerabilities with real-world PoCs and a 30-second setup.
View Cached Full Text
Cached at: 08/22/26, 07:32 PM
THIS IS INSANE
An open-source AI that hacks your app BEFORE real attackers do
+56,000 stars. Multi-agent. Real working PoCs (not just alerts you have to verify manually).
Autonomous agents that dynamically perform recon → exploitation → validation. Covers SQLi/NoSQLi → SSRF → XXE → broken access → auth bypass → business logic → APIs and cloud misconfigs. Mapped to OWASP Top 10 and beyond.
Setup in 30 seconds: curl -sSL https://strix.ai/install | bash export STRIX_LLM=“openai/gpt-5.4” # or any local model export LLM_API_KEY=“your-key” strix –target https://tu-app.com
Also works with Claude Code / Cursor (npx skills add usestrix/strix)
Save it before it becomes the standard for every CI/CD.
Repooo
Source: https://raw.githubusercontent.com/usestrix/strix/refs/heads/main/scripts/install.sh #!/usr/bin/env bash set -euo pipefail APP=strix REPO=“usestrix/strix” STRIX_IMAGE=“ghcr.io/usestrix/strix-sandbox:1.3.0” MUTED=‘\033[0;2m’ RED=‘\033[0;31m’ GREEN=‘\033[0;32m’ YELLOW=‘\033[1;33m’ CYAN=‘\033[0;36m’ NC=‘\033[0m’ requested_version=\{VERSION:\-\} SKIP\_DOWNLOAD=false raw\_os=(uname -s) os=\(echo "raw_os“ | tr ‘[:upper:]’ ‘[:lower:]’) case “raw\_os" in Darwin\*\) os="macos" ;; Linux\*\) os="linux" ;; MINGW\*\|MSYS\*\|CYGWIN\*\) os="windows" ;; esac arch=(uname -m) if [[ “arch" == "aarch64" \]\]; then arch="arm64" fi if \[\[ "arch” == “x86_64” ]]; then arch=“x86_64” fi if [ “os" = "macos" \] && \[ "arch” = “x86_64” ]; then rosetta_flag=\(sysctl \-n sysctl\.proc\_translated 2\>/dev/null \|\| echo 0\) if \[ "rosetta_flag“ = “1” ]; then arch=“arm64” fi fi combo=“os\-arch” case “combo" in linux\-x86\_64\|linux\-arm64\|macos\-x86\_64\|macos\-arm64\|windows\-x86\_64\) ;; \*\) echo \-e "{RED}Unsupported OS/Arch: os/arch\{NC\}" exit 1 ;; esac archive\_ext="\.tar\.gz" if \[ "os” = “windows” ]; then archive_ext=“.zip” fi target=“os\-arch” if [ “os" = "linux" \]; then if \! command \-v tar \>/dev/null 2\>&1; then echo \-e "{RED}Error: ‘tar’ is required but not installed.\{NC\}" exit 1 fi fi if \[ "os” = “windows” ]; then if ! command -v unzip >/dev/null 2>&1; then echo -e “\{RED\}Error: 'unzip' is required but not installed\.{NC}” exit 1 fi fi INSTALL_DIR=HOME/\.strix/bin mkdir \-p "INSTALL_DIR“ if [ -z “requested\_version" \]; then specific\_version=(curl -s “https://api.github.com/repos/$REPO/releases/latest” | sed -n ‘s/.*“tag_name”: *“v\([^”]*\)“.*/\1/p’) if [[ ? \-ne 0 \|\| \-z "specific_version” ]]; then echo -e “\{RED\}Failed to fetch version information{NC}” exit 1 fi else specific_version=requested\_version fi filename="APP-\{specific\_version\}\-{target}\{archive\_ext\}" url="https://github\.com/REPO/releases/download/v\{specific\_version\}/filename“ print_message() { local level=1 local message=2 local color=“” case level in info\) color="{NC}“ ;; success) color=“\{GREEN\}" ;; warning\) color="{YELLOW}” ;; error) color=“\{RED\}" ;; esac echo \-e "{color}\{message\}{NC}” } check_existing_installation() { local found_paths=() while IFS= read -r -d ‘’ path; do found_paths+=(“$path”) done < <(which -a strix 2>/dev/null | tr ‘\n’ ‘\0’ || true) if [ \{\#found\_paths\[@\]\} \-gt 0 \]; then for path in "{found_paths[@]}“; do if [[ ! -e “path" \]\] \|\| \[\[ "path” == “INSTALL\_DIR/strix"\* \]\]; then continue fi if \[\[ \-n "path” ]]; then echo -e “${MUTED}Found existing strix at: \{NC\}path” if [[ “path" == \*"\.local/bin"\* \]\]; then echo \-e "{MUTED}Removing old pipx installation...\{NC\}" if command \-v pipx \>/dev/null 2\>&1; then pipx uninstall strix\-agent 2\>/dev/null \|\| true fi rm \-f "path” 2>/dev/null || true elif [[ -L “path" \|\| \-f "path” ]]; then echo -e “\{MUTED\}Removing old installation\.\.\.{NC}” rm -f “path" 2\>/dev/null \|\| true fi fi done fi \} check\_version\(\) \{ check\_existing\_installation if \[\[ \-x "INSTALL_DIR/strix” ]]; then installed_version=\("INSTALL_DIR/strix“ --version 2>/dev/null | awk ’{print 2\}' \|\| echo ""\) if \[\[ "installed_version“ == “specific\_version" \]\]; then print\_message info "{GREEN}✓ Strix \{NC\}specific_version\{GREEN\} already installed{NC}” SKIP_DOWNLOAD=true elif [[ -n “installed\_version" \]\]; then print\_message info "{MUTED}Installed: \{NC\}installed_version ${MUTED}→ Upgrading to \{NC\}specific_version” fi fi } download_and_install() { print_message info “\n\{CYAN\}🦉 Installing Strix{NC} ${MUTED}version: \{NC\}specific_version” print_message info “${MUTED}Platform: \{NC\}target\n” local tmp_dir=\(mktemp \-d\) cd "tmp_dir“ echo -e “\{MUTED\}Downloading\.\.\.{NC}” curl -# -L -o “filename" "url” if [ ! -f “filename" \]; then echo \-e "{RED}Download failed\{NC\}" exit 1 fi echo \-e "{MUTED}Extracting...\{NC\}" if \[ "os” = “windows” ]; then unzip -q “filename" mv "strix\-{specific_version}-\{target\}\.exe" "INSTALL_DIR/strix.exe” else tar -xzf “filename" mv "strix\-{specific_version}-\{target\}" "INSTALL_DIR/strix” chmod 755 “INSTALL\_DIR/strix" fi cd \- \> /dev/null rm \-rf "tmp_dir” echo -e “${GREEN}✓ Strix installed to INSTALL\_DIR{NC}” } check_docker() { echo “” if ! command -v docker >/dev/null 2>&1; then echo -e “\{YELLOW\}⚠ Docker not found{NC}” echo -e “\{MUTED\}Strix requires Docker to run the security sandbox\.{NC}” echo -e “${MUTED}Please install Docker: \{NC\}https://docs\.docker\.com/get\-docker/" echo "" return 1 fi if \! docker info \>/dev/null 2\>&1; then echo \-e "{YELLOW}⚠ Docker daemon not running\{NC\}" echo \-e "{MUTED}Please start Docker and run: ${NC}docker pull STRIX\_IMAGE" echo "" return 1 fi echo \-e "{MUTED}Checking for sandbox image...\{NC\}" if docker image inspect "STRIX_IMAGE” >/dev/null 2>&1; then echo -e “\{GREEN\}✓ Sandbox image already available{NC}” else echo -e “\{MUTED\}Pulling sandbox image \(this may take a few minutes\)\.\.\.{NC}” if docker pull “STRIX\_IMAGE"; then echo \-e "{GREEN}✓ Sandbox image pulled successfully\{NC\}" else echo \-e "{YELLOW}⚠ Failed to pull sandbox image\{NC\}" echo \-e "{MUTED}You can pull it manually later: ${NC}docker pull STRIX\_IMAGE" fi fi return 0 \} add\_to\_path\(\) \{ local config\_file=1 local command=2 if grep \-Fxq "command” “config\_file" 2\>/dev/null; then print\_message info "{MUTED}PATH already configured in \{NC\}config_file” elif [[ -w config\_file \]\]; then echo \-e "\\n\# strix" \>\> "config_file“ echo “command" \>\> "config_file” print_message info “${MUTED}Successfully added ${NC}strix \{MUTED\}to \\PATH in \{NC\}config_file” else print_message warning “Manually add the directory to $config_file (or similar):” print_message info “ command" fi \} setup\_path\(\) \{ XDG\_CONFIG\_HOME={XDG_CONFIG_HOME:-HOME/\.config\} current\_shell=(basename “$SHELL”) case current\_shell in fish\) config\_files="HOME/.config/fish/config.fish“ ;; zsh) config_files=“\{ZDOTDIR:\-HOME}/.zshrc \{ZDOTDIR:\-HOME}/.zshenv $XDG_CONFIG_HOME/zsh/.zshrc XDG\_CONFIG\_HOME/zsh/\.zshenv" ;; bash\) config\_files="HOME/.bashrc $HOME/.bash_profile $HOME/.profile $XDG_CONFIG_HOME/bash/.bashrc XDG\_CONFIG\_HOME/bash/\.bash\_profile" ;; ash\) config\_files="HOME/.ashrc HOME/\.profile /etc/profile" ;; sh\) config\_files="HOME/.ashrc HOME/\.profile /etc/profile" ;; \*\) config\_files="HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile” ;; esac config_file=“” for file in $config_files; do if [[ -f file \]\]; then config\_file=file break fi done if [[ -z $config_file ]]; then print_message warning “No config file found for current\_shell\. You may need to manually add to PATH:" print\_message info " export PATH=INSTALL_DIR:\PATH" elif \[\[ ":PATH:” != *“:$INSTALL_DIR:”* ]]; then case current\_shell in fish\) add\_to\_path "config_file“ “fish_add_path INSTALL\_DIR" ;; zsh\) add\_to\_path "config_file” “export PATH=INSTALL\_DIR:\\PATH” ;; bash) add_to_path “config\_file" "export PATH=INSTALL_DIR:\PATH" ;; ash\) add\_to\_path "config_file” “export PATH=INSTALL\_DIR:\\PATH” ;; sh) add_to_path “config\_file" "export PATH=INSTALL_DIR:\PATH" ;; \*\) export PATH=INSTALL_DIR:$PATH print_message warning “Manually add the directory to config\_file \(or similar\):" print\_message info " export PATH=INSTALL_DIR:\PATH" ;; esac fi if \[ \-n "{GITHUB_ACTIONS-}” ] && [ “\{GITHUB\_ACTIONS\}" == "true" \]; then echo "INSTALL_DIR” >> “$GITHUB_PATH” print_message info “Added INSTALL\_DIR to \\GITHUB_PATH” fi } verify_installation() { export PATH=“INSTALL\_DIR:PATH” local which_strix=\(which strix 2\>/dev/null \|\| echo ""\) if \[\[ "which_strix“ != “INSTALL\_DIR/strix" && "which_strix” != “INSTALL\_DIR/strix\.exe" \]\]; then if \[\[ \-n "which_strix” ]]; then echo -e “${YELLOW}⚠ Found conflicting strix at: \{NC\}which_strix” echo -e “\{MUTED\}Attempting to remove\.\.\.{NC}” if rm -f “which\_strix" 2\>/dev/null; then echo \-e "{GREEN}✓ Removed conflicting installation\{NC\}" else echo \-e "{YELLOW}Could not remove automatically.\{NC\}" echo \-e "{MUTED}Please remove manually: ${NC}rm which\_strix" fi fi fi if \[\[ \-x "INSTALL_DIR/strix” ]]; then local version=\("INSTALL_DIR/strix“ --version 2>/dev/null | awk ’{print 2\}' \|\| echo "unknown"\) echo \-e "{GREEN}✓ Strix \{NC\}version\{GREEN\} ready{NC}“ fi } check_version if [ “SKIP\_DOWNLOAD" = false \]; then download\_and\_install fi setup\_path verify\_installation check\_docker echo "" echo \-e "{CYAN}” echo “ ███████╗████████╗██████╗ ██╗██╗ ██╗“ echo “ ██╔════╝╚══██╔══╝██╔══██╗██║╚██╗██╔╝“ echo “ ███████╗ ██║ ██████╔╝██║ ╚███╔╝ “ echo “ ╚════██║ ██║ ██╔══██╗██║ ██╔██╗ “ echo “ ███████║ ██║ ██║ ██║██║██╔╝ ██╗“ echo “ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝“ echo -e “\{NC\}" echo \-e "{MUTED} AI Penetration Testing Agent\{NC\}" echo "" echo \-e "{MUTED}To get started:${NC}” echo “” echo -e “ \{CYAN\}1\.{NC} Set your environment:“ echo -e “ \{MUTED\}export LLM\_API\_KEY='your\-api\-key'{NC}“ echo -e “ \{MUTED\}export STRIX\_LLM='openai/gpt\-5\.4'{NC}“ echo “” echo -e “ \{CYAN\}2\.{NC} Run a penetration test:“ echo -e “ \{MUTED\}strix \-\-target https://example\.com{NC}“ echo “” echo -e “${MUTED}For more information visit \{NC\}https://strix\.ai" echo \-e "{MUTED}Supported models \{NC\}https://docs\.strix\.ai/llm\-providers/overview" echo \-e "{MUTED}Join our community \{NC\}https://discord\.gg/strix\-ai" echo "" echo \-e "{YELLOW}→${NC} Run \{MUTED\}source ~/\.(basename SHELL\)rc{NC} or open a new terminal” echo “”
Similar Articles
usestrix/strix
Strix is an open-source AI agent toolkit that autonomously hacks applications to find and fix vulnerabilities, providing validated proof-of-concepts without false positives.
@XAMTO_AI: If you've used traditional manual penetration testing, you know!! Juggling multiple tools like Burp, Nmap, Metasploit, switching back and forth, spending hours on recon and exploit, writing PoCs by hand, writing reports until you question your life, false positives everywhere, while real vulnerabilities slip through... One developer couldn't take it anymore and open-sourced a...
Strix is an open-source AI penetration testing tool that uses autonomous AI agents to perform real vulnerability discovery and exploitation, generating working PoCs and compliance-ready reports. It supports multi-agent orchestration, CI/CD integration, and various LLMs, aiming to replace manual pentesting with AI-driven automation.
@servasyy_ai: If you're maintaining a project alone without a security team and always feel uneasy before launch, this is basically a gift for you. To be honest, I don't trust most of the so-called "AI security scanners" on the market. After scanning, they give you a screen full of warnings, 90% of which are false positives – pure waste of time. That was until I looked into strix, which topped the GitHub daily leaderboard these past two days. It's different. Strix…
Strix is an open-source AI penetration testing tool that dynamically runs applications in Docker sandboxes, uses the Caido proxy to intercept traffic, and leverages a Python sandbox to write practical Proof-of-Concept exploits to discover and verify vulnerabilities. It supports multi-agent collaboration, automatic patch generation, and CI/CD integration, making it more practical than traditional scanners with high false positive rates.
@elder_plinius: INTRODUCING: T3MP3ST!!! AUTONOMOUS HACKBOT STRIKE FORCE BRING THE STORM your favorite coding agent is now a full-stack …
T3MP3ST is an open-source harness that turns AI coding agents like Claude Code and Codex into autonomous red team tools, achieving high pass rates on security benchmarks and real CVE detection.
@dabit3: This is like having an army of white hat hackers at your disposal. They break into your app, prove the exploit works, a…
Devin Security Swarm is a new tool that uses AI agents to automatically find and fix security vulnerabilities in codebases, achieving 72% recall at lower cost than alternatives.