{{ t('about_overline') }}

{{ t('about_title') }}

{{ t('about_hero_text') | safe }}

Pipeline 1:n Execution Execution 1:n Task Task 1:1 Processor
{{ t('about_running_modes') }}
🖥️

{{ t('mode_desktop_title') }}

{{ t('mode_desktop_desc') }}

python PETP.py
⚙️

{{ t('mode_bg_title') }}

{{ t('mode_bg_desc') }}

python PETP_background.py
🐳

{{ t('mode_docker_title') }}

{{ t('mode_docker_desc') }}

docker run -p 8866:8866 petp
🔌

{{ t('mode_mcp_title') }}

{{ t('mode_mcp_desc') | safe }}

GET /mcp · port 8866
{{ t('about_quickstart_title') }}
# 1. Install dependencies
pip install -U uv
uv pip install -r requirements.txt

# 2. Run GUI
python PETP.py

# 3. Or run headless with MCP server on port 8866
python PETP_background.py
{{ t('about_first_run_title') }}
PETP first run 4 steps
{{ t('about_processor_lib') }}
{{ t('th_category') }} {{ t('th_capability') }}
Browser Automation
Selenium
Navigate, go back, fullscreen, close Chrome. Find element(s) then click / key-in / collect. Batch find with skip. iFrame, cookies, screenshot. Convert Selenium IDE recordings to PETP tasks.
SSH / SFTP
Paramiko
Create SSH / SFTP sessions. Run remote commands. Upload / download files.
File & Folder Open, write, delete, read text. Find files / latest file. Watch & auto-move. ZIP / UNZIP. File-chooser dialog.
Data & Spreadsheet Read CSV / Excel. Write to Excel. CSV to XLSX. Collect, filter, group-by, mapping, masking, conversion. Merge collections.
Database CRUD MySQL, PostgreSQL, SAP HANA, SQLite — unified DB_ACCESS processor.
AI / LLM 10 providers: DeepSeek, Zhipu, Qianfan, MiniMax, Anthropic, Doubao, Moonshot, Gemini, Ollama, OpenAI-compatible — each with Setup + Q&A + MCP-tool calling processors.
MCP Expose PETP as standard MCP Tool Server (Streamable-HTTP). MCP client processors for all LLM providers.
HTTP / Network Configurable HTTP requests. Extract response keys. Built-in HTTP service (port 8866). OAuth2 / PKCE.
String Utilities Encode / decode (Base64, URL…). Hash (MD5, SHA256…).
Mouse & GUI
PyAutoGUI
Click, scroll, query position at absolute or relative coordinates.
Email Send email via SMTP with attachments. Receive email via IMAP with sender / subject filters and attachment download.
Data Visualization Charts and plots via Matplotlib.
OCR Extract text from images (no API key). Backends: paddleocr, rapidocr, easyocr. Image preprocessing: binarize, denoise, sharpen, upscale, adaptive, auto.
Captcha Captcha recognition via ddddocr — text OCR, slider, object-detection modes.
Execution Control Init / check params. Nested execution. Conditional stop. Wait / sleep. Reload log config. Read JSON. Run shell commands. Conditional task jump (GO_TO_TASK). Declarative if/else branching (IF_ELSE). Loop loop_condition for programmatic break / continue.
Theme & Status 9 color themes (System, Forest, Ocean, Monokai, Solarized, Nord, Dracula, Sakura, Cyberpunk) with live switching via PopupMenuButton. "System" auto-follows OS dark / light mode. Status bar displays execution events: start, done with duration, error, and stop.
{{ t('about_http_mcp') }}
{{ t('about_http_server_label') }}
{{ t('th_method') }} {{ t('th_endpoint') }} {{ t('th_description') }}
GET / PETP HTTP service home
GET /mcp MCP Tool Server — Streamable-HTTP transport
GET /health Health check (Docker / container)
GET /petp/tools List all exposed MCP tools
POST /petp/exec Trigger execution or pipeline (async)
GET /petp/result Poll async result by ?request_id=<id>
POST /mcp MCP Tool Server — direct POST endpoint

{{ t('mcp_inspector_title') }}

{{ t('mcp_inspector_desc') }}

  • {{ t('mcp_cap_transport') | safe }}
  • {{ t('mcp_cap_url') | safe }}
  • {{ t('mcp_cap_noauth') }}
  • {{ t('mcp_cap_clients') }}
# Claude Code — add PETP as MCP server
# .claude/settings.json or mcpServers config

"mcpServers": {
  "petp": {
    "type": "http",
    "url": "http://localhost:8866/mcp"
  }
}

# Or trigger via HTTP POST (no MCP client needed)
POST http://localhost:8866/petp/exec

{
  "wait_for_result": "true",
  "action": "execution",
  "params": {
    "execution": "YOUR_EXECUTION_NAME",
    "fromHTTPService": "true"
  }
}
{{ t('about_mcp_screenshots_title') }}
Claude Code using PETP MCP tools
Claude Code — MCP Tool Invocation
DeepSeek calling PETP via MCP
DeepSeek — MCP Client Integration
{{ t('about_dep_groups') }}

Modular requirements/ structure — install only what you need. Uses uv (10-100× faster than pip) or standard pip.

core.txt
pyyaml, croniter, cryptocode
web-automation.txt
selenium, urllib3, Pillow
http-client.txt
requests, httpx, httpx-sse
ssh-sftp.txt
paramiko
excel-data.txt
openpyxl, pandas
database.txt
psycopg, mysql-connector, hdbcli
ai-deepseek.txt
openai (DeepSeek compat.)
ai-gemini.txt
google-genai
ai-ollama.txt
ollama (local LLM)
ai-zhipu.txt
zai (Zhipu Z.AI)
mcp.txt
mcp protocol
ocr.txt
rapidocr-onnxruntime, numpy, scipy
captcha.txt
ddddocr
http-service.txt
fastapi, uvicorn
javascript.txt
pythonmonkey
gui-wxpython.txt
wxpython 4.3.x
gui-automation.txt
pyautogui, pyperclip
chart.txt
matplotlib

{{ t('install_options_title') }}

  • Full (GUI desktop): requirements.txt
  • Background service: requirements-nogui.txt
  • Docker / headless: requirements-docker.txt
  • Custom: combine any group files with -r

{{ t('about_cta_text') | safe }}

# Recommended: uv (fast)
pip install -U uv
uv pip install -r requirements.txt

# Custom combination
uv pip install \
  -r requirements/core.txt \
  -r requirements/mcp.txt \
  -r requirements/http-service.txt

# Pin versions for reproducible builds
uv pip compile requirements.txt \
  -o requirements.lock
{{ t('about_project_struct') }}
{{ t('th_dir') }} {{ t('th_description') }}
PETP.py GUI desktop entry point
PETP_background.py Headless / background entry point
config/petpconfig.yaml Main runtime configuration
core/executions/ YAML execution definitions
core/processors/ Processor implementations — one .py per task type
core/pipelines/ YAML pipeline definitions
core/runtime/ Background / no-GUI runtime logic
core/definition/ YAML reader, Selenium IDE converter
httpservice/ HTTP server, MCP handler, request routing
mvp/ GUI layer (Model-View-Presenter with wxPython)
utils/ Utilities — Selenium, Excel, Date, OS, Logger, Paramiko
webapp/ Flask web application (this site)
webdriver/ Platform ChromeDriver binaries
{{ t('about_changelog') }}

2026

{{ t('th_date') }} {{ t('th_whatsnew') }}
2026-05{{ t('cl_2026_05_mcp_perf') | safe }}
2026-05{{ t('cl_2026_05_global_cache') | safe }}
2026-05{{ t('cl_2026_05_macos_externalize') | safe }}
2026-05{{ t('cl_2026_05_mcp_live_tools') | safe }}
2026-05{{ t('cl_2026_05_dynamic_fn_p') | safe }}
2026-05{{ t('cl_2026_05_cnlunar_processor') | safe }}
2026-05{{ t('cl_2026_05_ai_workflow') | safe }}
2026-05{{ t('cl_2026_05_vision_model') | safe }}
2026-05{{ t('cl_2026_05_create_execution') | safe }}
2026-05{{ t('cl_2026_05_mcp_sync_input') | safe }}
2026-05{{ t('cl_2026_05_email_mcp_tools') | safe }}
2026-05{{ t('cl_2026_05_pytube_fix') | safe }}
2026-05{{ t('cl_2026_05_ai_llm_unify') | safe }}
2026-05{{ t('cl_2026_05_palette_chooser') | safe }}
2026-05{{ t('cl_2026_05_command_palette') | safe }}
2026-05{{ t('cl_2026_05_i18n_split') | safe }}
2026-05{{ t('cl_2026_05_ui_streamline') | safe }}
2026-05{{ t('cl_2026_05_if_else') | safe }}
2026-05{{ t('cl_2026_05_cron_history') | safe }}
2026-05{{ t('cl_2026_05_input_dialog_bg') | safe }}
2026-05{{ t('cl_2026_05_task_progress') | safe }}
2026-04{{ t('cl_2026_04_highlight_info') | safe }}
2026-04{{ t('cl_2026_04_system_theme') | safe }}
2026-04{{ t('cl_2026_04_theme') | safe }}
2026-04{{ t('cl_2026_04_goto_loopond') | safe }}
2026-04{{ t('cl_2026_04_ocr_captcha') | safe }}
2026-04{{ t('cl_2026_04_log_search') | safe }}
2026-04{{ t('cl_2026_04_mcp_unify') | safe }}
2026-04{{ t('cl_2026_04_mcp_schema') | safe }}
2026-04{{ t('cl_2026_04_taskgrid_menu') | safe }}
2026-04{{ t('cl_2026_04_mcp_toggle') | safe }}
2026-04{{ t('cl_2026_04_mcp_desc_editor') | safe }}
2026-04{{ t('cl_2026_04_http_auth') | safe }}
2026-04{{ t('cl_2026_04_js') | safe }}
2026-04{{ t('cl_2026_04_snapshot_combo') | safe }}
2026-04{{ t('cl_2026_04_loop') | safe }}
2026-04{{ t('cl_2026_04_undo') | safe }}
2026-04{{ t('cl_2026_04_i18n') | safe }}
2026-04{{ t('cl_2026_04_deps') | safe }}
2026-04{{ t('cl_2026_04_nogui') | safe }}
2026-04{{ t('cl_2026_04_toolbar') | safe }}
2026-03{{ t('cl_2026_03_wxpython') | safe }}
2026-03{{ t('cl_2026_03_findmulti') | safe }}
2026-03{{ t('cl_2026_03_timeout') | safe }}
2026-02{{ t('cl_2026_02_mcp') | safe }}
2026-01{{ t('cl_2026_01_zhipu') | safe }}

{{ t('about_cta_title') }}

{{ t('view_on_github') }} {{ t('back_to_home') }}