Autonomous AI Threat Intelligence & Offensive Security Agent featuring ReAct orchestration, durable Turso state, dynamic tool forging, and Model Context Protocol (MCP).
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×2 in PrinceOfPwn/Munin
- HIGH code analysis flagged dynamic code execution ×2 in PrinceOfPwn/munin
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
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
- dynamic code execution eval()/exec() PrinceOfPwn-Munin-09737ff/munin/subagents/sandbox.py :236
exec(compile(tree, filename="<munin-sandbox>", mode="exec"), env, env) - dynamic code execution eval()/exec() PrinceOfPwn-Munin-09737ff/munin/subagents/tool_forge.py :135
exec(compile(script, filename="<sig-probe>", mode="exec"), ns, ns) # noqa: S102
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