Open Codex Runtime for Offensive Workflows.
OpenCROW bootstraps a CTF workstation around an existing Anaconda or Miniconda installation, then syncs the repo-managed Codex skills into ~/.codex/skills. The current implementation is catalog-driven, stateful, backed by a Python Typer CLI, and able to install a broad headless toolbox set plus most full-profile tools directly.
OpenCROW now ships provider-neutral stdio MCP servers for every current toolbox plus the I/O helpers, with the shared contract defined in doc/MCP_ARCHITECTURE.md.
- An existing Anaconda or Miniconda installation
- Ubuntu or another Debian-like system with
apt-get sudoaccess for system package installation- Network access
If Conda is missing, the installer stops and prints official download links:
- Miniconda: https://docs.conda.io/en/latest/miniconda.html
- Anaconda: https://www.anaconda.com/download
OpenCROW now resolves installs from the machine-readable catalog at scripts/tool_catalog.json.
Behavior:
install.shis the interactive public entrypoint. It bootstraps a small Python installer venv and opens the full-screen Textual installer.install_headless.shis the non-interactive install entrypoint and uses the same flag-driven selection model as the old shell installer.update_headless.shis the non-interactive additive update entrypoint and merges the requested selection into the saved managed state.- The installer prints homepage and license links for every selected tool before it starts.
- Proprietary packages marked in the catalog require an explicit terms acceptance prompt during interactive installs.
- Install state is saved under
~/.local/share/opencrow/install-state.json. - By default, re-running the installer merges the new selection into the saved managed set and installs only the missing delta.
- Use
--replace-selectionwhen you want the installer to save exactly the current selection instead of performing an additive update.
Interactive modes:
- fresh installs:
fast installorpersonalized - existing managed installs:
updateormodify update: add new toolboxes to the current managed installmodify: replace the saved managed selection interactively
Current profiles:
headless: installs the CLI and automation-friendly tool setfull: includes the headless set plus GUI/heavier tools such as OWASP ZAP, Autopsy, StegSolve, OpenStego, and theHarvester
The current phase 1 implementation covers:
opencrow-crypto-toolbox:z3-solver,fpylll,pycryptodome,hashcat,john,factordb-pycliopencrow-pwn-toolbox:pwntools,checksec,gdb,gdbserver,patchelf,qemu-user,qemu-user-static,nasm,gcc,pwninit,pwndbg,seccomp-tools,one_gadgetopencrow-reversing-toolbox:angr,claripy,capstone,unicorn,keystone-engine,ropper,ROPGadget,r2pipe,lief,qiling,frida-tools,ghidra,radare2,strace,ltrace,binwalk,binutilsopencrow-network-toolbox:scapy,tshark,tcpdump,netcat-openbsd,socat,nmapopencrow-web-toolbox:sqlmap,gobuster,ffuf,dirb,wfuzzopencrow-forensics-toolbox:volatility3,exiftool,foremostopencrow-stego-toolbox:steghide,zstegopencrow-osint-toolbox:shodan,sherlock,waybackpyopencrow-utility-toolbox:jq,yq,xxd,tmux,screen,ripgrep,fzf
Wave 1 MCP servers:
opencrow-stego-mcpopencrow-forensics-mcpopencrow-osint-mcpopencrow-web-mcp
Wave 2 MCP servers:
opencrow-crypto-mcpopencrow-pwn-mcpopencrow-reversing-mcp
Wave 3 MCP servers:
opencrow-network-mcpopencrow-utility-mcp
I/O MCP servers:
opencrow-netcat-mcpopencrow-ssh-mcpopencrow-minecraft-mcp
Tracked as manual full-profile steps today:
Burp Suite Community
OpenCROW installs and orchestrates third-party software, but it does not claim ownership of those tools.
- Each third-party package remains under its own upstream license and terms.
- OpenCROW does not relicense, modify, or redistribute those tools as part of this project.
- The installer only downloads packages from their official or explicitly configured upstream sources.
- Homepage and license links for selected tools are shown during installation so the operator can review them before proceeding.
The current OpenCROW toolbox stack credits the upstream projects it installs or manages through the catalog, including:
z3-solver,fpylll,PyCryptodome,hashcat,John the Ripper,factordb-pyclipwntools,checksec,gdb,gdbserver,patchelf,qemu-user,qemu-user-static,nasm,gcc,pwninit,pwndbg,seccomp-tools,one_gadgetangr,claripy,capstone,unicorn,keystone-engine,ropper,ROPGadget,r2pipe,lief,qiling,frida-tools,ghidra,radare2,strace,ltrace,binwalk,binutilsscapy,tshark,tcpdump,netcat-openbsd,socat,nmapsqlmap,gobuster,ffuf,dirb,wfuzz,OWASP ZAP,OpenStego,StegSolve,Autopsy,theHarvestervolatility3,exiftool,foremost,steghide,zsteg,shodan,sherlock,waybackpyjq,yq,xxd,tmux,screen,ripgrep,fzf
Repo-managed skills synced into ~/.codex/skills:
opencrow-crypto-toolboxopencrow-pwn-toolboxopencrow-reversing-toolboxopencrow-network-toolboxopencrow-web-toolboxopencrow-forensics-toolboxopencrow-stego-toolboxopencrow-osint-toolboxopencrow-utility-toolboxminecraft-async(OpenCROW I/O - Minecraft Async)netcat-async(OpenCROW I/O - Netcat Async)sagemath(OpenCROW Runner - SageMath)ssh-async(OpenCROW I/O - SSH Async)
OpenCROW-managed MCP server entries are also synced into ~/.codex/config.toml for the installed opencrow-*-mcp commands, with startup_timeout_sec = 20 on each managed entry.
High-level skill roles:
opencrow-crypto-toolbox: Python-first crypto solving, cracking, and quick factoring checksopencrow-pwn-toolbox: exploit development, ELF/runtime triage, and libc-oriented helpersopencrow-reversing-toolbox: binary analysis, emulation, tracing, and instrumentationopencrow-network-toolbox: packet work, PCAP analysis, and network/service triageopencrow-web-toolbox: endpoint discovery, fuzzing, and automated SQLi workflowsopencrow-forensics-toolbox: metadata extraction, memory analysis, and file carvingopencrow-stego-toolbox: hidden-data triage in media filesopencrow-osint-toolbox: public-source reconnaissance and archive lookupsopencrow-utility-toolbox: shell and workflow helpersminecraft-async(OpenCROW I/O - Minecraft Async): asynchronous control of a local Minecraft client for CTF tasksnetcat-async(OpenCROW I/O - Netcat Async): persistent asynchronous TCP sessionssagemath(OpenCROW Runner - SageMath): Sage-based math and cryptanalysisssh-async(OpenCROW I/O - SSH Async): persistent asynchronous SSH sessions
Installed I/O MCP commands:
opencrow-netcat-mcp: MCP bridge for the managed TCP session backendopencrow-ssh-mcp: MCP bridge for the managed SSH session backendopencrow-minecraft-mcp: MCP bridge for managed local Minecraft launch, logs, screenshots, and X11 actions
Installed toolbox MCP commands:
opencrow-crypto-mcp: typed crypto workflows over thectfenvironment plus cracking helpersopencrow-pwn-mcp: typed exploit-development helpers for checksec, cyclic patterns, ELF patching, and one_gadgetopencrow-reversing-mcp: typed reversing workflows for disassembly, tracing, binwalk, gadget search, and Python analysisopencrow-network-mcp: typed packet, PCAP, scanning, and socket-probe workflows over the network toolboxopencrow-utility-mcp: typed workspace search, jq/yq queries, and bounded hexdump workflows over the utility toolbox
OpenCROW toolbox MCP servers follow one shared contract:
- one stdio MCP server per toolbox
- the same contract also applies to session-oriented I/O helpers
- provider-neutral typed tools, not Codex-specific shell wrappers
- common tools on every server:
toolbox_info,toolbox_self_test,toolbox_verify,toolbox_capabilities - common resources on every server:
opencrow://<server>/server,opencrow://<server>/capabilities, andopencrow://<server>/verify-guide - common resource template on every server:
opencrow://<server>/tools/{name} - shared response envelope with
ok,summary,toolbox,operation,inputs,artifacts,observations,command,stdout,stderr,exit_code, andnext_steps
Architecture details and contract rules live in doc/MCP_ARCHITECTURE.md.
From the repo root:
bash ./scripts/install.shCommon non-interactive examples:
bash ./scripts/install_headless.sh --dry-run
bash ./scripts/install_headless.sh --profile headless
bash ./scripts/install_headless.sh --toolbox opencrow-crypto-toolbox --toolbox opencrow-web-toolbox --profile headless
bash ./scripts/install_headless.sh --tool one_gadget --tool zsteg
bash ./scripts/install_headless.sh --toolbox opencrow-network-toolbox --replace-selection --profile headless
bash ./scripts/update_headless.sh --toolbox opencrow-web-toolbox --profile headless
python3 ./scripts/sync_codex_mcp_config.py
bash ./scripts/sync_gemini_mcp_config.shopencrow-autosetup is an installed CLI utility from the utility toolbox. It seeds a challenge workspace with reconnaissance artifacts and then launches a nested Codex pass that only performs challenge reconnaissance.
Generated artifacts:
HANDOFF.mdSKILL.mdRECONNAISSANCE.mdHYPOTHESIS.mdAGENTS.mdselected and written by the reconnaissance agent at the end of the pass
Behavior:
- reads
DESCRIPTION.mdwhen present and uses it as the challenge description seed - defaults to
pwnwhen no stronger category signal is found - detects common remote connection strings such as
nc,ssh, andtelnet - if the challenge is a pure remote black-box target, it tells the agent to focus reconnaissance on that connection instead of unrelated local speculation
- writes artifacts in the current directory by default, or a custom path with
--output-dir - does not attempt exploitation, flag capture, or final solve validation
- writes the operational contract, TODOs, and unresolved questions to
HANDOFF.md - makes the recon agent choose the final challenge category and write the matching category-specific
AGENTS.mdat the end of the pass - runs the nested Codex agent with
danger-full-accessplus full inherited shell environment by default - supports
--interactiveto launch the recon pass as an interactive Codex session instead ofcodex exec - supports
--disable-sandboxto launch the nested Codex run without sandboxing
Examples:
opencrow-autosetup --dry-run
opencrow-autosetup --interactive
opencrow-autosetup --category web
opencrow-autosetup --output-dir ./artifacts
opencrow-autosetup --disable-sandbox
opencrow-autosetup --ack-missing-descriptionShell completion:
- bash completion is installed at
~/.local/share/bash-completion/completions/opencrow-autosetup - for the current shell session you can load it with:
source ~/.local/share/bash-completion/completions/opencrow-autosetupRun without sandboxing:
opencrow-autosetup --disable-sandbox --ack-missing-descriptionopencrow-exploit is the follow-up CLI utility for the solve phase. It reads the current workspace handoff artifacts, builds a prompt for the exploitation agent, and launches Codex in the current directory.
Behavior:
- reads the current workspace documents in this order when present:
AGENTS.md,HANDOFF.md,DESCRIPTION.md,SKILL.md,RECONNAISSANCE.md,HYPOTHESIS.md - treats
AGENTS.mdas the authoritative category-specific exploit contract when it exists - treats
HANDOFF.mdas the operational contract and exploit TODO list from reconnaissance - defaults to an interactive Codex session for the exploitation pass
- supports
--full-autoto run the solve pass throughcodex exec - runs with
danger-full-accessplus full inherited shell environment by default - supports
--disable-sandboxto launch the nested Codex run without sandboxing
Examples:
opencrow-exploit
opencrow-exploit --model gpt-5.4
opencrow-exploit --full-auto
opencrow-exploit --disable-sandboxVerify the saved install selection:
bash ./scripts/verify.shVerify all catalogued tools instead of just the saved selection:
bash ./scripts/verify.sh --all-toolsVerify a different conda environment explicitly:
bash ./scripts/verify.sh --env myctfManual sync:
bash ./scripts/sync_skills.shManual removal:
bash ./scripts/remove_skills.shThe skill sync removes the retired ctf-tools directory before copying the current OpenCROW toolbox skills.
Remove the currently saved OpenCROW selection:
bash ./scripts/uninstall.shUseful options:
bash ./scripts/uninstall.sh --dry-run
bash ./scripts/uninstall.sh --purge-apt
bash ./scripts/uninstall.sh --remove-env
bash ./scripts/uninstall.sh --all-managedmake install ENV=ctf
make dry-run ENV=ctf
make verify ENV=ctf
make uninstall ENV=ctf
make sync-skills
make remove-skills
make smoke ENV=ctf- The installer still checks
condaonPATHfirst, then common locations like~/miniconda3and~/anaconda3. minecraft-asyncstill relies onpython3-xlib, which remains a base system dependency.ghidrais downloaded under~/.local/opt/ghidra.pwndbgis installed with the upstream rootless installer.- The GitHub Actions workflow remains a smoke test around syntax and dry-run behavior; it does not install the full workstation in CI.