Stronger hands for your AI — the RPA it can actually drive. Record a task once; AI optimizes, combines, and composes it into deterministic automations that control your real apps & browser. Pure-vision, local, MCP-native. The smarter the AI, the stronger it gets.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport — counts 47 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
ai_config
-
ai_run
-
ai_status
-
ai_stop
-
autoreply_config
-
autoreply_start
-
autoreply_status
-
autoreply_stop
-
browser_launch
-
browser_status
-
browser_stop
-
capture_template
-
chat_history
-
create_block
-
create_graph
-
create_skill
-
delete_block
-
delete_chat
-
delete_graph
-
delete_skill
-
execute_steps
-
flow_status
-
get_graph
-
get_logs
-
get_status
-
health
-
list_apps
-
list_blocks
-
list_chat_contacts
-
list_flows
-
list_graphs
-
list_skills
-
list_templates
-
log_chat_message
-
mark_elements
-
run_flow
-
run_graph
-
run_skill
-
screen_text
-
start_recording
-
stop_automation
-
stop_flow
-
stop_recording
-
test_block
-
update_block
-
update_skill
-
web_tabs
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 048a457 · analyzer v33 · 4d ago
danger signals1
- dynamic code execution __import__() rexchengm-maestro-048a457/backend/selftest.py :30
__import__(mod)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 68
filesystem 15
- fs rexchengm-maestro-048a457/backend/app/automation.py :9
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/autoreply.py :31
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/blocks.py :92
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/browser.py :23
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/capture.py :13
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/config.py :14
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/conversations.py :21
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/flows_runner.py :18
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/main.py :3
from pathlib import Path - fs (weak) rexchengm-maestro-048a457/backend/app/site_demo.py :50
webbrowser.open("https://www.google.com") - fs rexchengm-maestro-048a457/backend/app/storage.py :5
from pathlib import Path - fs rexchengm-maestro-048a457/backend/app/vision.py :6
from pathlib import Path - fs rexchengm-maestro-048a457/backend/floatbar.py :20
from pathlib import Path - fs (weak) rexchengm-maestro-048a457/backend/tests/conftest.py :4
from pathlib import Path - fs (weak) rexchengm-maestro-048a457/backend/tests/test_vision.py :3
from pathlib import Path
shell / exec 6
- shell rexchengm-maestro-048a457/backend/app/apps.py :17
import subprocess - shell rexchengm-maestro-048a457/backend/app/automation.py :5
import subprocess - shell rexchengm-maestro-048a457/backend/app/browser.py :21
import subprocess - shell rexchengm-maestro-048a457/backend/app/flows_runner.py :15
import subprocess - shell rexchengm-maestro-048a457/backend/app/main.py :283
import subprocess - shell (weak) rexchengm-maestro-048a457/backend/app/site_demo.py :4
import subprocess
network 5
- net rexchengm-maestro-048a457/backend/app/ai.py :238
import httpx - net (weak) rexchengm-maestro-048a457/backend/app/site_demo.py :6
import urllib.parse - net rexchengm-maestro-048a457/backend/app/webdriver.py :251
import httpx - net rexchengm-maestro-048a457/backend/floatbar.py :22
import httpx - net rexchengm-maestro-048a457/backend/mcp_server.py :32
import httpx
secrets 1
- secrets rexchengm-maestro-048a457/backend/app/ai.py :50
env = os.environ.get("DASHSCOPE_API_KEY", "").strip()
database 1
- db rexchengm-maestro-048a457/backend/app/conversations.py :19
import sqlite3
tool registrations 47
- list_skills rexchengm-maestro-048a457/backend/mcp_server.py :111
- run_skill rexchengm-maestro-048a457/backend/mcp_server.py :130
- execute_steps rexchengm-maestro-048a457/backend/mcp_server.py :162
- screen_text rexchengm-maestro-048a457/backend/mcp_server.py :197
- ai_run rexchengm-maestro-048a457/backend/mcp_server.py :215
- get_status rexchengm-maestro-048a457/backend/mcp_server.py :231
- get_logs rexchengm-maestro-048a457/backend/mcp_server.py :239
- stop_automation rexchengm-maestro-048a457/backend/mcp_server.py :246
- chat_history rexchengm-maestro-048a457/backend/mcp_server.py :260
- log_chat_message rexchengm-maestro-048a457/backend/mcp_server.py :274
- list_chat_contacts rexchengm-maestro-048a457/backend/mcp_server.py :283
- start_recording rexchengm-maestro-048a457/backend/mcp_server.py :299
- stop_recording rexchengm-maestro-048a457/backend/mcp_server.py :307
- list_blocks rexchengm-maestro-048a457/backend/mcp_server.py :325
- create_block rexchengm-maestro-048a457/backend/mcp_server.py :336
- test_block rexchengm-maestro-048a457/backend/mcp_server.py :354
- update_block rexchengm-maestro-048a457/backend/mcp_server.py :361
- delete_block rexchengm-maestro-048a457/backend/mcp_server.py :381
- list_graphs rexchengm-maestro-048a457/backend/mcp_server.py :391
- get_graph rexchengm-maestro-048a457/backend/mcp_server.py :403
- create_graph rexchengm-maestro-048a457/backend/mcp_server.py :409
- run_graph rexchengm-maestro-048a457/backend/mcp_server.py :424
- create_skill rexchengm-maestro-048a457/backend/mcp_server.py :437
- update_skill rexchengm-maestro-048a457/backend/mcp_server.py :451
- delete_skill rexchengm-maestro-048a457/backend/mcp_server.py :473
- list_flows rexchengm-maestro-048a457/backend/mcp_server.py :483
- run_flow rexchengm-maestro-048a457/backend/mcp_server.py :501
- stop_flow rexchengm-maestro-048a457/backend/mcp_server.py :528
- flow_status rexchengm-maestro-048a457/backend/mcp_server.py :534
- autoreply_status rexchengm-maestro-048a457/backend/mcp_server.py :545
- autoreply_config rexchengm-maestro-048a457/backend/mcp_server.py :551
- autoreply_start rexchengm-maestro-048a457/backend/mcp_server.py :566
- autoreply_stop rexchengm-maestro-048a457/backend/mcp_server.py :573
- delete_graph rexchengm-maestro-048a457/backend/mcp_server.py :582
- health rexchengm-maestro-048a457/backend/mcp_server.py :592
- list_apps rexchengm-maestro-048a457/backend/mcp_server.py :602
- mark_elements rexchengm-maestro-048a457/backend/mcp_server.py :609
- list_templates rexchengm-maestro-048a457/backend/mcp_server.py :620
- capture_template rexchengm-maestro-048a457/backend/mcp_server.py :627
- browser_launch rexchengm-maestro-048a457/backend/mcp_server.py :636
- browser_stop rexchengm-maestro-048a457/backend/mcp_server.py :642
- browser_status rexchengm-maestro-048a457/backend/mcp_server.py :648
- web_tabs rexchengm-maestro-048a457/backend/mcp_server.py :654
- delete_chat rexchengm-maestro-048a457/backend/mcp_server.py :663
- ai_status rexchengm-maestro-048a457/backend/mcp_server.py :670
- ai_stop rexchengm-maestro-048a457/backend/mcp_server.py :676
- ai_config rexchengm-maestro-048a457/backend/mcp_server.py :682
declared dependencies 17
- mcp@>=1.2
- fastapi@==0.115.6
- uvicorn@[standard]==0.32.1
- pydantic@==2.10.3
- numpy@==2.1.3
- opencv-python-headless@==4.10.0.84
- Pillow@==11.0.0
- pyobjc-core@>=10.3
- pyobjc-framework-Cocoa@>=10.3
- pyobjc-framework-Quartz@>=10.3
- pyobjc-framework-Vision@>=10.3
- pyobjc-framework-ApplicationServices@>=10.3
- pynput@==1.7.7
- python-multipart@==0.0.20
- httpx@==0.28.1
- websockets@>=13.0
- playwright@>=1.40
perm:untrusted 1
- untrusted rexchengm-maestro-048a457/backend/app/webdriver.py :254
tabs = httpx.get(f"{base}/json/list", timeout=3).json()