github Python analyzed 0bde2ec deep scan unknown

MervinPraison/PraisonAI

v0.1.5
github

MCP server hosting for PraisonAI — expose agents and tools to Cursor, Claude Desktop, and other MCP clients.

maintainer
MervinPraison
licence
MIT
first seen
2026-06-03
last seen
2026-09-05
releases · 30d
6
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged committed secret ×2, dynamic code execution in MervinPraison/PraisonAI
  2. HIGH code analysis flagged committed secret ×2, dynamic code execution in MervinPraison/PraisonAI
  3. HIGH code analysis flagged committed secret, dynamic code execution in MervinPraison/PraisonAI
  4. HIGH code analysis flagged committed secret, dynamic code execution in MervinPraison/PraisonAI
  5. HIGH code analysis flagged committed secret in MervinPraison/PraisonAI
  6. HIGH code analysis flagged committed secret in MervinPraison/PraisonAI
  7. HIGH code analysis flagged committed secret in MervinPraison/PraisonAI
  8. HIGH code analysis flagged committed secret in MervinPraison/PraisonAI
  9. HIGH code analysis flagged committed secret in MervinPraison/PraisonAI
  10. HIGH code analysis flagged committed secret ×5, dynamic code execution ×8 in MervinPraison/PraisonAI
  11. HIGH code analysis flagged committed secret ×5, dynamic code execution ×8 in MervinPraison/PraisonAI
  12. HIGH code analysis flagged committed secret, dynamic code execution ×2 in MervinPraison/PraisonAI
  13. HIGH code analysis flagged committed secret, dynamic code execution ×2 in MervinPraison/PraisonAI
  14. HIGH code analysis flagged committed secret, dynamic code execution ×2 in MervinPraison/PraisonAI
  15. HIGH code analysis flagged committed secret, dynamic code execution ×2 in MervinPraison/PraisonAI
  16. HIGH code analysis flagged committed secret, dynamic code execution ×2 in MervinPraison/PraisonAI
  17. HIGH code analysis flagged committed secret, dynamic code execution ×2 in MervinPraison/PraisonAI
  18. HIGH code analysis flagged committed secret, dynamic code execution ×2 in MervinPraison/PraisonAI
  19. HIGH code analysis flagged committed secret, dynamic code execution ×2 in MervinPraison/PraisonAI
capabilities 2 tools
transport stdio · streamable-http · http · sse verified reported listed in the official MCP registry counts 2 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • get_weather
  • tool_wrapper
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 0bde2ec · analyzer v33 · 1d ago

skills & prompt files 9

danger signals62

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

code files: 5785

filesystem 400

  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/agent_tools/agent_centric_example.py :19 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/benchmark/benchmark_example.py :99 with open(output_path, 'w') as f:
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/catalog/run_all_catalog_examples.py :16 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/checkpoints/basic_checkpoints.py :17 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/context/10_context_monitoring.py :114 with open(context_path) as f:
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/debug/debug_interactive_example.py :18 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/doctor/ci_integration.py :110 with open("/tmp/doctor-report.json", "r") as f:
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/knowledge/compression_demo.py :20 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/knowledge/context_required_example.py :20 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/knowledge/hierarchical_summaries_demo.py :20 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/knowledge/large_corpus_strategy_demo.py :20 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/knowledge/mem0_backend_example.py :21 import shutil
show 28 more
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/knowledge/scope_identifiers_example.py :21 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/knowledge/scope_isolation_example.py :21 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/clickhouse_managed.py :115 os.unlink(SQLITE_PATH)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/json_managed.py :14 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/mongodb_managed.py :102 os.unlink(SQLITE_PATH)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/redis_managed.py :90 os.unlink(SQLITE_PATH)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/sqlite_managed.py :92 os.unlink(DB_PATH)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/middleware/hol_guard_tool_policy.py :21 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/persistence/json_file_session_store.py :20 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/persistence/knowledge_chroma.py :24 import shutil
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/persistence/sqlite_conversation_store.py :111 os.remove(db_path)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/policy/policy_example.py :19 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/agents/autoagents_workflow_patterns.py :105 with open(result, 'r') as f:
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/agents/context-agent.py :20 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/agents/meeting-notes-agent.py :60 with open(transcript_path, "w", encoding="utf-8") as f:
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/api/secondary-market-research-api.py :33 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/camera/camera-basic.py :72 os.remove(image_path)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/camera/camera-continuous.py :117 os.remove(image_path)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/camera/camera-multi-agent.py :128 os.remove(image_path)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/camera/camera-video-analysis.py :106 os.remove(video_path)
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/code/code_editing_example.py :59 os.remove("test_output.txt")
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/concepts/context-engineering-workflow.py :21 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/concepts/knowledge-agents-task.py :1 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/concepts/reasoning-extraction.py :34 with open(filename, 'w') as f:
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/data/cot-agents.py :14 with open(file_path, 'w') as file:
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/eval/recipe_optimization_loop.py :18 from pathlib import Path
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/input/advanced_dynamic_input.py :152 with open(filename, 'w', encoding='utf-8') as f:
  • fs (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/input/environment_variable_input.py :56 with open(output_file, 'w', encoding='utf-8') as f:

360 more not shown — this panel samples each group; the count above is the real total.

shell / exec 243

  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/catalog/run_all_catalog_examples.py :14 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/doctor/ci_integration.py :11 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/endpoints_example.py :25 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/middleware/hol_guard_tool_policy.py :22 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/package_manager/package_manager_example.py :22 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/performance/run_all_examples.py :14 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/eval/recipe_optimization_loop.py :13 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/managed-agents/provider/all_runtimes.py :7 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/managed-agents/provider/runtime_docker.py :13 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/sandbox_remote.py :191 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/sandlock_security_demo.py :76 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/tools/cli/app.py :2 import subprocess
show 28 more
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/tools/e2b/single_agent.py :5 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/recipes/run_all_recipes.py :11 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/registry/http_registry_example.py :26 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/run_all_examples.py :4 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/serve/endpoints_unified_client.py :25 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/skills/create_skill_example.py :8 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/skills/multi_agent_example.py :9 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/examples/terminal_bench/test_agent_comparison.py :126 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/scripts/c84_decompose_main.py :141 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/scripts/c84_real_api_smoke.py :8 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/scripts/c8_release_smoke_real_api.py :7 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/agent/agent.py :3110 # despite blocked_paths; `import subprocess` works despite
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/agent/context_agent.py :28 """Lazy import subprocess to avoid import-time overhead."""
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/auth/subscription/claude_code.py :7 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/context/fast/search_backends.py :184 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/hooks/runner.py :13 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/hooks/verification.py :77 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/memory/hooks.py :53 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/memory/rules_manager.py :45 import subprocess
  • shell (weak) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/sandbox/security.py :237 pattern="os.system()",
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/secrets.py :152 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/session/workspace.py :21 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/skills/remote.py :17 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/skills/shell_render.py :17 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/snapshot/snapshot.py :11 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/tools/ast_grep_tool.py :29 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/tools/edit_tools.py :470 import subprocess
  • shell MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/tools/github_tools.py :3 import subprocess

203 more not shown — this panel samples each group; the count above is the real total.

network 190

  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/async_runs/sdk_submit_poll_result.py :20 import httpx
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/catalog/fetch_templates.py :13 import urllib.request
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/catalog/template_finder_agent.py :13 import urllib.request
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/endpoints_example.py :27 import urllib.request
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/mcp_server/mcp_client_example.py :19 import requests
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/provider-registry/custom_provider_example.py :62 import requests
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/general/tools-class.py :3 import requests
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/managed-agents/provider/docker_compute.py :46 result = asyncio.run(managed.execute_in_compute("python3 -c 'import requests; print(requests.__version__)'"))
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/managed-agents/provider/runtime_local_ollama.py :8 import requests
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/managed-agents/provider/runtime_ollama.py :12 import urllib.error
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/n8n_integration_example.py :172 import httpx
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/providers/muapi/muapi_image_gen.py :21 import requests
show 28 more
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/sandlock_security_demo.py :61 import socket
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/tools/exa-tool/Health_Fitness_Agents/Air_Quality_Analysis_Agent.py :12 import requests
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/tools/exa-tool/github_repo_analyzer_agent.py :38 import requests
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/tools/searxng/searxng-search.py :172 import requests
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/tools/trafilatura/custom_trafilatura_tools.py :24 from urllib.parse import urlparse
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/usecases/domain-context-solution.py :18 import requests
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/serve/a2a_server_client.py :98 import urllib.request
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/serve/a2u_events_stream.py :97 import urllib.request
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/serve/recipe_serve_features.py :25 import urllib.request
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/serve/serve_example.py :27 import urllib.request
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/tools/xquik_tweet_search_tool.py :12 from urllib.error import HTTPError, URLError
  • net (weak) MervinPraison-PraisonAI-0bde2ec/examples/trace/custom_sink.py :48 # In production, use: requests.post(self.url, json=self.buffer)
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/_logging.py :44 "httpx", "httpx._trace", "httpx._client",
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/agent/agent.py :6785 from urllib.parse import urlsplit
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/agent/context_agent.py :1673 import requests
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/knowledge/cloud.py :25 from urllib.parse import unquote, urlparse
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/knowledge/readers.py :258 from urllib.parse import urlparse
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/llm/error_classifier.py :469 "readtimeout", # httpx.ReadTimeout / requests ReadTimeout
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/local/discover.py :8 Standard library only. urllib.request rather than httpx: httpx is present only as
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/local/resolve.py :18 import urllib.parse
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/local/target.py :13 import urllib.parse
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/mcp/mcp_http_stream.py :31 import aiohttp
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/mcp/mcp_security.py :18 from urllib.parse import urlparse
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/mcp/oauth_discovery.py :21 from urllib.parse import urljoin, urlparse
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/mcp/oauth_provider.py :22 from urllib.parse import urlencode, urlparse, parse_qs
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/mcp/oauth_registration.py :13 from urllib.parse import urlparse
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/scheduler/loop.py :8 import socket
  • net MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/session/api.py :38 import requests

150 more not shown — this panel samples each group; the count above is the real total.

secrets 326

  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/benchmark/benchmark_example.py :126 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/caching/00_agent_caching_basic.py :10 assert os.getenv("OPENAI_API_KEY"), "OPENAI_API_KEY must be set"
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/catalog/run_all_catalog_examples.py :30 api_key = os.environ.get("OPENAI_API_KEY") or os.environ.get("PRAISONAI_OPENAI_API_KEY")
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/catalog/template_finder_agent.py :112 key = os.environ.get("OPENAI_API_KEY") or os.environ.get("PRAISONAI_OPENAI_API_KEY")
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/consolidated_params/basic_workflow.py :25 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/context/13_agent_with_context_management.py :25 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/context/14_agent_context_param.py :50 if os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/eval/accuracy_example.py :13 has_api_key = os.getenv("OPENAI_API_KEY") is not None
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/eval/batch_example.py :14 has_api_key = os.getenv("OPENAI_API_KEY") is not None
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/eval/criteria_example.py :13 has_api_key = os.getenv("OPENAI_API_KEY") is not None
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/eval/performance_example.py :13 has_api_key = os.getenv("OPENAI_API_KEY") is not None
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/eval/reliability_example.py :35 has_api_key = os.getenv("OPENAI_API_KEY") is not None
show 28 more
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/execution/00_agent_execution_basic.py :10 assert os.getenv("OPENAI_API_KEY"), "OPENAI_API_KEY must be set"
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/execution/01_agent_execution_config.py :10 assert os.getenv("OPENAI_API_KEY"), "OPENAI_API_KEY must be set"
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/guardrails/00_agent_guardrails_basic.py :10 assert os.getenv("OPENAI_API_KEY"), "OPENAI_API_KEY must be set"
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/guardrails/01_agent_guardrails_config.py :10 assert os.getenv("OPENAI_API_KEY"), "OPENAI_API_KEY must be set"
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/interactive_defaults/interactive_tools_example.py :140 if os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/clickhouse_managed.py :21 if not os.getenv("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/json_managed.py :18 if not os.getenv("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/mongodb_managed.py :20 if not os.getenv("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/mysql_managed.py :17 if not os.getenv("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/postgres_managed.py :17 if not os.getenv("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/redis_managed.py :20 if not os.getenv("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/sqlite_managed.py :16 if not os.getenv("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/turso_managed.py :25 "auth_token": os.getenv("TURSO_AUTH_TOKEN"),
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/mcp/multi_server.py :66 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/mcp/sequential_thinking.py :22 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/performance/lite_agent_example.py :42 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/performance/run_all_examples.py :44 has_openai = bool(os.environ.get("OPENAI_API_KEY"))
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/performance/thread_safety_example.py :105 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/agents/autoagents_workflow_patterns.py :19 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/agents/multi-provider-agent.py :257 # os.environ["OPENAI_API_KEY"] = "your-openai-key"
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/bot_email_example.py :97 token=os.environ.get("EMAIL_APP_PASSWORD", ""),
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/bot_example.py :13 token=os.environ.get("TELEGRAM_BOT_TOKEN", ""),
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/concepts/knowledge-agents-task.py :52 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/concepts/rag-agents.py :40 if not os.environ.get("OPENAI_API_KEY"):
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/dict_config_example.py :91 # api_key=os.getenv("CUSTOM_API_KEY"), # Separate parameter
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/failover_example.py :20 api_key=os.environ.get("OPENAI_API_KEY", "sk-..."),
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/general/tools-class.py :31 headers["x-api-key"] = os.environ['EXA_API_KEY']
  • secrets (weak) MervinPraison-PraisonAI-0bde2ec/examples/python/lite_agent_example.py :42 if not os.environ.get("OPENAI_API_KEY"):

286 more not shown — this panel samples each group; the count above is the real total.

database 61

  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/mongodb_managed.py :18 import pymongo
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/postgres_managed.py :15 import psycopg2
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/redis_managed.py :18 import redis as redis_lib
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/managed-agents/persistence/sqlite_managed.py :12 import sqlite3
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/persistence/mongodb_state_store.py :21 import pymongo
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/persistence/postgres_conversation_store.py :20 import psycopg2
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/persistence/redis_state_store.py :21 import redis as redis_lib
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/persistence/sqlite_conversation_store.py :18 import sqlite3
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/trace/custom_sink.py :65 import sqlite3
  • db (weak) MervinPraison-PraisonAI-0bde2ec/examples/vector/pgvector_real_wow.py :24 # import psycopg2
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/mongodb_memory_basic.py :4 import pymongo
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/background/sqlite_store.py :22 import sqlite3
show 28 more
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/bus/event_log.py :28 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/knowledge/adapters/factories.py :470 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/knowledge/adapters/mongodb_adapter.py :69 from pymongo import MongoClient
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/memory/adapters/factories.py :137 import pymongo
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/memory/adapters/sqlite_adapter.py :11 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/memory/memory.py :2 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/runs/sqlite_ledger.py :19 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/runtime/journal.py :55 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/session/sqlite_store.py :87 import sqlite3 # lazy import — stdlib, no heavy dependency
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/session/sqlite_transcript_store.py :95 import sqlite3 # lazy import — stdlib, no heavy dependency
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/storage/backends.py :204 # Lazy import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/telemetry/durable_sink.py :32 import sqlite3
  • db (weak) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/managed/test_managed_persistence_all_dbs.py :182 import psycopg2
  • db (weak) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/managed/test_managed_persistence_e2e.py :11 import sqlite3
  • db (weak) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/unit/bus/test_event_log.py :155 import sqlite3
  • db (weak) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/unit/runs/test_run_ledger.py :326 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/bots/_approval_store.py :38 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/bots/_delivery_control_store.py :56 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/bots/_dlq.py :39 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/bots/_idempotency.py :41 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/bots/_ingress.py :54 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/bots/_outbox.py :57 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/bots/_redis_turn_lock.py :279 import redis.asyncio as aioredis
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/gateway/exec_approval.py :39 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/gateway/push_delivery.py :12 import sqlite3
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/gateway/redis_pubsub.py :113 import redis.asyncio as aioredis
  • db MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/kanban/sqlite_store.py :3 import sqlite3
  • db (weak) MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/tests/unit/bots/test_delivery_control_store.py :243 import sqlite3

21 more not shown — this panel samples each group; the count above is the real total.

tool registrations 3

  • tool_wrapper MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/mcp/mcp_server.py :210
  • tool_wrapper MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/mcp/mcp_server.py :214
  • get_weather MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/weather_server.py :68

install hooks 1

  • setup.py MervinPraison-PraisonAI-0bde2ec/src/praisonai/praisonai/setup.py :3 # NOTE: No PostInstallCommand / cmdclass override.

declared dependencies 95

  • mcp@>=1.20.0
  • rich@>=13.7
  • markdown@>=3.5
  • pyparsing@>=3.0.0
  • praisonaiagents@>=1.7.4
  • praisonai-code@>=0.1.3
  • praisonai-bot@>=0.1.3
  • praisonai-train@>=0.1.3
  • praisonai-browser@>=0.1.3
  • praisonai-mcp@>=0.1.5
  • praisonai-sandbox@>=0.1.3
  • praisonai-deploy@>=0.1.3
show 28 more
  • python-dotenv@>=0.19.0
  • litellm@>=1.83.14,<2
  • PyYAML@>=6.0
  • typer@>=0.12.0
  • click@>=8.4.2
  • textual@>=0.47.0
  • pydantic@>=2.0.0
  • toml@>=0.10.2
  • aiui@>=0.3.121,<0.4
  • gradio@>=4.26.0
  • flask@>=3.0.0
  • fastapi@>=0.115.0
  • uvicorn@>=0.34.0
  • sse-starlette@>=1.6.0
  • PyJWT@>=2.8.0
  • agentops@>=0.3.12
  • langfuse@>=3.0.0
  • langextract@>=1.0.0
  • tavily-python@==0.5.0
  • crawl4ai@>=0.7.0
  • playwright@>=1.47.0
  • websockets@>=12.0
  • plotly@>=5.24.0
  • yfinance@>=0.2.44
  • ddgs@>=9.0.0
  • twilio@>=7.0.0
  • flaml@>=2.3.1
  • pyngrok@>=1.4.0

55 more not shown — this panel samples each group; the count above is the real total.

transport_posture 24

  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/examples/python/a2a/a2a-server.py :81 uvicorn.run(app, host="0.0.0.0", port=8000)
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/examples/python/api/secondary-market-research-api.py :617 host="0.0.0.0",
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/examples/python/mcp/mcp-tools-server-sse.py :74 server.run_sse(host="0.0.0.0", port=8080)
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/examples/python/n8n_integration_example.py :284 uvicorn.run(app, host="0.0.0.0", port=port)
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/examples/python/remote/remote_agent_server.py :52 agent.launch(path="/agent", port=8000, host="0.0.0.0")
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/praisonaiagents/agent/protocols.py :262 def launch(self, agent, path="/", port=8000, host="0.0.0.0", debug=False):
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/integration/test_real_features.py :144 host="0.0.0.0",
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/unit/server/test_server.py :31 host="0.0.0.0",
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/unit/test_gateway.py :28 host="0.0.0.0",
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/unit/test_gateway_config.py :70 host="0.0.0.0",
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/src/praisonai-agents/tests/unit/test_gateway_server.py :227 config = GatewayConfig(host="0.0.0.0", port=9000)
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/praisonai_bot/gateway/server.py :688 host: "0.0.0.0"
show 12 more
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/tests/unit/bots/test_enable_shell.py :261 http_cls.assert_called_once_with(host="0.0.0.0", port=9000)
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/tests/unit/bots/test_reliability.py :214 assert _run_no_config_gateway_start(host="0.0.0.0") == 15.0
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/src/praisonai-bot/tests/unit/test_gateway_gaps.py :89 host: "0.0.0.0"
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/src/praisonai-deploy/praisonai_deploy/main.py :113 host="0.0.0.0",
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai-deploy/tests/test_api.py :89 config = APIConfig(host="0.0.0.0", port=8080)
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai-deploy/tests/test_docker.py :234 api=APIConfig(host="0.0.0.0", port=8016, auth_enabled=False),
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai-deploy/tests/test_models.py :43 host="0.0.0.0",
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai/praisonai/api/call.py :673 host = "0.0.0.0" # ngrok needs all-interfaces
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai/tests/unit/recipe/test_recipe_serve_command.py :48 _invoke_recipe_serve(host="0.0.0.0", config="serve.yaml")
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/src/praisonai/tests/unit/suite_runner/test_batch_source.py :325 uvicorn.run(app, host="0.0.0.0", port=8000)
  • network-listening, binds all interfaces, no auth detected MervinPraison-PraisonAI-0bde2ec/src/praisonai/tests/unit/test_http_approval.py :53 backend = HTTPApproval(host="0.0.0.0", port=9999)
  • binds all interfaces (0.0.0.0) MervinPraison-PraisonAI-0bde2ec/src/praisonai/tests/unit/test_security_outstanding_ghsas.py :289 HTTPStreamTransport(_Srv(), host="0.0.0.0")