An AI butler tailored for personal computers - paying tribute to Jarvis from "Iron Man". It engages in conversation with you, assists you in operating your computer, resides in the background ready to respond to your summon, and is capable of both listening and speaking.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×2 in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution ×2 in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution ×2 in aceFelix/jarvis
- HIGH code analysis flagged dynamic code execution ×2 in aceFelix/jarvis
transport stdio counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 04052b2 · analyzer v33 · 1d ago
danger signals4
- dynamic code execution __import__ sink aceFelix-jarvis-04052b2/agent/core/extensions/plugins.py :255
env={**__import__("os").environ, "GIT_SSL_NO_VERIFY": "1"}, - dynamic code execution __import__() aceFelix-jarvis-04052b2/agent/llm/provider_registry.py :57
mod = __import__(parts[0], fromlist=[parts[1]]) - dynamic code execution __import__() aceFelix-jarvis-04052b2/agent/serve/app.py :120
__import__(name) - dynamic code execution __import__ sink aceFelix-jarvis-04052b2/agent/ui/workbench/single_instance.py :65
if info is not None and info[0] == __import__("os").getpid():
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 297
filesystem 92
- fs aceFelix-jarvis-04052b2/agent/bridge/server.py :297
with open(path, "rb") as f: - fs aceFelix-jarvis-04052b2/agent/cli_anything/loader.py :15
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/cli_anything/market.py :20
import shutil - fs aceFelix-jarvis-04052b2/agent/cli_anything/migrate.py :11
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/cli_anything/registry.py :11
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/cli_anything/runner.py :19
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/cli_anything/schema.py :11
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/collaboration/mailbox.py :27
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/collaboration/subagent.py :43
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/collaboration/task_list.py :27
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/collaboration/team.py :30
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/collaboration/teammate.py :26
from pathlib import Path
show 28 more
- fs aceFelix-jarvis-04052b2/agent/commands/handlers/init_command.py :13
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/commands/handlers/voice_commands.py :295
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/config/migrations.py :23
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/config/model_registry.py :17
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/config/settings.py :19
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/audit/tool_auditor.py :16
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/daemon/calendar_source.py :34
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/daemon/deadline.py :32
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/daemon/monitor.py :39
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/daemon/scheduler.py :38
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/daemon/vision_watcher.py :38
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/diag.py :31
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/error_recovery.py :20
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/extensions/mcp_client.py :42
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/extensions/plugins.py :16
import shutil - fs aceFelix-jarvis-04052b2/agent/core/extensions/skills.py :27
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/images.py :10
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/logging.py :17
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/memory/compactor.py :414
with open(file_path, "r", encoding="utf-8", errors="replace") as f: - fs aceFelix-jarvis-04052b2/agent/core/memory/file_state.py :16
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/memory/profile_store.py :26
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/memory/recovery.py :29
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/memory/store.py :26
from pathlib import Path - fs aceFelix-jarvis-04052b2/agent/core/orchestrator.py :374
with open(filepath, "w", encoding="utf-8") as f: - fs (weak) aceFelix-jarvis-04052b2/agent/core/sandbox/audit.py :27
from pathlib import Path - fs (weak) aceFelix-jarvis-04052b2/agent/core/sandbox/executor.py :556
import shutil - fs (weak) aceFelix-jarvis-04052b2/agent/core/sandbox/file_guard.py :26
import shutil - fs aceFelix-jarvis-04052b2/agent/daemon/autostart.py :21
from pathlib import Path
52 more not shown — this panel samples each group; the count above is the real total.
shell / exec 9
- shell aceFelix-jarvis-04052b2/agent/cli_anything/market.py :21
import subprocess - shell aceFelix-jarvis-04052b2/agent/core/error_recovery.py :17
import subprocess - shell aceFelix-jarvis-04052b2/agent/core/extensions/plugins.py :18
import subprocess - shell aceFelix-jarvis-04052b2/agent/daemon/autostart.py :415
import subprocess - shell aceFelix-jarvis-04052b2/agent/doctor.py :21
import subprocess - shell aceFelix-jarvis-04052b2/agent/tools/extensions/dev_server_tool.py :23
import subprocess - shell (weak) aceFelix-jarvis-04052b2/tests/core/test_plugins.py :23
import subprocess - shell (weak) aceFelix-jarvis-04052b2/tests/test_sandbox_more.py :26
import subprocess - shell (weak) aceFelix-jarvis-04052b2/tests/voice/test_voice_state.py :18
import subprocess
network 18
- net aceFelix-jarvis-04052b2/agent/bridge/server.py :34
from urllib.parse import urlparse, parse_qs - net aceFelix-jarvis-04052b2/agent/cli_anything/market.py :23
import urllib.error - net aceFelix-jarvis-04052b2/agent/commands/handlers/wechat_commands.py :35
import aiohttp # noqa: F401 - net aceFelix-jarvis-04052b2/agent/core/daemon/calendar_source.py :335
import urllib.request - net aceFelix-jarvis-04052b2/agent/core/daemon/vision_watcher.py :34
import urllib.request - net aceFelix-jarvis-04052b2/agent/core/extensions/plugins.py :74
from urllib.request import Request, urlopen - net aceFelix-jarvis-04052b2/agent/llm/openai_provider.py :144
# ── P-02: 共享 httpx.AsyncClient,复用 HTTP 连接池 ── - net aceFelix-jarvis-04052b2/agent/lsp/client.py :341
from urllib.parse import unquote - net aceFelix-jarvis-04052b2/agent/tools/extensions/dev_server_tool.py :22
import socket - net aceFelix-jarvis-04052b2/agent/tools/location.py :14
from urllib.request import Request, urlopen - net aceFelix-jarvis-04052b2/agent/tools/web/web.py :18
import socket - net aceFelix-jarvis-04052b2/agent/ui/workbench/single_instance.py :20
import socket
show 6 more
- net aceFelix-jarvis-04052b2/agent/voice/stt.py :1009
import urllib.request - net aceFelix-jarvis-04052b2/agent/wechat/ilink.py :23
from urllib.parse import quote - net (weak) aceFelix-jarvis-04052b2/tests/core/test_plugins.py :90
"urllib.request.urlopen", lambda req, timeout=0, context=None: FakeResp(), - net (weak) aceFelix-jarvis-04052b2/tests/daemon/test_calendar_source.py :313
"urllib.request.urlopen", - net (weak) aceFelix-jarvis-04052b2/tests/daemon/test_vision_watcher.py :112
vw.urllib.request, "urlretrieve", - net (weak) aceFelix-jarvis-04052b2/tests/ui/test_workbench_single_instance.py :8
import socket
secrets 7
- secrets aceFelix-jarvis-04052b2/agent/commands/handlers/voice_commands.py :128
or os.environ.get("DASHSCOPE_API_KEY", "") - secrets aceFelix-jarvis-04052b2/agent/config/env.py :43
dashscope_key = os.environ.get("DASHSCOPE_API_KEY") - secrets aceFelix-jarvis-04052b2/agent/config/keyring_store.py :45
import keyring - secrets aceFelix-jarvis-04052b2/agent/ui/workbench/engine.py :308
or os.environ.get("DASHSCOPE_API_KEY", "") - secrets aceFelix-jarvis-04052b2/agent/voice/stt.py :226
self._api_key = api_key or os.environ.get("DASHSCOPE_API_KEY", "") - secrets aceFelix-jarvis-04052b2/agent/voice/tts.py :177
self._api_key = api_key or os.environ.get("DASHSCOPE_API_KEY", "") - secrets aceFelix-jarvis-04052b2/agent/voice/voice_config.py :60
return os.environ.get("DASHSCOPE_API_KEY", "") or getattr(settings, "api_key", "") or ""
declared dependencies 31
- mcp@>=1.0.0
- anthropic@>=0.39.0
- openai@>=1.50.0
- zai-sdk@>=0.2.2
- pydantic@>=2.7.0
- pydantic-settings@>=2.3.0
- rich@>=13.7.0
- prompt_toolkit@>=3.0.0
- pyyaml@>=6.0
- tomli@>=2.0; python_version <
- pyautogui@>=0.9.54
- pillow@>=10.0.0
show 19 more
- pywinauto@>=0.6.9; sys_platform ==
- linux@*
- playwright@>=1.40.0
- opencv-python@>=4.8.0
- mediapipe@>=0.10.14
- paddleocr@>=2.7.0
- dashscope@>=1.20.0
- pyaudio@>=0.2.14
- aec-audio-processing@>=1.0.0
- numpy@>=1.24.0
- pywin32@>=227; sys_platform ==
- darwin@*
- pywebview@>=5.0
- aiohttp@>=3.9.0
- qrcode@>=7.4.0
- pytest@>=8.0.0
- pytest-asyncio@>=0.23.0
- ruff@>=0.5.0
- jarvis-agent@*
clipboard 1
- clipboard shell call aceFelix-jarvis-04052b2/agent/prompts/system.py :570
- 剪贴板:`pbcopy` / `pbpaste`