github Python analyzed 09737ff

PrinceOfPwn/Munin

github

Autonomous AI Threat Intelligence & Offensive Security Agent featuring ReAct orchestration, durable Turso state, dynamic tool forging, and Model Context Protocol (MCP).

maintainer
PrinceOfPwn
license
NOASSERTION
first seen
2026-07-27
last seen
2026-08-02
releases · 30d
1
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution ×2 in PrinceOfPwn/Munin
  2. HIGH code analysis flagged dynamic code execution ×2 in PrinceOfPwn/munin
capabilities 77 tools
transport stdio · streamable-http · http · sse counts 77 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • ack_agent_message
  • claim_shared_task
  • complete_shared_task
  • conversation_create
  • conversation_get
  • conversation_list
  • cve_enrich
  • cve_lookup
  • cve_search
  • deactivate_generated_tool
  • describe_generated_graph
  • describe_generated_tool
  • drop_generated_graph
  • dump_domain_structure
  • episodic_query
  • execute_command
  • exploit_search
  • feroxbuster_scan
  • fetch_agent_messages
  • ffuf_scan
  • find_asrep_roastable_users
  • find_domain_admins
  • find_kerberoastable_users
  • get_current_user_info
  • get_user_groups
  • graph_forge
  • health_check
  • heartbeat_shared_task
  • httpx_probe
  • hugin_neighbors
  • hugin_refresh
  • hugin_search
  • hydra_attack
  • job_cancel
  • job_status
  • katana_crawl
  • ldap_search
  • ldap_who_am_i
  • list_agent_presence
  • list_generated_graphs
  • list_generated_tools
  • list_shared_tasks
  • list_subagent_tools
  • memory_list
  • memory_recall
  • memory_remember
  • munin_capabilities
  • munin_chat
  • munin_diagnostics
  • munin_read_source
  • munin_self_diagnose
  • munin_wake
  • munin_wake_claim
  • munin_wake_list
  • netexec_scan
  • nmap_advanced_scan
  • nmap_scan
  • nuclei_scan
  • package_vuln_lookup
  • post_agent_message
  • publish_shared_intel
  • query_shared_intel
  • read_wake_artifact
  • run_generated_tool
  • shared_state_overview
  • smbmap_scan
  • soul_list
  • soul_propose_edit
  • soul_read
  • sqlmap_scan
  • subagent_trace
  • tavily_search
  • tool_forge
  • upsert_agent_presence
  • vpn_status
  • web_evidence_screenshotter
  • wiki_git_syncer
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 09737ff · analyzer v28 · 2d ago

danger signals2

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 181

filesystem 22

  • fs PrinceOfPwn-Munin-09737ff/munin/cli.py :10 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/core/soul.py :17 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/forge/extension_forge.py :7 import shutil
  • fs PrinceOfPwn-Munin-09737ff/munin/forge/extension_guard.py :12 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/forge/extension_manifest.py :9 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/audit.py :4 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/config.py :6 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/git_persist.py :41 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/graph_persist.py :8 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/intel.py :4 import shutil
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :15 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/opsec.py :7 import shutil
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/persistence.py :34 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/registry.py :20 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/syncer.py :3 import shutil
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/tools/diagnostics_tool.py :31 import shutil
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/tools/hugin_tool.py :14 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :10 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/mcp/utils.py :8 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/production/store.py :23 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/subagents/process_control.py :11 from pathlib import Path
  • fs PrinceOfPwn-Munin-09737ff/munin/subagents/sandbox.py :30 from pathlib import Path

shell / exec 12

  • shell PrinceOfPwn-Munin-09737ff/munin/cli.py :8 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/core/orchestrator.py :20 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/forge/extension_forge.py :8 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/forge/extension_guard.py :10 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/mcp/git_persist.py :37 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/mcp/intel.py :5 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :151 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/mcp/opsec.py :8 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/mcp/registry.py :323 Called from subprocess contexts (the subagent runner) where the FastMCP
  • shell PrinceOfPwn-Munin-09737ff/munin/mcp/syncer.py :4 import subprocess
  • shell PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :260 import subprocess as _subprocess # noqa: PLC0415
  • shell PrinceOfPwn-Munin-09737ff/munin/mcp/utils.py :6 import subprocess

network 8

  • net PrinceOfPwn-Munin-09737ff/munin/core/llm_client.py :17 from urllib.parse import urlparse
  • net PrinceOfPwn-Munin-09737ff/munin/mcp/config.py :7 from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit
  • net PrinceOfPwn-Munin-09737ff/munin/mcp/intel.py :9 import requests
  • net PrinceOfPwn-Munin-09737ff/munin/mcp/persistence.py :36 from urllib.parse import parse_qs, urlparse
  • net PrinceOfPwn-Munin-09737ff/munin/mcp/shared_state.py :5 import socket
  • net PrinceOfPwn-Munin-09737ff/munin/mcp/tools/hugin_tool.py :17 import requests
  • net PrinceOfPwn-Munin-09737ff/munin/mcp/tools/tavily_tool.py :21 import requests
  • net PrinceOfPwn-Munin-09737ff/munin/production/skills_catalog.py :13 from urllib.parse import quote

secrets 3

  • secrets PrinceOfPwn-Munin-09737ff/munin/integrations/discord_config.py :38 token=os.environ.get("MUNIN_DISCORD_TOKEN", "").strip(),
  • secrets PrinceOfPwn-Munin-09737ff/munin/mcp/config.py :140 github_token=os.environ.get("GITHUB_TOKEN", ""),
  • secrets PrinceOfPwn-Munin-09737ff/munin/production/store.py :323 raw = os.environ.get("MUNIN_MASTER_KEY", "").strip()

database 3

  • db PrinceOfPwn-Munin-09737ff/munin/mcp/persistence.py :32 import sqlite3
  • db PrinceOfPwn-Munin-09737ff/munin/mcp/shared_state.py :6 import sqlite3
  • db PrinceOfPwn-Munin-09737ff/munin/production/store.py :18 import sqlite3

tool registrations 77

  • health_check PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :471
  • vpn_status PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :510
  • job_status PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :524
  • job_cancel PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :530
  • execute_command PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :536
  • nmap_scan PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :571
  • nmap_advanced_scan PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :597
  • httpx_probe PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :644
  • netexec_scan PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :680
  • feroxbuster_scan PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :713
  • ffuf_scan PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :742
  • katana_crawl PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :775
  • hydra_attack PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :802
  • sqlmap_scan PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :842
  • smbmap_scan PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :871
  • nuclei_scan PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :906
  • web_evidence_screenshotter PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :941
  • cve_lookup PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1009
  • cve_search PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1017
  • cve_enrich PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1024
  • exploit_search PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1031
  • package_vuln_lookup PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1038
  • wiki_git_syncer PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1050
  • shared_state_overview PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1062
  • publish_shared_intel PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1076
  • query_shared_intel PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1113
  • claim_shared_task PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1142
  • heartbeat_shared_task PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1178
  • complete_shared_task PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1193
  • list_shared_tasks PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1214
  • upsert_agent_presence PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1228
  • list_agent_presence PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1255
  • post_agent_message PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1269
  • fetch_agent_messages PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1302
  • ack_agent_message PrinceOfPwn-Munin-09737ff/munin/mcp/main.py :1329
  • munin_capabilities PrinceOfPwn-Munin-09737ff/munin/mcp/tools/capabilities_tool.py :17
  • munin_diagnostics PrinceOfPwn-Munin-09737ff/munin/mcp/tools/diagnostics_tool.py :410
  • tool_forge PrinceOfPwn-Munin-09737ff/munin/mcp/tools/forge_tool.py :76
  • graph_forge PrinceOfPwn-Munin-09737ff/munin/mcp/tools/graph_forge_tool.py :20
  • list_generated_graphs PrinceOfPwn-Munin-09737ff/munin/mcp/tools/graph_forge_tool.py :76
  • describe_generated_graph PrinceOfPwn-Munin-09737ff/munin/mcp/tools/graph_forge_tool.py :84
  • drop_generated_graph PrinceOfPwn-Munin-09737ff/munin/mcp/tools/graph_forge_tool.py :94
  • hugin_search PrinceOfPwn-Munin-09737ff/munin/mcp/tools/hugin_tool.py :298
  • hugin_neighbors PrinceOfPwn-Munin-09737ff/munin/mcp/tools/hugin_tool.py :394
  • hugin_refresh PrinceOfPwn-Munin-09737ff/munin/mcp/tools/hugin_tool.py :469
  • ldap_who_am_i PrinceOfPwn-Munin-09737ff/munin/mcp/tools/ldap_tools.py :245
  • get_current_user_info PrinceOfPwn-Munin-09737ff/munin/mcp/tools/ldap_tools.py :273
  • get_user_groups PrinceOfPwn-Munin-09737ff/munin/mcp/tools/ldap_tools.py :321
  • ldap_search PrinceOfPwn-Munin-09737ff/munin/mcp/tools/ldap_tools.py :413
  • find_kerberoastable_users PrinceOfPwn-Munin-09737ff/munin/mcp/tools/ldap_tools.py :483
  • find_asrep_roastable_users PrinceOfPwn-Munin-09737ff/munin/mcp/tools/ldap_tools.py :553
  • find_domain_admins PrinceOfPwn-Munin-09737ff/munin/mcp/tools/ldap_tools.py :608
  • dump_domain_structure PrinceOfPwn-Munin-09737ff/munin/mcp/tools/ldap_tools.py :682
  • list_generated_tools PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :57
  • describe_generated_tool PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :65
  • run_generated_tool PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :81
  • deactivate_generated_tool PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :117
  • read_wake_artifact PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :145
  • soul_list PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :199
  • soul_read PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :211
  • soul_propose_edit PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :224
  • memory_remember PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :341
  • memory_recall PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :353
  • memory_list PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :363
  • episodic_query PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :374
  • list_subagent_tools PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :386
  • conversation_list PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :405
  • conversation_get PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :423
  • conversation_create PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :449
  • munin_chat PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :468
  • munin_read_source PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :622
  • munin_self_diagnose PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :691
  • munin_wake PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :750
  • munin_wake_claim PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :827
  • munin_wake_list PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :837
  • subagent_trace PrinceOfPwn-Munin-09737ff/munin/mcp/tools/munin_tools.py :849
  • tavily_search PrinceOfPwn-Munin-09737ff/munin/mcp/tools/tavily_tool.py :39

declared dependencies 16

  • mcp@>=1.0.0,<2
  • requests@>=2.31.0
  • ldap3@>=2.9.1
  • openai@>=1.40.0
  • langchain@>=0.3.0
  • langchain-openai@>=0.2.0
  • langgraph@>=0.2.40
  • langgraph-codeact@*
  • pydantic@>=2.0
  • click@>=8.1
  • python-dotenv@>=1.0
  • libsql@>=0.1.11
  • cryptography@>=42.0
  • argon2-cffi@>=25.1.0
  • starlette@>=0.37.2
  • uvicorn@>=0.30.0