{{ 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') }}
{{ 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. |
| 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') }}
{{ 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 }} |