Prism-inspired multi-agent orchestration framework built on LangGraph. Security-first, provider-agnostic, composable.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×2 in prismal-ai/prismal
transport streamable-http counts 6 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
datetime_convert
-
datetime_cron_next_run
-
datetime_get_system_time
-
datetime_get_timezone_info
-
datetime_list_timezones
-
datetime_validate_cron
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 9f0e37f · analyzer v28 · 3h ago
skills & prompt files 2
danger signals5
- dynamic code execution __import__() prismal-ai-prismal-9f0e37f/tests/unit/agents/subgraphs/skynet/test_builder_plus.py :59
real_supervisor = __import__( - dynamic code execution __import__ sink prismal-ai-prismal-9f0e37f/tests/unit/core/config_source/test_no_import_mutation.py :24
env = {"LIGHTAGENT_FOO": "bar", "PATH": __import__("os").environ.get("PATH", "")} - suspicious endpoint api.telegram.org prismal-ai-prismal-9f0e37f/prismal/scheduler/heartbeat_delivery.py :22
_TELEGRAM_API = "https://api.telegram.org" - suspicious endpoint api.telegram.org prismal-ai-prismal-9f0e37f/prismal/scheduler/notifier.py :22
_TELEGRAM_API = "https://api.telegram.org" - suspicious endpoint discord.com prismal-ai-prismal-9f0e37f/tests/unit/scheduler/test_heartbeat_delivery.py :68
webhook_url = "https://discord.com/api/webhooks/123/abc"
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 818
filesystem 75
- fs prismal-ai-prismal-9f0e37f/prismal/agents/extension/providers.py :17
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/factory.py :26
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/file_manager.py :77
manually with `pathlib.Path(...).resolve()`. - fs prismal-ai-prismal-9f0e37f/prismal/agents/graph.py :27
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/meta_learner.py :28
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/multimodal/audio_agent.py :11
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/multimodal/ingestion.py :20
import shutil - fs prismal-ai-prismal-9f0e37f/prismal/agents/multimodal/video_agent.py :17
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/multimodal/vision_agent.py :11
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/network_supervisor.py :20
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/researcher.py :18
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/skill_creator.py :46
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/skill_manager.py :37
import shutil - fs prismal-ai-prismal-9f0e37f/prismal/agents/skynet/roles.py :19
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/subgraphs/data_etl/loader_node.py :17
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/subgraphs/ml_pipeline/tools_ml.py :13
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/subgraphs/multimodal_pipeline/builder.py :26
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/subgraphs/registry.py :26
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/tool_registry.py :36
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/tools.py :223
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/agents/visualization.py :26
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/composition/config_sources.py :18
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/composition/runtime.py :48
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/core/config_source.py :27
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/core/logging.py :146
from pathlib import Path as _Path - fs prismal-ai-prismal-9f0e37f/prismal/core/users.py :36
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/data/duckdb_engine.py :12
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/data/polars_utils.py :14
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/eval/__main__.py :20
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/eval/redteam/loader.py :10
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/eval/types.py :12
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/events/file_watcher.py :33
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/identity/policy.py :26
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/identity/vault.py :24
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/mcp/__init__.py :9
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/mcp/client.py :14
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/memory/chat_session_store.py :14
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/memory/conversation_history.py :30
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/memory/long_term.py :39
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/memory/preferences.py :30
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/memory/profile.py :37
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/memory/session_registry.py :20
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/monitoring/cost_tracker.py :44
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/providers/cross_modal_embeddings.py :12
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/providers/stt.py :17
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/providers/tts.py :182
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/__init__.py :29
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/engine.py :18
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/hierarchical.py :39
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/loaders/audio_loader.py :16
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/loaders/document_loader.py :12
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/loaders/image_loader.py :16
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/loaders/video_loader.py :17
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/multi_vector.py :50
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/multimodal.py :24
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/rag/stores/sqlite_vec.py :19
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/scheduler/cron_manager.py :26
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/scheduler/prefect_flows.py :20
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/security/action_interceptor.py :25
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/security/audit.py :22
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/security/filesystem_guard.py :5
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/security/guardrails.py :18
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/security/media_validator.py :24
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/security/nemo_rails.py :45
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/security/sanitizer.py :140
with Image.open(BytesIO(blob)) as img: - fs prismal-ai-prismal-9f0e37f/prismal/security/tool_policy.py :20
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/skills/available/calendar/skill.py :18
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/skills/available/code_executor/skill.py :26
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/skills/available/database_query/skill.py :25
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/skills/available/spec_driven_design/skill.py :5
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/skills/base.py :44
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/skills/manager.py :11
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/skills/remote_installer.py :25
from pathlib import Path # noqa: TC003 — used at runtime, not only in annotations - fs prismal-ai-prismal-9f0e37f/prismal/souls/base.py :15
from pathlib import Path - fs prismal-ai-prismal-9f0e37f/prismal/souls/manager.py :30
from pathlib import Path
shell / exec 4
- shell prismal-ai-prismal-9f0e37f/prismal/agents/skill_creator.py :42
import subprocess - shell prismal-ai-prismal-9f0e37f/prismal/agents/tools.py :405
import subprocess - shell prismal-ai-prismal-9f0e37f/prismal/skills/available/code_executor/skill.py :23
import subprocess - shell prismal-ai-prismal-9f0e37f/prismal/skills/base.py :310
import subprocess
network 11
- net prismal-ai-prismal-9f0e37f/prismal/a2a/client.py :27
from urllib.parse import urlparse - net prismal-ai-prismal-9f0e37f/prismal/agents/network_supervisor.py :40
import httpx - net prismal-ai-prismal-9f0e37f/prismal/events/webhook_dispatcher.py :12
import httpx - net prismal-ai-prismal-9f0e37f/prismal/identity/did.py :23
import httpx - net prismal-ai-prismal-9f0e37f/prismal/monitoring/otel.py :14
import socket - net prismal-ai-prismal-9f0e37f/prismal/rag/federated.py :41
import httpx - net prismal-ai-prismal-9f0e37f/prismal/scheduler/heartbeat_delivery.py :17
import httpx - net prismal-ai-prismal-9f0e37f/prismal/scheduler/notifier.py :17
import httpx - net prismal-ai-prismal-9f0e37f/prismal/skills/available/weather/skill.py :18
import httpx - net prismal-ai-prismal-9f0e37f/prismal/skills/available/web_search/skill.py :17
import urllib.parse - net prismal-ai-prismal-9f0e37f/prismal/skills/remote_installer.py :27
import httpx
secrets 3
- secrets prismal-ai-prismal-9f0e37f/prismal/skills/available/email_reader/skill.py :175
and os.getenv("PRISMAL_EMAIL_PASSWORD") - secrets prismal-ai-prismal-9f0e37f/prismal/skills/available/weather/skill.py :131
api_key = os.getenv("PRISMAL_WEATHER_API_KEY", "") - secrets prismal-ai-prismal-9f0e37f/prismal/skills/available/web_search/skill.py :156
api_key = os.getenv("PRISMAL_GOOGLE_API_KEY", "")
database 11
- db prismal-ai-prismal-9f0e37f/prismal/agents/factory.py :37
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/agents/graph.py :24
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/core/database.py :26
from sqlalchemy import event - db prismal-ai-prismal-9f0e37f/prismal/core/users.py :31
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/memory/chat_session_store.py :11
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/memory/long_term.py :31
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/memory/session_registry.py :17
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/monitoring/cost_tracker.py :40
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/rag/stores/sqlite_vec.py :29
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/scheduler/cron_manager.py :23
import sqlite3 - db prismal-ai-prismal-9f0e37f/prismal/security/permissions.py :13
from sqlalchemy import DateTime, Index, String, delete, select
tool registrations 6
- datetime_get_system_time prismal-ai-prismal-9f0e37f/prismal/mcp/servers/datetime_server.py :357
- datetime_get_timezone_info prismal-ai-prismal-9f0e37f/prismal/mcp/servers/datetime_server.py :382
- datetime_convert prismal-ai-prismal-9f0e37f/prismal/mcp/servers/datetime_server.py :416
- datetime_cron_next_run prismal-ai-prismal-9f0e37f/prismal/mcp/servers/datetime_server.py :471
- datetime_validate_cron prismal-ai-prismal-9f0e37f/prismal/mcp/servers/datetime_server.py :546
- datetime_list_timezones prismal-ai-prismal-9f0e37f/prismal/mcp/servers/datetime_server.py :569
declared dependencies 76
- langchain@>=1.3.9
- langgraph@>=0.2.66
- langchain-community@>=0.3.14
- langchain-core@>=0.3.28
- litellm@>=1.58.0
- langchain-anthropic@>=1.4.6
- langchain-openai@>=0.3.1
- langchain-google-genai@>=2.0.8
- langchain-litellm@>=0.6.1
- langgraph-checkpoint-sqlite@>=2.0.1
- polars@>=1.17.0
- duckdb@>=1.1.3
- pyarrow@>=19.0.0
- sqlalchemy@>=2.0.36
- alembic@>=1.14.0
- aiosqlite@>=0.20.0
- chromadb@>=0.6.2
- soupsieve@>=2.8.4
- pypdf@>=6.13.3
- docx2txt@>=0.8
- unstructured@>=0.21.5
- t@drag ancient numba 0.53.1/llvmlite via the old dep tree — see CHANGELOG 3.10.1)
- psycopg2-binary@>=2.9.10
- asyncpg@>=0.30.0
- langgraph-checkpoint-postgres@>=2.0.7
- motor@>=3.6.0
- beanie@>=1.27.0
- torch@>=2.6
- transformers@>=5.3.0
- accelerate@>=1.2.1
- ollama@>=0.4.4
- langchain-ollama@>=0.2.1
- matplotlib@>=3.9.4
- plotly@>=5.24.1
- pandas@>=2.2.3
- flaml@>=2.3.0
- scikit-learn@>=1.5.0
- xgboost@>=2.1.0
- lightgbm@>=4.5.0
- shap@>=0.45.0
- imbalanced-learn@>=0.12.0
- optuna@>=3.6.0
- onnx@>=1.22.0
- onnxruntime@>=1.18.0
- yfinance@>=0.2.50
- pandas-ta@>=0.3.14b
- tzdata@>=2024.1
- ntplib@>=0.4.0
- pip-audit@>=2.7.0
- lancedb@>=0.15.0
- sqlite-vec@>=0.1.6
- langchain-qdrant@>=0.2.0
- qdrant-client@>=1.12.0
- langchain-postgres@>=0.0.13
- httpx@>=0.28.1
- httpx-sse@>=0.4.0
- Pillow@>=12.3.0
- ffmpeg-python@>=0.2.0
- imagehash@>=4.3.1
- faster-whisper@>=1.1.0
- elevenlabs@>=1.13.0
- open-clip-torch@>=2.30.0
- guardrails-ai@>=0.10.2
- pytest@>=8.3.4
- pytest-asyncio@>=0.24.0
- pytest-cov@>=6.0.0
- pytest-mock@>=3.14.0
- pytest-xdist@>=3.6.1
- faker@>=33.1.0
- respx@>=0.21.1
- ruff@>=0.8.4
- mypy@>=1.13.0
- ty@>=0.0.1a5
- docformatter@>=1.7.5
- pyupgrade@>=3.19.0
- pre-commit@>=4.0.1